Chromium Code Reviews| Index: bench/SKPBench.cpp |
| diff --git a/bench/SKPBench.cpp b/bench/SKPBench.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ff4ed113702ab87a24892db5c46ff3fdd573d8ff |
| --- /dev/null |
| +++ b/bench/SKPBench.cpp |
| @@ -0,0 +1,41 @@ |
| +/* |
| + * 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 "SKPBench.h" |
| + |
| +SKPBench::SKPBench(const char* name, const SkPicture* pic, const SkIRect& clip, SkScalar scale) |
| + : fPic(SkRef(pic)) |
| + , fClip(clip) |
| + , fScale(scale) { |
| + fName.printf("%s_%.2g", name, scale); |
| +} |
| + |
| +const char* SKPBench::onGetName() { |
| + return fName.c_str(); |
| +} |
| + |
| +bool SKPBench::isSuitableFor(Backend backend) { |
| + return backend != kNonRendering_Backend; |
| +} |
| + |
| +SkIPoint SKPBench::onGetSize() { |
| + return SkIPoint::Make(fClip.fRight - fClip.fLeft, fClip.fBottom - fClip.fTop); |
|
bsalomon
2014/08/01 13:23:24
fClip.width(), fClip.height()?
mtklein
2014/08/01 13:55:34
Done.
|
| +} |
| + |
| +void SKPBench::onDraw(const int loops, SkCanvas* canvas) { |
| + canvas->save(); |
| + SkRegion deviceClip; |
|
bsalomon
2014/08/01 13:23:24
No regions, please! The GPU doesn't like them and
mtklein
2014/08/01 13:55:34
Done. Writing output SGTM. Let's follow up.
|
| + deviceClip.setRect(fClip); |
| + canvas->clipRegion(deviceClip); |
| + |
| + canvas->scale(fScale, fScale); |
| + |
| + for (int i = 0; i < loops; i++) { |
| + fPic->draw(canvas); |
|
bsalomon
2014/08/01 13:23:24
I'm not sure whether we should have a canvas flush
mtklein
2014/08/01 13:55:34
Good question. Looks like bench_pictures does, so
|
| + } |
| + canvas->restore(); |
| +} |