diff options
author | Mike Reed <reed@google.com> | 2010-02-22 14:59:09 -0500 |
---|---|---|
committer | Mike Reed <reed@google.com> | 2010-02-22 14:59:09 -0500 |
commit | 32a0e74681142badb9efd90be3558bd9a943755e (patch) | |
tree | d6835da47d9fe969172ae7d49bcccf6c521552b8 /bench/FPSBench.cpp | |
parent | 89bebe0b1f1799ec82036e621ee5d00900d0552f (diff) | |
download | external_skia-32a0e74681142badb9efd90be3558bd9a943755e.zip external_skia-32a0e74681142badb9efd90be3558bd9a943755e.tar.gz external_skia-32a0e74681142badb9efd90be3558bd9a943755e.tar.bz2 |
update benchmark tests
Diffstat (limited to 'bench/FPSBench.cpp')
-rw-r--r-- | bench/FPSBench.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/bench/FPSBench.cpp b/bench/FPSBench.cpp new file mode 100644 index 0000000..f103dc1 --- /dev/null +++ b/bench/FPSBench.cpp @@ -0,0 +1,93 @@ +#include "SkBenchmark.h" +#include "SkCanvas.h" +#include "SkPaint.h" +#include "SkRandom.h" +#include "SkString.h" + +class FPSBench : public SkBenchmark { + int32_t fWidth; + int32_t fHeight; +public: + FPSBench(void* p) : INHERITED(p) { + fWidth = 640; + (void)this->findDefine32("width", &fWidth); + fHeight = 480; + (void)this->findDefine32("height", &fHeight); + } + + int width() const { return fWidth; } + int height() const { return fHeight; } + +protected: + virtual SkIPoint onGetSize() { return SkIPoint::Make(fWidth, fHeight); } + +private: + typedef SkBenchmark INHERITED; +}; + +/////////////////////////////////////////////////////////////////////////////// + +class Color_FPSBench : public FPSBench { +public: + Color_FPSBench(void* p, SkColor c, const char name[]) : INHERITED(p) { + fColor = c; + fName = name; + } + +protected: + virtual const char* onGetName() { return fName; } + virtual void onDraw(SkCanvas* canvas) { + canvas->drawColor(fColor); + } + +private: + const char* fName; + SkColor fColor; + + typedef FPSBench INHERITED; +}; + +class Bitmap_FPSBench : public FPSBench { +public: + Bitmap_FPSBench(void* p, SkBitmap::Config config, bool doScale) : INHERITED(p) { + fBitmap.setConfig(config, this->width(), this->height()); + fBitmap.allocPixels(); + fBitmap.eraseColor(0xFFFF0000); + + fName.printf("fps_bitmap_%d_%s", fBitmap.bytesPerPixel(), + doScale ? "scale" : "noscale"); + + fMatrix.reset(); + if (doScale) { + fMatrix.setScale(SkIntToScalar(3)/2, SkIntToScalar(3)/2); + } + } + +protected: + virtual const char* onGetName() { return fName.c_str(); } + virtual void onDraw(SkCanvas* canvas) { + canvas->drawBitmapMatrix(fBitmap, fMatrix); + } + +private: + SkBitmap fBitmap; + SkMatrix fMatrix; + SkString fName; + + typedef FPSBench INHERITED; +}; + +static SkBenchmark* FillFactory(void* p) { return SkNEW_ARGS(Color_FPSBench, (p, 0xFFFF0000, "fps_fill")); } +static SkBenchmark* BlendFactory(void* p) { return SkNEW_ARGS(Color_FPSBench, (p, 0x80FF0000, "fps_blend")); } +static SkBenchmark* BMFactory0(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, false)); } +static SkBenchmark* BMFactory1(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, true)); } +static SkBenchmark* BMFactory2(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kRGB_565_Config, false)); } +static SkBenchmark* BMFactory3(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kRGB_565_Config, true)); } + +static BenchRegistry gFillReg(FillFactory); +static BenchRegistry gBlendReg(BlendFactory); +static BenchRegistry gBMReg0(BMFactory0); +static BenchRegistry gBMReg1(BMFactory1); +static BenchRegistry gBMReg2(BMFactory2); +static BenchRegistry gBMReg3(BMFactory3); + |