gpu/internal/opengl: restore Android emulator OpenGL workaround

For some reason, the Android emulator OpenGL implementation needs the output
framebuffer current when eglSwapBuffers is called; otherwise sRGB emulation
breaks. We used to restore the default FBO explicitly, 9b5e9ae607
restored it implicitly through automatic state restoring, but 30ecf75a0f
broke that by only saving and restoring shared context state. This change
restores the explicit behaviour for non-shared contexts.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2022-01-08 14:40:25 +01:00
parent 11f39582b8
commit 86330faca6
+5
View File
@@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"image"
"runtime"
"strings"
"time"
"unsafe"
@@ -297,6 +298,10 @@ func (b *Backend) EndFrame() {
}
if b.sharedCtx {
b.restoreState(b.savedState)
} else if runtime.GOOS == "android" {
// The Android emulator needs the output framebuffer to be current when
// eglSwapBuffers is called.
b.glstate.bindFramebuffer(b.funcs, gl.FRAMEBUFFER, b.outputFBO)
}
}