| /* |
| * Copyright 2014 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #ifndef GMBench_DEFINED |
| #define GMBench_DEFINED |
| |
| #include "bench/Benchmark.h" |
| #include "gm/gm.h" |
| #include "include/core/SkCanvas.h" |
| |
| /** |
| * Runs a GM as a benchmark by repeatedly drawing the GM. |
| */ |
| class GMBench : public Benchmark { |
| public: |
| GMBench(std::unique_ptr<skiagm::GM> gm); |
| |
| void modifyGrContextOptions(GrContextOptions* options) override { |
| return fGM->modifyGrContextOptions(options); |
| } |
| |
| #if defined(SK_GRAPHITE) |
| void modifyGraphiteContextOptions(skgpu::graphite::ContextOptions* options) override { |
| fGM->modifyGraphiteContextOptions(options); |
| } |
| #endif |
| |
| protected: |
| const char* onGetName() override; |
| bool isSuitableFor(Backend backend) override; |
| void onPerCanvasPreDraw(SkCanvas*) override; |
| void onPerCanvasPostDraw(SkCanvas*) override; |
| void onDraw(int loops, SkCanvas*) override; |
| SkISize onGetSize() override; |
| |
| private: |
| std::unique_ptr<skiagm::GM> fGM; |
| SkString fName; |
| bool fGpuSetupFailed = false; |
| |
| using INHERITED = Benchmark; |
| }; |
| |
| #endif |