Fix clipping and stencil layer issues
bug:8235699
Ensure rectangle clipping operations disable deferring when necessary
(i.e., when the op might create a non-rect region), including in
DisplayList::setViewProperties
Additionally, makes clipping with a kUnion always use a region, for
consistency with software rendering
Change-Id: I6730f1a80250bcf3f91cd4afde646d470a12dbc2
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 6b614a7..e5a1a84 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -1284,6 +1284,10 @@
}
}
+bool OpenGLRenderer::hasRectToRectTransform() {
+ return CC_LIKELY(mSnapshot->transform->rectToRect());
+}
+
void OpenGLRenderer::getMatrix(SkMatrix* matrix) {
mSnapshot->transform->copyTo(*matrix);
}
@@ -1505,8 +1509,10 @@
if (clear) clearLayerRegions();
// Make sure setScissor & setStencil happen at the beginning of
// this method
- if (mDirtyClip && mCaches.scissorEnabled) {
- setScissorFromClip();
+ if (mDirtyClip) {
+ if (mCaches.scissorEnabled) {
+ setScissorFromClip();
+ }
setStencilFromClip();
}
mDescription.reset();