diff options
author | Benjamin Otte <otte@redhat.com> | 2021-12-25 15:06:12 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2021-12-25 15:07:44 +0100 |
commit | 2ce2afa03697b4bb40a6e0b59e4ac83dfd8e2f23 (patch) | |
tree | 3e8a134c3bc66c8b05e23e1e56a9e8dbd5bd55f4 | |
parent | 5803dd765dcc1584d09e1e5e7d7d635e40e63347 (diff) | |
download | gtk+-2ce2afa03697b4bb40a6e0b59e4ac83dfd8e2f23.tar.gz |
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
-rw-r--r-- | gsk/gl/gskglrenderjob.c | 11 |
1 files changed, 8 insertions, 3 deletions
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); |