From dcf3203ca6f9acf0923c19dea17d5e50067df2ce Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 12 May 2016 14:46:47 -0700 Subject: [PATCH] Add a benchmark Change-Id: I0238d79372bc4b2d2f265c026d172b37e3e38c0f --- .../microbench/DisplayListCanvasBench.cpp | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp b/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp index 06b68d1dea8fb..cd4a3c9be92df 100644 --- a/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp +++ b/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp @@ -169,3 +169,37 @@ void BM_CanvasState_translate(benchmark::State& benchState) { } } BENCHMARK(BM_CanvasState_translate); + +void BM_DisplayListCanvas_basicViewGroupDraw(benchmark::State& benchState) { + sp child = TestUtils::createNode(50, 50, 100, 100, + [](auto& props, auto& canvas) { + canvas.drawColor(0xFFFFFFFF, SkXfermode::kSrcOver_Mode); + }); + + TestCanvas canvas(100, 100); + delete canvas.finishRecording(); + + while (benchState.KeepRunning()) { + canvas.resetRecording(200, 200); + canvas.setHighContrastText(false); + canvas.translate(0, 0); // mScrollX, mScrollY + + // Clip to padding + // Can expect ~25% of views to have clip to padding with a non-null padding + int clipRestoreCount = canvas.save(SaveFlags::MatrixClip); + canvas.clipRect(1, 1, 199, 199, SkRegion::kIntersect_Op); + + canvas.insertReorderBarrier(true); + + // Draw child loop + for (int i = 0; i < benchState.range_x(); i++) { + canvas.drawRenderNode(child.get()); + } + + canvas.insertReorderBarrier(false); + canvas.restoreToCount(clipRestoreCount); + + delete canvas.finishRecording(); + } +} +BENCHMARK(BM_DisplayListCanvas_basicViewGroupDraw)->Arg(1)->Arg(5)->Arg(10);