summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Romain Guy <romainguy@google.com> 2010-10-12 18:40:36 -0700
committer Romain Guy <romainguy@google.com> 2010-10-12 18:40:36 -0700
commiteb07af687319a0f52c219c3c0c1b73162fce9d04 (patch)
treea27dad9873cd7cab7217ff45fd5c26a4a8885ff0
parenta0a312225ad56b858f37c2a428e9b8a7140907c4 (diff)
Optimize layer clears.
Don't clear the entire texture when we use textures that are bigger than the layer itself. This will save time during the glClear() calls. Change-Id: I06f3259ba62affb3708ba69ea41418832c7e1a65
-rw-r--r--libs/hwui/OpenGLRenderer.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 585fa53039bd..ffd0aed92d3e 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -425,8 +425,6 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top,
snapshot->flags |= Snapshot::kFlagDirtyOrtho;
snapshot->orthoMatrix.load(mOrthoMatrix);
- setScissorFromClip();
-
// Bind texture to FBO
glBindFramebuffer(GL_FRAMEBUFFER, layer->fbo);
glBindTexture(GL_TEXTURE_2D, layer->texture);
@@ -457,10 +455,11 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top,
#endif
// Clear the FBO
- glDisable(GL_SCISSOR_TEST);
+ glScissor(0.0f, 0.0f, bounds.getWidth(), bounds.getHeight());
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
- glEnable(GL_SCISSOR_TEST);
+
+ setScissorFromClip();
// Change the ortho projection
glViewport(0, 0, bounds.getWidth(), bounds.getHeight());