summaryrefslogtreecommitdiff
path: root/0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch')
-rw-r--r--0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch75
1 files changed, 75 insertions, 0 deletions
diff --git a/0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch b/0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch
new file mode 100644
index 0000000..6763654
--- /dev/null
+++ b/0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch
@@ -0,0 +1,75 @@
+From 687ec347d2fa0bca227e3a583a3a47f9bbc10bb0 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 4 Oct 2016 13:15:39 -0400
+Subject: [PATCH] check-accelerated-gles: Use eglGetPlatformDisplay{,EXT}
+
+eglGetDisplay forces the implementation to guess, and in general it
+can't guess correctly. Be explicit.
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+ .../gnome-session-check-accelerated-gles-helper.c | 36 +++++++++++++++++++++-
+ 1 file changed, 35 insertions(+), 1 deletion(-)
+
+diff --git a/tools/gnome-session-check-accelerated-gles-helper.c b/tools/gnome-session-check-accelerated-gles-helper.c
+index 2a38d9e..472d1ad 100644
+--- a/tools/gnome-session-check-accelerated-gles-helper.c
++++ b/tools/gnome-session-check-accelerated-gles-helper.c
+@@ -34,11 +34,43 @@
+ #include <GLES2/gl2.h>
+ #include <GLES2/gl2ext.h>
+ #include <EGL/egl.h>
++#include <EGL/eglext.h>
+ #endif
+
+ #include "gnome-session-check-accelerated-common.h"
+
+ #ifdef GDK_WINDOWING_X11
++static EGLDisplay
++get_display (void *native)
++{
++ EGLDisplay dpy = NULL;
++ const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS);
++
++ if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base")) {
++ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
++ (void *) eglGetProcAddress ("eglGetPlatformDisplay");
++
++ if (get_platform_display)
++ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
++
++ if (dpy)
++ return dpy;
++ }
++
++ if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base")) {
++ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
++ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
++
++ if (get_platform_display)
++ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
++
++ if (dpy)
++ return dpy;
++ }
++
++ return eglGetDisplay ((EGLNativeDisplayType) native);
++}
++
+ static char *
+ get_gles_renderer (void)
+ {
+@@ -67,7 +99,9 @@ get_gles_renderer (void)
+ gdk_error_trap_push ();
+
+ display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+- egl_dpy = eglGetDisplay (display);
++
++ egl_dpy = get_display (display);
++
+ if (!egl_dpy) {
+ g_warning ("eglGetDisplay() failed");
+ goto out;
+--
+2.9.3
+