summaryrefslogtreecommitdiff
path: root/gtk/inspector/general.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-05-10 21:24:50 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-05-10 21:24:50 -0400
commite2aa161590cd8a5dd326b5510a1669fc879b7fa5 (patch)
treeee14452efbbb7a303fdfd1aeea3c7cc46b459d01 /gtk/inspector/general.c
parenta723baec4b57532e1bcdb0f30930873f281cd644 (diff)
downloadgtk+-e2aa161590cd8a5dd326b5510a1669fc879b7fa5.tar.gz
inspector: Show EGL info for X11 as well
Diffstat (limited to 'gtk/inspector/general.c')
-rw-r--r--gtk/inspector/general.c103
1 files changed, 74 insertions, 29 deletions
diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c
index a668be18ce..e8c1b08eda 100644
--- a/gtk/inspector/general.c
+++ b/gtk/inspector/general.c
@@ -247,7 +247,7 @@ append_glx_extension_row (GtkInspectorGeneral *gen,
}
#endif
-#ifdef GDK_WINDOWING_WAYLAND
+#if defined(GDK_WINDOWING_WAYLAND) || defined (GDK_WINDOWING_X11)
static void
append_egl_extension_row (GtkInspectorGeneral *gen,
EGLDisplay dpy,
@@ -257,19 +257,37 @@ append_egl_extension_row (GtkInspectorGeneral *gen,
}
static EGLDisplay
-wayland_get_display (struct wl_display *wl_display)
+get_egl_display (GdkDisplay *display)
{
+ void *native;
+ GLenum platform;
EGLDisplay dpy = NULL;
+#ifdef GDK_WINDOWING_WAYLAND
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ {
+ native = gdk_wayland_display_get_wl_display (display);
+ platform = EGL_PLATFORM_WAYLAND_EXT;
+ }
+ else
+#endif
+#ifdef GDK_WINDOWING_X11
+ if (GDK_IS_X11_DISPLAY (display))
+ {
+ native = gdk_x11_display_get_xdisplay (display);
+ platform = EGL_PLATFORM_X11_EXT;
+ }
+ else
+#endif
+ return NULL;
+
if (epoxy_has_egl_extension (NULL, "EGL_KHR_platform_base"))
{
PFNEGLGETPLATFORMDISPLAYPROC getPlatformDisplay =
(void *) eglGetProcAddress ("eglGetPlatformDisplay");
if (getPlatformDisplay)
- dpy = getPlatformDisplay (EGL_PLATFORM_WAYLAND_EXT,
- wl_display,
- NULL);
+ dpy = getPlatformDisplay (platform, native, NULL);
if (dpy)
return dpy;
}
@@ -280,14 +298,12 @@ wayland_get_display (struct wl_display *wl_display)
(void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
if (getPlatformDisplay)
- dpy = getPlatformDisplay (EGL_PLATFORM_WAYLAND_EXT,
- wl_display,
- NULL);
+ dpy = getPlatformDisplay (platform, native, NULL);
if (dpy)
return dpy;
}
- return eglGetDisplay ((EGLNativeDisplayType)wl_display);
+ return eglGetDisplay ((EGLNativeDisplayType)native);
}
#endif
@@ -305,25 +321,54 @@ init_gl (GtkInspectorGeneral *gen)
#ifdef GDK_WINDOWING_X11
if (GDK_IS_X11_DISPLAY (gen->display))
{
- Display *dpy = GDK_DISPLAY_XDISPLAY (gen->display);
- int error_base, event_base;
- char *version;
- if (!glXQueryExtension (dpy, &error_base, &event_base))
- return;
-
- version = g_strconcat ("GLX ", glXGetClientString (dpy, GLX_VERSION), NULL);
- gtk_label_set_text (GTK_LABEL (gen->gl_version), version);
- g_free (version);
- gtk_label_set_text (GTK_LABEL (gen->gl_vendor), glXGetClientString (dpy, GLX_VENDOR));
-
- append_glx_extension_row (gen, dpy, "GLX_ARB_create_context_profile");
- append_glx_extension_row (gen, dpy, "GLX_SGI_swap_control");
- append_glx_extension_row (gen, dpy, "GLX_EXT_texture_from_pixmap");
- append_glx_extension_row (gen, dpy, "GLX_SGI_video_sync");
- append_glx_extension_row (gen, dpy, "GLX_EXT_buffer_age");
- append_glx_extension_row (gen, dpy, "GLX_OML_sync_control");
- append_glx_extension_row (gen, dpy, "GLX_ARB_multisample");
- append_glx_extension_row (gen, dpy, "GLX_EXT_visual_rating");
+ if (gdk_display_get_debug_flags (gen->display) & GDK_DEBUG_GL_GLX)
+ {
+ Display *dpy = GDK_DISPLAY_XDISPLAY (gen->display);
+ int error_base, event_base;
+ char *version;
+
+ if (!glXQueryExtension (dpy, &error_base, &event_base))
+ return;
+
+ version = g_strconcat ("GLX ", glXGetClientString (dpy, GLX_VERSION), NULL);
+ gtk_label_set_text (GTK_LABEL (gen->gl_version), version);
+ g_free (version);
+ gtk_label_set_text (GTK_LABEL (gen->gl_vendor), glXGetClientString (dpy, GLX_VENDOR));
+
+ append_glx_extension_row (gen, dpy, "GLX_ARB_create_context_profile");
+ append_glx_extension_row (gen, dpy, "GLX_SGI_swap_control");
+ append_glx_extension_row (gen, dpy, "GLX_EXT_texture_from_pixmap");
+ append_glx_extension_row (gen, dpy, "GLX_SGI_video_sync");
+ append_glx_extension_row (gen, dpy, "GLX_EXT_buffer_age");
+ append_glx_extension_row (gen, dpy, "GLX_OML_sync_control");
+ append_glx_extension_row (gen, dpy, "GLX_ARB_multisample");
+ append_glx_extension_row (gen, dpy, "GLX_EXT_visual_rating");
+ }
+ else
+ {
+ EGLDisplay dpy;
+ EGLint major, minor;
+ char *version;
+
+ dpy = get_egl_display (gen->display);
+
+ if (!eglInitialize (dpy, &major, &minor))
+ {
+ gtk_label_set_text (GTK_LABEL (gen->gl_version), C_("GL version", "None"));
+ gtk_label_set_text (GTK_LABEL (gen->gl_vendor), C_("GL vendor", "None"));
+ return;
+ }
+
+ version = g_strconcat ("EGL ", eglQueryString (dpy, EGL_VERSION), NULL);
+ gtk_label_set_text (GTK_LABEL (gen->gl_version), version);
+ g_free (version);
+ gtk_label_set_text (GTK_LABEL (gen->gl_vendor), eglQueryString (dpy, EGL_VENDOR));
+
+ append_egl_extension_row (gen, dpy, "EGL_KHR_create_context");
+ append_egl_extension_row (gen, dpy, "EGL_EXT_buffer_age");
+ append_egl_extension_row (gen, dpy, "EGL_EXT_swap_buffers_with_damage");
+ append_egl_extension_row (gen, dpy, "EGL_KHR_surfaceless_context");
+ }
}
else
#endif
@@ -334,7 +379,7 @@ init_gl (GtkInspectorGeneral *gen)
EGLint major, minor;
char *version;
- dpy = wayland_get_display (gdk_wayland_display_get_wl_display (gen->display));
+ dpy = get_egl_display (gen->display);
if (!eglInitialize (dpy, &major, &minor))
{