summaryrefslogtreecommitdiff
path: root/libs/hwui/DeferredDisplayList.cpp
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2013-06-17 13:52:06 -0700
committerChris Craik <ccraik@google.com>2013-06-17 13:52:06 -0700
commitd72b73cea49f29c41661e55eb6bfdbc04f09d809 (patch)
treee6782e49ac767cd62e22ca8e44f18eb3977bb1e6 /libs/hwui/DeferredDisplayList.cpp
parent4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b (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.cpp1
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);