Promote RenderProperties with an alpha to have a RenderLayer

bug:20254728
Change-Id: I0bd1d440fe46683b291d4c8ab07a630c34b2eadc
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index e009451..ac4c0d0 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -138,7 +138,7 @@
 }
 
 void RenderNode::prepareLayer(TreeInfo& info, uint32_t dirtyMask) {
-    LayerType layerType = properties().layerProperties().type();
+    LayerType layerType = properties().effectiveLayerType();
     if (CC_UNLIKELY(layerType == LayerType::RenderLayer)) {
         // Damage applied so far needs to affect our parent, but does not require
         // the layer to be updated. So we pop/push here to clear out the current
@@ -153,7 +153,7 @@
 }
 
 void RenderNode::pushLayerUpdate(TreeInfo& info) {
-    LayerType layerType = properties().layerProperties().type();
+    LayerType layerType = properties().effectiveLayerType();
     // If we are not a layer OR we cannot be rendered (eg, view was detached)
     // we need to destroy any Layers we may have had previously
     if (CC_LIKELY(layerType != LayerType::RenderLayer) || CC_UNLIKELY(!isRenderable())) {
@@ -384,33 +384,16 @@
             renderer.concatMatrix(*properties().getTransformMatrix());
         }
     }
-    const bool isLayer = properties().layerProperties().type() != LayerType::None;
+    const bool isLayer = properties().effectiveLayerType() != LayerType::None;
     int clipFlags = properties().getClippingFlags();
     if (properties().getAlpha() < 1) {
         if (isLayer) {
             clipFlags &= ~CLIP_TO_BOUNDS; // bounds clipping done by layer
 
             renderer.setOverrideLayerAlpha(properties().getAlpha());
-        } else if (!properties().getHasOverlappingRendering()) {
-            renderer.scaleAlpha(properties().getAlpha());
         } else {
-            Rect layerBounds(0, 0, getWidth(), getHeight());
-            int saveFlags = SkCanvas::kHasAlphaLayer_SaveFlag;
-            if (clipFlags) {
-                saveFlags |= SkCanvas::kClipToLayer_SaveFlag;
-                properties().getClippingRectForFlags(clipFlags, &layerBounds);
-                clipFlags = 0; // all clipping done by saveLayer
-            }
-
-            ATRACE_FORMAT("%s alpha caused %ssaveLayer %dx%d", getName(),
-                    (saveFlags & SkCanvas::kClipToLayer_SaveFlag) ? "" : "unclipped ",
-                    static_cast<int>(layerBounds.getWidth()),
-                    static_cast<int>(layerBounds.getHeight()));
-
-            SaveLayerOp* op = new (handler.allocator()) SaveLayerOp(
-                    layerBounds.left, layerBounds.top, layerBounds.right, layerBounds.bottom,
-                    properties().getAlpha() * 255, saveFlags);
-            handler(op, PROPERTY_SAVECOUNT, properties().getClipToBounds());
+            LOG_ALWAYS_FATAL_IF(properties().getHasOverlappingRendering());
+            renderer.scaleAlpha(properties().getAlpha());
         }
     }
     if (clipFlags) {