From f725e3f992b060ad767fd0bcf9543bab53daa471 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 19 Oct 2023 20:56:59 -0400 Subject: [PATCH] glcontext: Add api to check for vertex arrays Vertex arrays are available in GL and in GLES >= 3. We don't check for the GLES extension that provided vertex arrays in older GLES, since that requires using different API. This api avoids version checks all over the place. --- gdk/gdkglcontext.c | 22 ++++++++++++++++++++++ gdk/gdkglcontextprivate.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c index 3368310f9d..1a1cb324ea 100644 --- a/gdk/gdkglcontext.c +++ b/gdk/gdkglcontext.c @@ -1817,6 +1817,7 @@ gdk_gl_context_has_sync (GdkGLContext *self) return priv->has_sync; } +/* Return if GL_BGRA works with glTexImage2D */ gboolean gdk_gl_context_has_bgra (GdkGLContext *self) { @@ -1825,6 +1826,27 @@ gdk_gl_context_has_bgra (GdkGLContext *self) return priv->has_bgra; } +/* Return if glGenVertexArrays, glBindVertexArray and glDeleteVertexArrays + * can be used + */ +gboolean +gdk_gl_context_has_vertex_arrays (GdkGLContext *self) +{ + GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (self); + + switch (priv->api) + { + case GDK_GL_API_GL: + return TRUE; + + case GDK_GL_API_GLES: + return gdk_gl_version_get_major (&priv->gl_version) >= 3; + + default: + g_return_val_if_reached (FALSE); + } +} + /* This is currently private! */ /* When using GL/ES, don't flip the 'R' and 'B' bits on Windows/ANGLE for glReadPixels() */ gboolean diff --git a/gdk/gdkglcontextprivate.h b/gdk/gdkglcontextprivate.h index f026eaf081..c047370ca6 100644 --- a/gdk/gdkglcontextprivate.h +++ b/gdk/gdkglcontextprivate.h @@ -157,6 +157,8 @@ gboolean gdk_gl_context_has_sync (GdkGLContext gboolean gdk_gl_context_has_bgra (GdkGLContext *self) G_GNUC_PURE; +gboolean gdk_gl_context_has_vertex_arrays (GdkGLContext *self) G_GNUC_PURE; + double gdk_gl_context_get_scale (GdkGLContext *self); G_END_DECLS -- 2.30.2