From f8221bb2ab3a15c5665f34a5cdf8deebaf6b0d8f Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Fri, 6 Jan 2023 18:51:20 -0600 Subject: [PATCH] gpu/internal/opengl: don't query FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING on GLES2 It's not supported in OpenGL ES 2. References: https://todo.sr.ht/~eliasnaur/gio/469 Signed-off-by: Elias Naur --- gpu/internal/opengl/opengl.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gpu/internal/opengl/opengl.go b/gpu/internal/opengl/opengl.go index 4cb3f88f..889a464e 100644 --- a/gpu/internal/opengl/opengl.go +++ b/gpu/internal/opengl/opengl.go @@ -245,13 +245,17 @@ func (b *Backend) BeginFrame(target driver.RenderTarget, clear bool, viewport im b.glstate.bindFramebuffer(b.funcs, gl.FRAMEBUFFER, renderFBO) if b.gles { // If the output framebuffer is not in the sRGB colorspace already, emulate it. - var fbEncoding int - if !renderFBO.Valid() { - fbEncoding = b.funcs.GetFramebufferAttachmentParameteri(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) - } else { - fbEncoding = b.funcs.GetFramebufferAttachmentParameteri(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) + fbSRGB := false + if !b.gles || b.glver[0] > 2 { + var fbEncoding int + if !renderFBO.Valid() { + fbEncoding = b.funcs.GetFramebufferAttachmentParameteri(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) + } else { + fbEncoding = b.funcs.GetFramebufferAttachmentParameteri(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) + } + fbSRGB = fbEncoding != gl.LINEAR } - if fbEncoding == gl.LINEAR && viewport != (image.Point{}) { + if !fbSRGB && viewport != (image.Point{}) { if b.sRGBFBO == nil { sfbo, err := NewSRGBFBO(b.funcs, &b.glstate) if err != nil {