aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-06-16 10:41:27 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-06-16 10:41:27 -0700
commitbf9e60006987f23773b1e0bdfad9d424d4bc5170 (patch)
treeb92f16bcf0f85ee897062b869592592955fe60df
parentc3176aa5e578cc64a2534a9ddac2fec5ab6d8d77 (diff)
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
-rw-r--r--bench/SKPBench.cpp16
-rw-r--r--tools/nanobench_flags.json26
-rwxr-xr-xtools/nanobench_flags.py4
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: