Chromium Code Reviews| Index: bench/SkGMBench.cpp |
| diff --git a/bench/SkGMBench.cpp b/bench/SkGMBench.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e6dd9cfb4058e279582c2c794c1999e04fd71eb7 |
| --- /dev/null |
| +++ b/bench/SkGMBench.cpp |
| @@ -0,0 +1,49 @@ |
| +/* |
| + * Copyright 2014 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#include "SkGMBench.h" |
| + |
| +SkGMBench::SkGMBench(skiagm::GM* gm) : fGM(gm) { |
| + fName.printf("GM:%s", gm->shortName()); |
| +} |
| + |
| +SkGMBench::~SkGMBench() { delete fGM; } |
| + |
| +const char* SkGMBench::onGetName() { |
| + return fName.c_str(); |
| +} |
| + |
| +bool SkGMBench::isSuitableFor(Backend backend) { |
| + uint32_t flags = fGM->getFlags(); |
| + switch (backend) { |
| + case kGPU_Backend: |
| + return !(skiagm::GM::kSkipGPU_Flag & flags); |
| + case kPDF_Backend: |
| + return !(skiagm::GM::kSkipPDF_Flag & flags); |
| + case kRaster_Backend: |
| + // GM doesn't have an equivalent flag. If the GM has known issues with 565 then |
| + // we skip it for ALL raster configs in bench. |
| + return !(skiagm::GM::kSkip565_Flag & flags); |
| + case kNonRendering_Backend: |
| + return false; |
| + default: |
| + SkDEBUGFAIL("Unexpected backend type."); |
| + return false; |
| + } |
| +} |
| + |
| +void SkGMBench::onDraw(const int loops, SkCanvas* canvas) { |
| + fGM->drawBackground(canvas); // necessary? |
| + for (int i = 0; i < loops; ++i) { |
| + fGM->draw(canvas); |
|
reed1
2014/02/03 13:20:42
I think the draw == drawBackground + drawContent.
bsalomon
2014/02/03 14:02:45
Ah.. didn't realize that.
|
| + } |
| +} |
| + |
| +SkIPoint SkGMBench::onGetSize() { |
|
reed1
2014/02/03 13:20:42
clearly we need to change the signature of onGetSi
bsalomon
2014/02/03 14:02:45
yup
|
| + SkISize size = fGM->getISize(); |
| + return SkIPoint::Make(size.fWidth, size.fHeight); |
| +} |