commit-bot@chromium.org | 6adce67 | 2014-02-03 14:48:17 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Copyright 2014 Google Inc. |
| 3 | * |
| 4 | * Use of this source code is governed by a BSD-style license that can be |
| 5 | * found in the LICENSE file. |
| 6 | */ |
| 7 | |
Mike Klein | c0bd9f9 | 2019-04-23 12:05:21 -0500 | [diff] [blame] | 8 | #include "bench/GMBench.h" |
commit-bot@chromium.org | 6adce67 | 2014-02-03 14:48:17 +0000 | [diff] [blame] | 9 | |
Ben Wagner | 406ff50 | 2019-08-12 16:39:24 -0400 | [diff] [blame] | 10 | GMBench::GMBench(std::unique_ptr<skiagm::GM> gm) : fGM(std::move(gm)) { |
| 11 | fName.printf("GM_%s", fGM->getName()); |
commit-bot@chromium.org | 6adce67 | 2014-02-03 14:48:17 +0000 | [diff] [blame] | 12 | } |
| 13 | |
tfarina | f168b86 | 2014-06-19 12:32:29 -0700 | [diff] [blame] | 14 | const char* GMBench::onGetName() { |
commit-bot@chromium.org | 6adce67 | 2014-02-03 14:48:17 +0000 | [diff] [blame] | 15 | return fName.c_str(); |
| 16 | } |
| 17 | |
tfarina | f168b86 | 2014-06-19 12:32:29 -0700 | [diff] [blame] | 18 | bool GMBench::isSuitableFor(Backend backend) { |
mtklein | 1c40292 | 2015-01-23 11:07:07 -0800 | [diff] [blame] | 19 | return kNonRendering_Backend != backend; |
commit-bot@chromium.org | 6adce67 | 2014-02-03 14:48:17 +0000 | [diff] [blame] | 20 | } |
| 21 | |
mtklein | a1ebeb2 | 2015-10-01 09:43:39 -0700 | [diff] [blame] | 22 | void GMBench::onDraw(int loops, SkCanvas* canvas) { |
bsalomon | d584d46 | 2016-05-16 09:09:18 -0700 | [diff] [blame] | 23 | fGM->setMode(skiagm::GM::kBench_Mode); |
commit-bot@chromium.org | 6adce67 | 2014-02-03 14:48:17 +0000 | [diff] [blame] | 24 | // Do we care about timing the draw of the background (once)? |
| 25 | // Does the GM ever rely on drawBackground to lazily compute something? |
| 26 | fGM->drawBackground(canvas); |
| 27 | for (int i = 0; i < loops; ++i) { |
Brian Osman | 7035a8e | 2017-12-15 14:25:11 -0500 | [diff] [blame] | 28 | SkAutoCanvasRestore acr(canvas, true); |
commit-bot@chromium.org | 6adce67 | 2014-02-03 14:48:17 +0000 | [diff] [blame] | 29 | fGM->drawContent(canvas); |
| 30 | } |
| 31 | } |
| 32 | |
tfarina | f168b86 | 2014-06-19 12:32:29 -0700 | [diff] [blame] | 33 | SkIPoint GMBench::onGetSize() { |
commit-bot@chromium.org | 6adce67 | 2014-02-03 14:48:17 +0000 | [diff] [blame] | 34 | SkISize size = fGM->getISize(); |
| 35 | return SkIPoint::Make(size.fWidth, size.fHeight); |
| 36 | } |