summaryrefslogtreecommitdiffstats
path: root/libs/hwui
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2013-08-26 15:12:06 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-08-26 15:12:06 -0700
commit815fbbdfca52c37f251f156122b5537a9b9807e9 (patch)
tree7b26ac3a028f3e434a083f4937cfb3a56028dc5f /libs/hwui
parent84ba33acf9eba178bddf06159fa974e13a9b76d5 (diff)
parent7ff37ada138d9023e9d646f7195ae761a7b83ff2 (diff)
downloadframeworks_base-815fbbdfca52c37f251f156122b5537a9b9807e9.zip
frameworks_base-815fbbdfca52c37f251f156122b5537a9b9807e9.tar.gz
frameworks_base-815fbbdfca52c37f251f156122b5537a9b9807e9.tar.bz2
am 7ff37ada: am ff2c22e2: Merge "Move functor GL setup to just before functor" into klp-dev
* commit '7ff37ada138d9023e9d646f7195ae761a7b83ff2': Move functor GL setup to just before functor
Diffstat (limited to 'libs/hwui')
-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 114044a..dcd8d3e 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) {