summaryrefslogtreecommitdiff
path: root/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp
diff options
context:
space:
mode:
authorMatt Sarett <msarett@google.com>2016-11-14 18:33:38 -0500
committerMatt Sarett <msarett@google.com>2016-11-29 18:03:40 -0500
commitf58cc92066903b900396f640159ea3ea992fc67d (patch)
tree2f8f251cd47e99f937e15b30e03d1bcb3f1ca19e /libs/hwui/pipeline/skia/RenderNodeDrawable.cpp
parenta53e2bc3c0647dba586ac10214b1027334f0f8b0 (diff)
Add overdraw debugging feature to Skia pipelines
Test: Compared to OpenGL pipeline and sanity checked with understanding of the drawing pipeline. Also wrote a unit test. BUG:32370375 Change-Id: Iab397d21f0def725fa89551d48c764c67fd2bda8
Diffstat (limited to 'libs/hwui/pipeline/skia/RenderNodeDrawable.cpp')
-rw-r--r--libs/hwui/pipeline/skia/RenderNodeDrawable.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp
index 7dcbbd059e88..adb7e266e63c 100644
--- a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp
+++ b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp
@@ -165,13 +165,22 @@ void RenderNodeDrawable::drawContent(SkCanvas* canvas) const {
}
renderNode->getLayerSurface()->draw(canvas, 0, 0, paint);
- if (CC_UNLIKELY(Properties::debugLayersUpdates
- && !renderNode->getSkiaLayer()->hasRenderedSinceRepaint)) {
+ if (!renderNode->getSkiaLayer()->hasRenderedSinceRepaint) {
renderNode->getSkiaLayer()->hasRenderedSinceRepaint = true;
- SkPaint layerPaint;
- layerPaint.setColor(0x7f00ff00);
- canvas->drawRect(bounds, layerPaint);
+ if (CC_UNLIKELY(Properties::debugLayersUpdates)) {
+ SkPaint layerPaint;
+ layerPaint.setColor(0x7f00ff00);
+ canvas->drawRect(bounds, layerPaint);
+ } else if (CC_UNLIKELY(Properties::debugOverdraw)) {
+ // Render transparent rect to increment overdraw for repaint area.
+ // This can be "else if" because flashing green on layer updates
+ // will also increment the overdraw if it happens to be turned on.
+ SkPaint transparentPaint;
+ transparentPaint.setColor(SK_ColorTRANSPARENT);
+ canvas->drawRect(bounds, transparentPaint);
+ }
}
+
// composing a software layer with alpha
} else if (properties.effectiveLayerType() == LayerType::Software) {
SkPaint paint;