summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matt Sarett <msarett@google.com> 2016-11-09 16:13:54 -0500
committer Matt Sarett <msarett@google.com> 2016-11-16 15:17:04 -0500
commit79756be175dea78ee9d51bb22abba7621bd9b5cc (patch)
treede8aec0091b28af7670cf8eba5d2eb19cf955ce9
parentaf0f1e071df28a20717b1a714883fd654fc2e8c9 (diff)
Add layer updates debugging feature to Skia pipelines
When this property is turned on, we flash green every time a hardware layer is updated. Test: Matches the behavior in OpenGLPipeline BUG:32370375 Change-Id: I916f94eee644c185d8a3f9fa4cd69e087ed1e92d
-rw-r--r--libs/hwui/pipeline/skia/RenderNodeDrawable.cpp8
-rw-r--r--libs/hwui/pipeline/skia/SkiaLayer.h1
-rw-r--r--libs/hwui/pipeline/skia/SkiaPipeline.cpp1
3 files changed, 10 insertions, 0 deletions
diff --git a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp
index accbabda5a2f..7dcbbd059e88 100644
--- a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp
+++ b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp
@@ -164,6 +164,14 @@ void RenderNodeDrawable::drawContent(SkCanvas* canvas) const {
paint = &tmpPaint;
}
renderNode->getLayerSurface()->draw(canvas, 0, 0, paint);
+
+ if (CC_UNLIKELY(Properties::debugLayersUpdates
+ && !renderNode->getSkiaLayer()->hasRenderedSinceRepaint)) {
+ renderNode->getSkiaLayer()->hasRenderedSinceRepaint = true;
+ SkPaint layerPaint;
+ layerPaint.setColor(0x7f00ff00);
+ canvas->drawRect(bounds, layerPaint);
+ }
// composing a software layer with alpha
} else if (properties.effectiveLayerType() == LayerType::Software) {
SkPaint paint;
diff --git a/libs/hwui/pipeline/skia/SkiaLayer.h b/libs/hwui/pipeline/skia/SkiaLayer.h
index 0988d7eda89d..904d57e073ca 100644
--- a/libs/hwui/pipeline/skia/SkiaLayer.h
+++ b/libs/hwui/pipeline/skia/SkiaLayer.h
@@ -30,6 +30,7 @@ struct SkiaLayer
{
sk_sp<SkSurface> layerSurface;
Matrix4 inverseTransformInWindow;
+ bool hasRenderedSinceRepaint = false;
};
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
index a6612c96b8f3..a4a83efdecf8 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
@@ -106,6 +106,7 @@ void SkiaPipeline::renderLayersImpl(const LayerUpdateQueue& layers, bool opaque)
return;
}
+ layerNode->getSkiaLayer()->hasRenderedSinceRepaint = false;
layerCanvas->clear(SK_ColorTRANSPARENT);
RenderNodeDrawable root(layerNode, layerCanvas, false);