Ensure we start every frame in the proper GL state
Bug #6345013, #6314960
Change-Id: I6985f7f233eb6a5f9223e9f4be3f323154b5dbf0
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index f8bb70a..55e962a 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -278,6 +278,13 @@
}
}
+ // Restore state possibly changed by the functors in process mode
+ GLboolean value;
+ glGetBooleanv(GL_BLEND, &value);
+ mCaches.blend = value;
+
+ mCaches.activeTexture(0);
+
return result;
}
@@ -2787,6 +2794,7 @@
void OpenGLRenderer::chooseBlending(bool blend, SkXfermode::Mode mode,
ProgramDescription& description, bool swapSrcDst) {
blend = blend || mode != SkXfermode::kSrcOver_Mode;
+
if (blend) {
// These blend modes are not supported by OpenGL directly and have
// to be implemented using shaders. Since the shader will perform