From: Matthias Clasen Date: Thu, 5 May 2022 17:09:26 +0000 (-0400) Subject: gsk: Check for half float support X-Git-Tag: archive/raspbian/4.6.5+ds-1+rpi1~1^2~19^2^2~5 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f2436eaf7b02516e207b56f37713a6471451d76d;p=gtk4.git 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 --- 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)));