From: Benjamin Otte Date: Sat, 25 Dec 2021 14:06:12 +0000 (+0100) Subject: gles: Be picky abpout glGetFramebufferAttachmentParameter() X-Git-Tag: archive/raspbian/4.6.5+ds-1+rpi1~1^2~19^2~5^2~15^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2ce2afa03697b4bb40a6e0b59e4ac83dfd8e2f23;p=gtk4.git gles: Be picky abpout glGetFramebufferAttachmentParameter() This function does not at all work like in OpenGL - if it works at all. So make it behave accordingly. Fixes #4571 --- diff --git a/gsk/gl/gskglrenderjob.c b/gsk/gl/gskglrenderjob.c index a0df3e2990..0efa8ae108 100644 --- a/gsk/gl/gskglrenderjob.c +++ b/gsk/gl/gskglrenderjob.c @@ -4117,14 +4117,19 @@ gsk_gl_render_job_set_debug_fallback (GskGLRenderJob *job, } static int -get_framebuffer_format (guint framebuffer) +get_framebuffer_format (GdkGLContext *context, + guint framebuffer) { int size; + if (!gdk_gl_context_check_version (context, 0, 0, 3, 0)) + return GL_RGBA8; + glBindFramebuffer (GL_FRAMEBUFFER, framebuffer); glGetFramebufferAttachmentParameteriv (GL_FRAMEBUFFER, framebuffer ? GL_COLOR_ATTACHMENT0 - : GL_BACK_LEFT, + : gdk_gl_context_get_use_es (context) ? GL_BACK + : GL_BACK_LEFT, GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, &size); if (size > 16) @@ -4161,7 +4166,7 @@ gsk_gl_render_job_new (GskGLDriver *driver, job->scale_x = scale_factor; job->scale_y = scale_factor; job->viewport = *viewport; - job->target_format = get_framebuffer_format (framebuffer); + job->target_format = get_framebuffer_format (job->command_queue->context, framebuffer); gsk_gl_render_job_set_alpha (job, 1.0f); gsk_gl_render_job_set_projection_from_rect (job, viewport, NULL);