diff options
author | Chris Craik <ccraik@google.com> | 2013-06-17 13:52:06 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2013-06-17 13:52:06 -0700 |
commit | d72b73cea49f29c41661e55eb6bfdbc04f09d809 (patch) | |
tree | e6782e49ac767cd62e22ca8e44f18eb3977bb1e6 /libs/hwui/DeferredDisplayList.cpp | |
parent | 4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b (diff) |
Better handle op size edge cases
bug:9464358
Previously, empty and unknown sized ops are assumed to fully cover
their clip. This is now corrected such that empty sized ops are
pre-rejected before defer. Additionally, unknown sized ops disable
overdraw avoidance.
Change-Id: Icf2ce24f98be5ea6299e24ffcf826790373564a1
Diffstat (limited to 'libs/hwui/DeferredDisplayList.cpp')
-rw-r--r-- | libs/hwui/DeferredDisplayList.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libs/hwui/DeferredDisplayList.cpp b/libs/hwui/DeferredDisplayList.cpp index f19d61089d1a..b3d2aecbcfc7 100644 --- a/libs/hwui/DeferredDisplayList.cpp +++ b/libs/hwui/DeferredDisplayList.cpp @@ -470,6 +470,7 @@ void DeferredDisplayList::addDrawOp(OpenGLRenderer& renderer, DrawOp* op) { deferInfo.mergeable &= !recordingComplexClip(); if (CC_LIKELY(mAvoidOverdraw) && mBatches.size() && + op->state.mClipSideFlags != kClipSide_ConservativeFull && deferInfo.opaqueOverBounds && op->state.mBounds.contains(mBounds)) { // avoid overdraw by resetting drawing state + discarding drawing ops discardDrawingBatches(mBatches.size() - 1); |