From bf9e60006987f23773b1e0bdfad9d424d4bc5170 Mon Sep 17 00:00:00 2001 From: mtklein Date: Tue, 16 Jun 2015 10:41:27 -0700 Subject: nanobench: split CPU and GPU .SKP tile sizes. Let's make CPU-bound .SKP benching mimic Chrome's tiles. Unfortunately, the CPU code also performs a lot better with those big wide tiles... BUG=skia: Review URL: https://codereview.chromium.org/1189863002 --- bench/SKPBench.cpp | 16 ++++++++++++---- tools/nanobench_flags.json | 26 ++++++++++++++++++++++++-- tools/nanobench_flags.py | 4 ++-- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/bench/SKPBench.cpp b/bench/SKPBench.cpp index 592d0428fd..757ee4655e 100644 --- a/bench/SKPBench.cpp +++ b/bench/SKPBench.cpp @@ -10,8 +10,12 @@ #include "SkMultiPictureDraw.h" #include "SkSurface.h" -DEFINE_int32(benchTileW, 1600, "Tile width used for SKP playback."); -DEFINE_int32(benchTileH, 512, "Tile height used for SKP playback."); +// These CPU tile sizes are not good per se, but they are similar to what Chrome uses. +DEFINE_int32(CPUbenchTileW, 256, "Tile width used for CPU SKP playback."); +DEFINE_int32(CPUbenchTileH, 256, "Tile height used for CPU SKP playback."); + +DEFINE_int32(GPUbenchTileW, 1600, "Tile width used for GPU SKP playback."); +DEFINE_int32(GPUbenchTileH, 512, "Tile height used for GPU SKP playback."); SKPBench::SKPBench(const char* name, const SkPicture* pic, const SkIRect& clip, SkScalar scale, bool useMultiPictureDraw) @@ -44,8 +48,12 @@ void SKPBench::onPerCanvasPreDraw(SkCanvas* canvas) { SkIRect bounds; SkAssertResult(canvas->getClipDeviceBounds(&bounds)); - int tileW = SkTMin(FLAGS_benchTileW, bounds.width()); - int tileH = SkTMin(FLAGS_benchTileH, bounds.height()); + const bool gpu = canvas->getGrContext() != nullptr; + int tileW = gpu ? FLAGS_GPUbenchTileW : FLAGS_CPUbenchTileW, + tileH = gpu ? FLAGS_GPUbenchTileH : FLAGS_CPUbenchTileH; + + tileW = SkTMin(tileW, bounds.width()); + tileH = SkTMin(tileH, bounds.height()); int xTiles = SkScalarCeilToInt(bounds.width() / SkIntToScalar(tileW)); int yTiles = SkScalarCeilToInt(bounds.height() / SkIntToScalar(tileH)); diff --git a/tools/nanobench_flags.json b/tools/nanobench_flags.json index e90f21741c..90002a8a0b 100644 --- a/tools/nanobench_flags.json +++ b/tools/nanobench_flags.json @@ -63,12 +63,34 @@ "hwui", "msaa16", "nvprmsaa16", - "--benchTileW", + "--GPUbenchTileW", "256", - "--benchTileH", + "--GPUbenchTileH", "256", "--match", "~gradient", "~etc1bitmap" + ], + "Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug": [ + "--scales", + "1.0", + "1.1", + "--skps", + "ignore_skps", + "--config", + "565", + "8888", + "gpu", + "nonrendering", + "angle", + "hwui", + "msaa16", + "nvprmsaa16", + "--match", + "~blurroundrect", + "~patch_grid", + "~desk_carsvg", + "~keymobi", + "~path_hairline" ] } \ No newline at end of file diff --git a/tools/nanobench_flags.py b/tools/nanobench_flags.py index 6be492422d..9283683cb3 100755 --- a/tools/nanobench_flags.py +++ b/tools/nanobench_flags.py @@ -52,8 +52,8 @@ def get_args(bot): args.extend(['--samples', '1']) if 'HD2000' in bot: - args.extend(['--benchTileW', '256']) - args.extend(['--benchTileH', '256']) + args.extend(['--GPUbenchTileW', '256']) + args.extend(['--GPUbenchTileH', '256']) match = [] if 'Android' in bot: -- cgit v1.2.3