diff options
author | Michael Catanzaro <mcatanzaro@gnome.org> | 2022-11-10 13:44:34 +0000 |
---|---|---|
committer | Michael Catanzaro <mcatanzaro@gnome.org> | 2022-11-10 13:44:34 +0000 |
commit | 2fcc1148702707ea3feaee0167c93959a891678e (patch) | |
tree | e52f08888e3a966d5bd58bbf917e8c1c8d048b13 | |
parent | d3c39fb4385bb39ec4da273322f6e9ffea18fd4d (diff) | |
parent | 0e5fe45ea20cce074a128911949dbedf4f8265bf (diff) | |
download | gtk+-2fcc1148702707ea3feaee0167c93959a891678e.tar.gz |
Merge branch 'gtk-3-gles' into 'gtk-3-24'
gdk_wayland_display_init_gl: use GLES API if required
See merge request GNOME/gtk!5062
-rw-r--r-- | gdk/wayland/gdkglcontext-wayland.c | 12 | ||||
-rw-r--r-- | gdk/wayland/gdkglcontext-wayland.h | 3 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c index a2210257f7..296e5e0842 100644 --- a/gdk/wayland/gdkglcontext-wayland.c +++ b/gdk/wayland/gdkglcontext-wayland.c @@ -309,11 +309,13 @@ gdk_wayland_get_display (GdkWaylandDisplay *display_wayland) } gboolean -gdk_wayland_display_init_gl (GdkDisplay *display) +gdk_wayland_display_init_gl (GdkDisplay *display, + GdkGLContext *share) { GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display); EGLint major, minor; EGLDisplay dpy; + gboolean use_es; if (display_wayland->have_egl) return TRUE; @@ -326,8 +328,10 @@ gdk_wayland_display_init_gl (GdkDisplay *display) if (!eglInitialize (dpy, &major, &minor)) return FALSE; - if (!eglBindAPI (EGL_OPENGL_API)) - return FALSE; + use_es = (_gdk_gl_flags & GDK_GL_GLES) != 0 || + (share != NULL && gdk_gl_context_get_use_es (share)); + if (!eglBindAPI (use_es ? EGL_OPENGL_ES_API : EGL_OPENGL_API)) + return FALSE; display_wayland->egl_display = dpy; display_wayland->egl_major_version = major; @@ -461,7 +465,7 @@ gdk_wayland_window_create_gl_context (GdkWindow *window, GdkWaylandGLContext *context; EGLConfig config; - if (!gdk_wayland_display_init_gl (display)) + if (!gdk_wayland_display_init_gl (display, share)) { g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE, diff --git a/gdk/wayland/gdkglcontext-wayland.h b/gdk/wayland/gdkglcontext-wayland.h index bd2bb88457..88a319e60d 100644 --- a/gdk/wayland/gdkglcontext-wayland.h +++ b/gdk/wayland/gdkglcontext-wayland.h @@ -47,7 +47,8 @@ struct _GdkWaylandGLContextClass GdkGLContextClass parent_class; }; -gboolean gdk_wayland_display_init_gl (GdkDisplay *display); +gboolean gdk_wayland_display_init_gl (GdkDisplay *display, + GdkGLContext *share); GdkGLContext * gdk_wayland_window_create_gl_context (GdkWindow *window, gboolean attach, GdkGLContext *share, |