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
This commit is contained in:
Matt Sarett
2016-11-09 16:13:54 -05:00
parent af0f1e071d
commit 79756be175
3 changed files with 10 additions and 0 deletions

View File

@@ -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;

View File

@@ -30,6 +30,7 @@ struct SkiaLayer
{
sk_sp<SkSurface> layerSurface;
Matrix4 inverseTransformInWindow;
bool hasRenderedSinceRepaint = false;
};

View File

@@ -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);