Hardware vsync for EGL/X11/Nvidia
Categories
(Core :: Graphics: WebRender, enhancement)
Tracking
()
People
(Reporter: rmader, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
(deleted),
text/x-phabricator-request
|
Details |
As we still don't have an EGL equivalent for the GLX vsync source, in bug 1669275 we allowed Mesa drivers to continue using it. The limitation Mesa was because the prop. Nvidia driver would crash when doing so.
Recent Nvidia drivers (470 series) seem to have fixed that issue - at least for visual selection. Lets try to also enable GLX vsync for them again.
Reporter | ||
Comment 1•3 years ago
|
||
As we still don't have an EGL equivalent for the GLX vsync source, in
bug 1669275 / D92466 we allowed Mesa drivers to continue using it.
The limitation Mesa was because the prop. Nvidia driver would crash when doing so.
Recent Nvidia drivers (470 series) seem to have fixed that issue -
at least for visual selection. Lets try to also enable GLX vsync for
them again.
Reporter | ||
Comment 2•3 years ago
|
||
Here's a try build: https://treeherder.mozilla.org/jobs?repo=try&revision=bc30755bae0a39e541104114ff0e8cfeb5aaec38
walmartguy: could you try it once it's finished and you have time? You'll find a direct download link there at "B" -> "Artifacts" -> "target.tar.bz2"
Reporter | ||
Comment 3•3 years ago
|
||
Bad try build, this should be better: https://treeherder.mozilla.org/#/jobs?repo=try&revision=550ca631d173edd23ee63fde358570e13969818f
Comment 4•3 years ago
|
||
It unfortunately falls back to software WR:
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed GL context creation for hardware WebRender: true
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed GL context creation for hardware WebRender: true
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed GL context creation for hardware WebRender: true
[GFX1-]: Failed to get shared GL context
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed GL context creation for hardware WebRender: true
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed to create EGLContext!: 0x3000
[GFX1-]: Failed GL context creation for WebRender: 0
[GFX1-]: FEATURE_FAILURE_WEBRENDER_INITIALIZE_UNSPECIFIED
[GFX1-]: Failed to connect WebRenderBridgeChild.
[GFX1-]: Fallback WR to SW-WR
Comment 5•3 years ago
|
||
https://www.khronos.org/registry/OpenGL/extensions/SGI/GLX_SGI_video_sync.txt
Naive non-programmer question: Could these EGL extensions help?
- "counter": https://docs.nvidia.com/gameworks/content/developertools/mobile/perfhud_appendix_egl_extensions.htm
EGLuint64NV frequency = eglGetSystemTimeFrequencyNV(); loop { EGLuint64NV start = eglGetSystemTimeNV() / frequency; // draw EGLuint64NV end = eglGetSystemTimeNV() / frequency; EGLuint64NV interval = end - start; if (interval > 0) update_animation(interval); eglSwapBuffers(dpy, surface); }
- "calling process to sleep": https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_wait_sync.txt
Updated•3 years ago
|
Comment 6•3 years ago
|
||
Just wanted to drop a note that the EGL backend also works with version 465.31 of the Nvidia driver.
Updated•3 years ago
|
Reporter | ||
Comment 8•3 years ago
|
||
For the record, unfortunately what I wrote in comment 0 was wrong:
Recent Nvidia drivers (470 series) seem to have fixed that issue - at least for visual selection. Lets try to also enable GLX vsync for them again.
In fact it was me who just made us use the right FindVisual()
on nvidia in bug 1717816. So mixed GLX/EGL still seems broken on nvidia and we need a clean EGL only solution (bug 1640779).
Description
•