aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-05-15 12:19:39 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-15 20:24:26 +0000
commit0dc6dd0a3f56798887d6d1d931485c5054f8c152 (patch)
tree813009899761f10ecab13e255bd80b9878073415 /tools
parentcbd0f3b4e3239ffd84402ed63a85e88e484a4c47 (diff)
Add sRGB support to monobench.
We'll now run non-rendering and raster benchmarks, for simplicity choosing sRGB as the only raster configuration. $ ninja -C out monobench; and out/monobench "linear_clamp_(3color|pos)\$" gradient_linear_clamp_… 6257 …3color 1x …pos 1.03x $ ninja -C out monobench; and out/monobench "linear_clamp_.*[^4][^f]\$" gradient_linear_clamp_… 321 …shallow 1x …shallow_dither 1x …3color 1.49x …hicolor 1.5x …pos 1.52x Change-Id: I7282a84c982eb1f11f0ea2dfe39afea66231761c Reviewed-on: https://skia-review.googlesource.com/16877 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/monobench.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/tools/monobench.cpp b/tools/monobench.cpp
index fa0de8a871..ff0abc2653 100644
--- a/tools/monobench.cpp
+++ b/tools/monobench.cpp
@@ -8,6 +8,7 @@
#include "Benchmark.h"
#include "OverwriteLine.h"
#include "SkGraphics.h"
+#include "SkSurface.h"
#include "SkTaskGroup.h"
#include <algorithm>
#include <chrono>
@@ -48,7 +49,8 @@ int main(int argc, char** argv) {
std::string name = bench->getName();
if (std::regex_search(name, pattern) &&
- bench->isSuitableFor(Benchmark::kNonRendering_Backend)) {
+ (bench->isSuitableFor(Benchmark::kNonRendering_Backend) ||
+ bench->isSuitableFor(Benchmark:: kRaster_Backend))) {
bench->delayedSetup();
benches.emplace_back(Bench{std::move(bench), name,
ns{std::numeric_limits<double>::infinity()}});
@@ -96,12 +98,22 @@ int main(int argc, char** argv) {
while (samples < limit) {
std::random_shuffle(benches.begin(), benches.end());
for (auto& bench : benches) {
+ sk_sp<SkSurface> dst;
+ SkCanvas* canvas = nullptr;
+ if (!bench.b->isSuitableFor(Benchmark::kNonRendering_Backend)) {
+ dst = SkSurface::MakeRaster(SkImageInfo::MakeS32(bench.b->getSize().x(),
+ bench.b->getSize().y(),
+ kPremul_SkAlphaType));
+ canvas = dst->getCanvas();
+ bench.b->perCanvasPreDraw(canvas);
+ }
for (int loops = 1; loops < 1000000000;) {
- bench.b->preDraw(nullptr);
+
+ bench.b->preDraw(canvas);
auto start = clock::now();
- bench.b->draw(loops, nullptr);
+ bench.b->draw(loops, canvas);
ns elapsed = clock::now() - start;
- bench.b->postDraw(nullptr);
+ bench.b->postDraw(canvas);
if (elapsed < std::chrono::milliseconds{10}) {
loops *= 2;
@@ -131,6 +143,9 @@ int main(int argc, char** argv) {
}
break;
}
+ if (canvas) {
+ bench.b->perCanvasPostDraw(canvas);
+ }
}
}