From 3d8ba93f59e82378217e9e433b5b5b3814b784c8 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 13 May 2021 18:22:30 +0100 Subject: [PATCH 1/2] x11: Loosen the match for the NVIDIA driver It seems nVidia puts a different string in the GL_VENDOR than the one it uses for GLX. --- gdk/x11/gdkglcontext-egl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdk/x11/gdkglcontext-egl.c b/gdk/x11/gdkglcontext-egl.c index 91f3e8297c..cab476232f 100644 --- a/gdk/x11/gdkglcontext-egl.c +++ b/gdk/x11/gdkglcontext-egl.c @@ -595,7 +595,7 @@ gdk_x11_screen_init_egl (GdkX11Screen *screen) * fallback to GLX */ const char *vendor = eglQueryString (edpy, EGL_VENDOR); - if (g_strcmp0 (vendor, "NVIDIA Corporation") == 0) + if (strstr (vendor, "NVIDIA") != NULL) return FALSE; display_x11->have_egl = TRUE; From b3d6928f3593796e491ce4f28278184b6130c3c5 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 13 May 2021 18:23:50 +0100 Subject: [PATCH 2/2] x11: Pair eglInitialize with eglTerminate If we bail out after EGL initialization we want to go back to a stable state and not leave EGL hanging. --- gdk/x11/gdkglcontext-egl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gdk/x11/gdkglcontext-egl.c b/gdk/x11/gdkglcontext-egl.c index cab476232f..08f4493a8b 100644 --- a/gdk/x11/gdkglcontext-egl.c +++ b/gdk/x11/gdkglcontext-egl.c @@ -596,7 +596,10 @@ gdk_x11_screen_init_egl (GdkX11Screen *screen) */ const char *vendor = eglQueryString (edpy, EGL_VENDOR); if (strstr (vendor, "NVIDIA") != NULL) - return FALSE; + { + eglTerminate (edpy); + return FALSE; + } display_x11->have_egl = TRUE; display_x11->egl_version = epoxy_egl_version (dpy);