diff options
author | Matt Sarett <msarett@google.com> | 2016-11-14 18:33:38 -0500 |
---|---|---|
committer | Matt Sarett <msarett@google.com> | 2016-11-29 18:03:40 -0500 |
commit | f58cc92066903b900396f640159ea3ea992fc67d (patch) | |
tree | 2f8f251cd47e99f937e15b30e03d1bcb3f1ca19e /libs/hwui/pipeline/skia/RenderNodeDrawable.cpp | |
parent | a53e2bc3c0647dba586ac10214b1027334f0f8b0 (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.cpp | 19 |
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; |