summaryrefslogtreecommitdiff
path: root/libs/hwui/OpenGLRenderer.cpp
diff options
context:
space:
mode:
author Chris Craik <ccraik@google.com> 2013-08-26 15:05:27 -0700
committer Android Git Automerger <android-git-automerger@android.com> 2013-08-26 15:05:27 -0700
commit7ff37ada138d9023e9d646f7195ae761a7b83ff2 (patch)
tree4c656b7bf37cfb0f071b93bd3140f93d7891df14 /libs/hwui/OpenGLRenderer.cpp
parentb19863545ddf5f071926869d92aeb9aa38f2f857 (diff)
parentff2c22e2a85eab426c0542947b6cb7dce5f4fb56 (diff)
am ff2c22e2: Merge "Move functor GL setup to just before functor" into klp-dev
* commit 'ff2c22e2a85eab426c0542947b6cb7dce5f4fb56': Move functor GL setup to just before functor
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index f2352bbfc794..238d9a4955c6 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -449,14 +449,8 @@ status_t OpenGLRenderer::invokeFunctors(Rect& dirty) {
status_t OpenGLRenderer::callDrawGLFunction(Functor* functor, Rect& dirty) {
if (mSnapshot->isIgnored()) return DrawGlInfo::kStatusDone;
- interrupt();
detachFunctor(functor);
- mCaches.enableScissor();
- if (mDirtyClip) {
- setScissorFromClip();
- setStencilFromClip();
- }
Rect clip(*mSnapshot->clipRect);
clip.snapToPixelBoundaries();
@@ -477,6 +471,15 @@ status_t OpenGLRenderer::callDrawGLFunction(Functor* functor, Rect& dirty) {
info.height = getSnapshot()->height;
getSnapshot()->transform->copyTo(&info.transform[0]);
+ // setup GL state for functor
+ if (mDirtyClip) {
+ setScissorFromClip();
+ setStencilFromClip(); // can issue draws, so must precede enableScissor()/interrupt()
+ }
+ mCaches.enableScissor();
+ interrupt();
+
+ // call functor immediately after GL state setup
status_t result = (*functor)(DrawGlInfo::kModeDraw, &info);
if (result != DrawGlInfo::kStatusDone) {