When we were able to load it at least.
EGL has some advantages, like not requiring a specific pixel format on the windows, it will share most of its problems with winewayland (and wineandroid although we may also assume GL doesn't work anymore there at this point) so anything fixed with it could benefit all. It will also be required for shared resources and compositing when Vulkan is unavailable.
This might be a bit early still, I'm not sure it is on par when it comes to child window rendering synchronization. However this doesn't drop GLX either, and instead just changes the default. I think it would be useful to switch early though, at least to have more time to settle (and eventually decide to switch back during code freeze if it proves a bad idea).
-- v4: winex11: Use EGL by default for OpenGL rendering.
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/opengl.c | 5 ++--- dlls/winex11.drv/x11drv_main.c | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index fc91244a720..3611662f37e 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -551,10 +551,9 @@ UINT X11DRV_OpenGLInit( UINT version, const struct opengl_funcs *opengl_funcs, c } funcs = opengl_funcs;
- if (use_egl) + if (use_egl && opengl_funcs->egl_handle) { - if (!opengl_funcs->egl_handle) return STATUS_NOT_SUPPORTED; - WARN( "Using experimental EGL OpenGL backend\n" ); + TRACE( "Using EGL OpenGL backend\n" ); x11drv_driver_funcs = **driver_funcs; x11drv_driver_funcs.p_init_egl_platform = x11drv_init_egl_platform; x11drv_driver_funcs.p_surface_create = x11drv_egl_surface_create; diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c index 715a2444667..e078a66fbb0 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -68,7 +68,7 @@ Window root_window; BOOL usexvidmode = TRUE; BOOL usexrandr = TRUE; BOOL usexcomposite = TRUE; -BOOL use_egl = FALSE; +BOOL use_egl = TRUE; BOOL use_take_focus = TRUE; BOOL use_primary_selection = FALSE; BOOL use_system_cursors = TRUE;
Should be working now on NVIDIA. There's some multisampled config shenanigans on XWayland still, but that's likely an NVIDIA/XWayland bug (https://github.com/NVIDIA/egl-x11/issues/29).