Merge "HWUI: reset buffer state only for ES3 context" am: 44a1a1e0e4

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2553671

Change-Id: I3c807c0dde713332ea7bc0db11091391dafe1da4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-04-28 16:50:32 +00:00
committed by Automerger Merge Worker

View File

@@ -66,12 +66,15 @@ MakeCurrentResult SkiaOpenGLPipeline::makeCurrent() {
return MakeCurrentResult::AlreadyCurrent;
}
// Make sure read/draw buffer state of default framebuffer is GL_BACK. Vendor implementations
EGLint majorVersion = 0;
eglQueryContext(eglGetCurrentDisplay(), eglGetCurrentContext(), EGL_CONTEXT_CLIENT_VERSION, &majorVersion);
// Make sure read/draw buffer state of default framebuffer is GL_BACK for ES 3.X. Vendor implementations
// disagree on the draw/read buffer state if the default framebuffer transitions from a surface
// to EGL_NO_SURFACE and vice-versa. There was a related discussion within Khronos on this topic.
// See https://cvs.khronos.org/bugzilla/show_bug.cgi?id=13534.
// The discussion was not resolved with a clear consensus
if (error == 0 && wasSurfaceless && mEglSurface != EGL_NO_SURFACE) {
if (error == 0 && (majorVersion > 2) && wasSurfaceless && mEglSurface != EGL_NO_SURFACE) {
GLint curReadFB = 0;
GLint curDrawFB = 0;
glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING, &curReadFB);