From f2436eaf7b02516e207b56f37713a6471451d76d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 5 May 2022 13:09:26 -0400 Subject: [PATCH] gsk: Check for half float support The GL renderer currently relies on half float support in vertex buffers, so check that we have it. Related: #4894 --- gsk/gl/gskglrenderer.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index d1b40d225e..afb34cd2f1 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -93,6 +94,7 @@ gsk_gl_renderer_realize (GskRenderer *renderer, GdkDisplay *display; gboolean ret = FALSE; gboolean debug_shaders = FALSE; + GdkGLAPI api; if (self->context != NULL) return TRUE; @@ -115,6 +117,24 @@ gsk_gl_renderer_realize (GskRenderer *renderer, if (!context || !gdk_gl_context_realize (context, error)) goto failure; + api = gdk_gl_context_get_api (context); + if (api == GDK_GL_API_GLES) + { + gdk_gl_context_make_current (context); + + if (!gdk_gl_context_has_vertex_half_float (context)) + { + int major, minor; + + gdk_gl_context_get_version (context, &major, &minor); + g_set_error (error, + GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE, + _("This GLES %d.%d implementation does not support half-float vertex data"), + major, minor); + goto failure; + } + } + #ifdef G_ENABLE_DEBUG if (GSK_RENDERER_DEBUG_CHECK (GSK_RENDERER (self), SHADERS)) debug_shaders = TRUE; @@ -331,7 +351,7 @@ gsk_gl_renderer_render_texture (GskRenderer *renderer, { for (x = 0; x < width; x += max_size) { - texture = gsk_gl_renderer_render_texture (renderer, root, + texture = gsk_gl_renderer_render_texture (renderer, root, &GRAPHENE_RECT_INIT (x, y, MIN (max_size, viewport->size.width - x), MIN (max_size, viewport->size.height - y))); -- 2.30.2