summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Catanzaro <mcatanzaro@gnome.org>2022-11-10 13:44:34 +0000
committerMichael Catanzaro <mcatanzaro@gnome.org>2022-11-10 13:44:34 +0000
commit2fcc1148702707ea3feaee0167c93959a891678e (patch)
treee52f08888e3a966d5bd58bbf917e8c1c8d048b13
parentd3c39fb4385bb39ec4da273322f6e9ffea18fd4d (diff)
parent0e5fe45ea20cce074a128911949dbedf4f8265bf (diff)
downloadgtk+-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.c12
-rw-r--r--gdk/wayland/gdkglcontext-wayland.h3
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,