EGL unavailable due to no eglGetDisplayDriverName
Categories
(Core :: Graphics, defect, P3)
Tracking
()
People
(Reporter: lukasz.wojnilowicz, Unassigned)
References
Details
Attachments
(4 files)
User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36
Steps to reproduce:
- start firefox
- go to "about:support"
Actual results:
under "X11_EGL" there is
"broken by runtime: glxtest could not use EGL"
and in the message log there is
"glxtest: libEGL missing eglGetDisplayDriverName"
Expected results:
glxtest should be able to use EGL
| Reporter | ||
Comment 1•4 years ago
|
||
I use Fedora 34.
My gpu driver is nvidia 340.108.
EGL works on Chromium 90.0.4430.85.
Updated•4 years ago
|
Comment 2•4 years ago
|
||
Can you try Firefox Nightly and see if you see the same thing?
| Reporter | ||
Comment 3•4 years ago
|
||
The same thing on Firefox Nightly 91.0a1.
Comment 4•4 years ago
|
||
Jeff, can you verify?
Comment 5•4 years ago
|
||
We've had some changes, can you retest?
| Reporter | ||
Comment 6•4 years ago
|
||
The same thing on Firefox Nightly 93.0a1.
I'm not sure if in the Failure log there was previously
"glxtest: eglBindAPI returned an error"
but now it's an error #0 and an error #1 is
"glxtest: libEGL missing eglGetDisplayDriverName".
| Reporter | ||
Comment 7•3 years ago
|
||
"glxtest: libEGL missing methods for GL test"
| Reporter | ||
Comment 8•3 years ago
|
||
After fixing bug #1739611 the situation changed. On Firefox Nightly 107.0a1 the Failure log shows:
"glxtest: libEGL missing methods for GL test"
I attached the list of methods in my libEGL. Is there a fix for it?
As a side note, Chromium as of 105.0.5195.125 still enables EGL for my hardware.
Comment 9•3 years ago
|
||
Tested on NVIDIA 525.78.01 / Fedora 37 / Firefox 109.0 and EGL is used by default. Do you still see it?
| Reporter | ||
Comment 10•3 years ago
|
||
Yes. You used a wrong NVIDIA driver version. It should be 340.108 instead of 525.78.01. It can provide EGL without eglGetDisplayDriverName.
There is only one error in Failure Log now:
glxtest: libEGL missing methods for GL test
Comment 11•3 years ago
•
|
||
(In reply to lukasz.wojnilowicz from comment #10)
You should get software rendering and hardware WebGL via GLX - or is WebGL entirely broken?
Please open about:support, click on "Copy text to clipboard" (or just the Graphics section) and paste it here.
You are using X11 because old Nvidia driver 340.108 does not support GBM/Wayland.
WebRender hardware rendering on GLX/X11 requires Nvidia driver 460.82.0. (Just noticed: It had been 470.82.0 since bug 1742994, but bug 1794722 tried to merge two blocklist entries and made a typo which has shipped WR/GLX/Nvidia(bug 1716049) again.)
Nvidia driver version 470.82.0 is required for EGL_X11 (for hardware rendering and WebGL).
https://www.techpowerup.com/gpu-specs/geforce-9600m-gt.c1518
Release Date Jun 4th, 2008
Production End-of-life
OpenGL 3.3
latest available driver
Version: 340.108
Release Date: 2019.12.23
Comment 12•3 years ago
|
||
Uh, 460.82.0 looks like a mixup of 460.32.03 and 470.82.0 :)
| Reporter | ||
Comment 13•3 years ago
|
||
(In reply to Darkspirit from comment #11)
(In reply to lukasz.wojnilowicz from comment #10)
You should get software rendering and hardware WebGL via GLX - or is WebGL entirely broken?
I probably have WebGL disabled because I use arkenfox's user.js. I'm not interested in WebGL.
Please open about:support, click on "Copy text to clipboard" (or just the Graphics section) and paste it here.
Attached.
Nvidia driver version 470.82.0 is required for EGL_X11 (for hardware rendering and WebGL).
Chromium requires only 340.108 and not 470.82.0 for EGL_X11 to work, so the requirement could be lower.
Comment 14•3 years ago
|
||
(In reply to lukasz.wojnilowicz from comment #13)
I probably have WebGL disabled because I use arkenfox's user.js. I'm not interested in WebGL.
Please set webgl.disabled to false and restart Firefox for a quick check if WebGL 1 + 2 sections on about:support look fine and are not broken.
for EGL_X11 to work, so the requirement could be lower.
No, because 470.82 introduces support for EGL_NV_robustness_video_memory_purge (bug 1731172).
You can still try to force-enable hardware rendering by setting gfx.webrender.all=true on about:config and restarting Firefox, but you will encounter bugs.
| Reporter | ||
Comment 15•3 years ago
|
||
(In reply to Darkspirit from comment #14)
(In reply to lukasz.wojnilowicz from comment #13)
I probably have WebGL disabled because I use arkenfox's user.js. I'm not interested in WebGL.
Please set webgl.disabled to false and restart Firefox for a quick check if WebGL 1 + 2 sections on about:support look fine and are not broken.
New about:support attached.
for EGL_X11 to work, so the requirement could be lower.
No, because 470.82 introduces support for EGL_NV_robustness_video_memory_purge (bug 1731172).
You can still try to force-enable hardware rendering by setting gfx.webrender.all=true on about:config and restarting Firefox, but you will encounter bugs.
gfx.webrender.all=true works and doesn't crash right away. Thanks.
What I meant by saying that it could be lower is that Chromium doesn't disable whole EGL just because one extension named EGL_NV_robustness_video_memory_purge is not there.
Comment 16•3 years ago
|
||
(In reply to lukasz.wojnilowicz from comment #15)
New about:support attached.
Thanks, that looks good.
What I meant by saying that it could be lower is that Chromium doesn't disable whole EGL just because one extension named EGL_NV_robustness_video_memory_purge is not there.
EGL_NV_robustness_video_memory_purge (Nvidia driver >= 470.82, bug 1731172, bug 1680759) is indispensable, otherwise suspend&resume would cause heavy glitches.
For example, this Chromium user tries to use EGL on Nvidia driver 460.91.03 and enjoys the bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1247271
| Reporter | ||
Comment 17•3 years ago
|
||
Thanks for the explanation. I would rather restart the browser on suspend&resume to make heavy glitches away than use it without hardware accelerated WebRender.
Comment 18•3 years ago
|
||
(In reply to lukasz.wojnilowicz from comment #17)
Thanks for the explanation. I would rather restart the browser on suspend&resume to make heavy glitches away than use it without hardware accelerated WebRender.
These are separate aspects.
gfx.webrender.all=true force-enables WebRender hardware rendering which uses GLX by default on X11. This seems to be the right choice for you.
As long as you don't set gfx.x11-egl.force-enabled to true to force-enable EGL (and encounter bug 1731172), you would use GLX (and encouter bug 1716049 which can be fixed by setting gfx.swap-interval.glx=false).
Nvidia driver 460.32.03 has initially been the minimum required version for GLX WebRender because of bug fixes. Then it was raised to 470.82 to reduce the amount (bug 1663273 comment 80) of Nvidia configurations that need to be supported/tested (from over 6 to 3: EGL WebRender with and without X11 compositor, Software WebRender).
Comment 19•3 years ago
|
||
For the record: I'd expect the experience to be better on Mesa/Nouveau, especially when it comes to WebGL, as Firefox will use the modern EGL+dmabuf stack there.
| Reporter | ||
Comment 20•3 years ago
|
||
(In reply to Darkspirit from comment #18)
(In reply to lukasz.wojnilowicz from comment #17)
Thanks for the explanation. I would rather restart the browser on suspend&resume to make heavy glitches away than use it without hardware accelerated WebRender.
These are separate aspects.
gfx.webrender.all=true force-enables WebRender hardware rendering which uses GLX by default on X11. This seems to be the right choice for you.
As long as you don't set gfx.x11-egl.force-enabled to true to force-enable EGL (and encounter bug 1731172), you would use GLX (and encouter bug 1716049 which can be fixed by setting gfx.swap-interval.glx=false).
Nvidia driver 460.32.03 has initially been the minimum required version for GLX WebRender because of bug fixes. Then it was raised to 470.82 to reduce the amount (bug 1663273 comment 80) of Nvidia configurations that need to be supported/tested (from over 6 to 3: EGL WebRender with and without X11 compositor, Software WebRender).
Ok, thanks. That brings much needed light to this bug.
I have a feeling though that your suggestions would only have impact on me because an average user may not find this bug.
I'm not sure if I got you correctly, but if those are optimal settings for NVIDIA < 470.82, then maybe they could be somehow made default in Firefox. There are two branches of NVIDIA drivers capable of hardware rendering below that point i.e. 340 and 390 that cover a wide range of gpus.
(In reply to Robert Mader [:rmader] from comment #19)
For the record: I'd expect the experience to be better on Mesa/Nouveau, especially when it comes to WebGL, as Firefox will use the modern EGL+dmabuf stack there.
Thanks for the tip. I would switch to Nouveau but unfortunately my GPU is affected by VDPAU h264 decoding hang, and I care for this feature.
Comment 21•3 years ago
|
||
(In reply to lukasz.wojnilowicz from comment #20)
I'm not sure if I got you correctly, but if those are optimal settings for NVIDIA < 470.82, then maybe they could be somehow made default in Firefox.
No, current defaults are good/desirable. If you try force-enabling hardware rendering (gfx.webrender.all=true) on Nvidia driver 340.108, you try out something non-recommended with driver bugs.
Comment 22•3 years ago
|
||
I'm a bit confused. Why do we care about old NVIDIA drivers here? Is that because new proprietary drivers doesn't support old hardware? (Which is expected as they want to sell new hardware of course).
Comment 23•3 years ago
|
||
(In reply to Martin Stránský [:stransky] (ni? me) from comment #22)
Is that because new proprietary drivers doesn't support old hardware?
Yes, the bug reporter has an old but "latest" Nvidia driver (340.108 from 2019) and GPU from 2008 (comment 11), reported glxtest EGL errors and said Chromium would enable EGL on that hardware (comment 0 + comment 8).
He should get and gets Software WebRender and GLX WebGL.
I explained how to force-enable hardware rendering or EGL, but warned about bugs that are not visible on first sight. GLX WebRender didn't crash for him (comment 15), so he asked why it's not enabled by default.
Newer Nvidia drivers are required for hardware rendering via GLX or EGL because driver bugs have been fixed in them.
- 470.82 (which introduced support for EGL_NV_robustness_video_memory_purge) is minimum required version for EGL in Firefox.
Chromium users with older drivers run into their bug 1731172. - 460.32.03 has been minimum required version for GLX WebRender, but we had raised it to 470.82 to move GLX WebRender users to Software WebRender (bug 1742994).
| Reporter | ||
Comment 24•3 years ago
|
||
(In reply to Darkspirit from comment #21)
No, current defaults are good/desirable. If you try force-enabling hardware rendering (gfx.webrender.all=true) on Nvidia driver 340.108, you try out something non-recommended with driver bugs.
Ok, once again thanks for the explanation.
If 80 % works and 20 % not then I think it's still worth enabling HW-WR. I think that users of such old hardware don't expect stability but they rather want to squeeze the last juices out of their hardware. There is already an issue with suspend & resume (quite easy fixable) in KDE with this hardware but nevertheless KDE have not limited hardware acceleration for it.
Firefox could give an easy choice for the average user, an I mean to disable it by default, but if the user wants to enable it then let him do it but display a warning.
Those are my "2 cents".
I did not consider Firefox because of that lack of hardware acceleration compared to Chromium (other old hardware users probably do so as well). Now I will test it and see if it suits me. As I see there is only one known bug for now. Let's see if there are more.
Description
•