Promote RenderProperties with an alpha to have a RenderLayer
bug:20254728
Change-Id: I0bd1d440fe46683b291d4c8ab07a630c34b2eadc
diff --git a/libs/hwui/RenderProperties.h b/libs/hwui/RenderProperties.h
index 61e98d2..a43566d 100644
--- a/libs/hwui/RenderProperties.h
+++ b/libs/hwui/RenderProperties.h
@@ -73,10 +73,6 @@
return false;
}
- LayerType type() const {
- return mType;
- }
-
bool setOpaque(bool opaque) {
return RP_SET(mOpaque, opaque);
}
@@ -122,6 +118,11 @@
~LayerProperties();
void reset();
+ // Private since external users should go through properties().effectiveLayerType()
+ LayerType type() const {
+ return mType;
+ }
+
friend class RenderProperties;
LayerType mType = LayerType::None;
@@ -575,6 +576,17 @@
&& getOutline().getAlpha() != 0.0f;
}
+ LayerType effectiveLayerType() const {
+ LayerType type = mLayerProperties.mType;
+ if (type == LayerType::None
+ && !MathUtils::isZero(mPrimitiveFields.mAlpha)
+ && mPrimitiveFields.mAlpha < 1
+ && mPrimitiveFields.mHasOverlappingRendering) {
+ return LayerType::RenderLayer;
+ }
+ return type;
+ }
+
private:
// Rendering properties
struct PrimitiveFields {