diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-10 14:19:40 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-10 14:19:40 +0000 |
commit | e05cc8e94ee2ad853233262d74047119939111f2 (patch) | |
tree | 50d39b53258eb3b22ef5371e3d6c20ba7627979c | |
parent | 58f511989f08a0af74f041cfae657740b008da86 (diff) |
explicitly set opt level for mac-release
delete obsolete FPS bench
git-svn-id: http://skia.googlecode.com/svn/trunk@2442 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r-- | bench/FPSBench.cpp | 118 | ||||
-rw-r--r-- | bench/MathBench.cpp | 69 | ||||
-rw-r--r-- | gyp/bench.gypi | 1 | ||||
-rw-r--r-- | gyp/common_conditions.gypi | 5 |
4 files changed, 67 insertions, 126 deletions
diff --git a/bench/FPSBench.cpp b/bench/FPSBench.cpp deleted file mode 100644 index f29fe0471c..0000000000 --- a/bench/FPSBench.cpp +++ /dev/null @@ -1,118 +0,0 @@ - -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#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 doOpaque, bool doScale) : INHERITED(p) { - fBitmap.setConfig(config, this->width(), this->height()); - fBitmap.allocPixels(); - fBitmap.eraseColor(0xFFFF0000); - if (doOpaque) { - fBitmap.setIsOpaque(true); - } - - const char* configStr = "565"; - if (config == SkBitmap::kARGB_8888_Config) { - if (doOpaque) { - configStr = "X888"; - } else { - configStr = "8888"; - } - } - fName.printf("fps_bitmap_%s_%s", configStr, - 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) { - this->setupPaint(&fPaint); - canvas->drawBitmapMatrix(fBitmap, fMatrix, &fPaint); - } - -private: - SkBitmap fBitmap; - SkMatrix fMatrix; - SkPaint fPaint; - 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, false)); } -static SkBenchmark* BMFactory1(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, false, true)); } -static SkBenchmark* BMFactory2(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, true, false)); } -static SkBenchmark* BMFactory3(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, true, true)); } -static SkBenchmark* BMFactory4(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kRGB_565_Config, false, false)); } -static SkBenchmark* BMFactory5(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kRGB_565_Config, false, 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); -static BenchRegistry gBMReg4(BMFactory4); -static BenchRegistry gBMReg5(BMFactory5); - diff --git a/bench/MathBench.cpp b/bench/MathBench.cpp index a8eb43eb4c..5726f38ede 100644 --- a/bench/MathBench.cpp +++ b/bench/MathBench.cpp @@ -1,4 +1,5 @@ #include "SkBenchmark.h" +#include "SkColorPriv.h" #include "SkMatrix.h" #include "SkRandom.h" #include "SkString.h" @@ -40,14 +41,24 @@ private: typedef SkBenchmark INHERITED; }; -int gMathBench_NonStaticGlobal; +class MathBenchU32 : public MathBench { +public: + MathBenchU32(void* param, const char name[]) : INHERITED(param, name) {} + +protected: + virtual void performITest(uint32_t* dst, const uint32_t* src, int count) = 0; + + virtual void performTest(float* SK_RESTRICT dst, const float* SK_RESTRICT src, + int count) SK_OVERRIDE { + uint32_t* d = SkTCast<uint32_t*>(dst); + const uint32_t* s = SkTCast<const uint32_t*>(src); + this->performITest(d, s, count); + } +private: + typedef MathBench INHERITED; +}; -#define always_do(pred) \ - do { \ - if (pred) { \ - ++gMathBench_NonStaticGlobal; \ - } \ - } while (0) +/////////////////////////////////////////////////////////////////////////////// class NoOpMathBench : public MathBench { public: @@ -98,12 +109,56 @@ private: typedef MathBench INHERITED; }; +static inline uint32_t QMul64(uint32_t value, U8CPU alpha) { + SkASSERT((uint8_t)alpha == alpha); + const uint32_t mask = 0xFF00FF; + + uint64_t tmp = value; + tmp = (tmp & mask) | ((tmp & ~mask) << 24); + tmp *= alpha; + return ((tmp >> 8) & mask) | ((tmp >> 32) & ~mask); +} + +class QMul64Bench : public MathBenchU32 { +public: + QMul64Bench(void* param) : INHERITED(param, "qmul64") {} +protected: + virtual void performITest(uint32_t* SK_RESTRICT dst, + const uint32_t* SK_RESTRICT src, + int count) SK_OVERRIDE { + for (int i = 0; i < count; ++i) { + dst[i] = QMul64(src[i], (uint8_t)i); + } + } +private: + typedef MathBenchU32 INHERITED; +}; + +class QMul32Bench : public MathBenchU32 { +public: + QMul32Bench(void* param) : INHERITED(param, "qmul32") {} +protected: + virtual void performITest(uint32_t* SK_RESTRICT dst, + const uint32_t* SK_RESTRICT src, + int count) SK_OVERRIDE { + for (int i = 0; i < count; ++i) { + dst[i] = SkAlphaMulQ(src[i], (uint8_t)i); + } + } +private: + typedef MathBenchU32 INHERITED; +}; + /////////////////////////////////////////////////////////////////////////////// static SkBenchmark* M0(void* p) { return new NoOpMathBench(p); } static SkBenchmark* M1(void* p) { return new SlowISqrtMathBench(p); } static SkBenchmark* M2(void* p) { return new FastISqrtMathBench(p); } +static SkBenchmark* M3(void* p) { return new QMul64Bench(p); } +static SkBenchmark* M4(void* p) { return new QMul32Bench(p); } static BenchRegistry gReg0(M0); static BenchRegistry gReg1(M1); static BenchRegistry gReg2(M2); +static BenchRegistry gReg3(M3); +static BenchRegistry gReg4(M4); diff --git a/gyp/bench.gypi b/gyp/bench.gypi index e84b6baa2a..3b79380eec 100644 --- a/gyp/bench.gypi +++ b/gyp/bench.gypi @@ -22,7 +22,6 @@ '../bench/BitmapBench.cpp', '../bench/BlurBench.cpp', '../bench/DecodeBench.cpp', - '../bench/FPSBench.cpp', '../bench/GradientBench.cpp', '../bench/MathBench.cpp', '../bench/MatrixBench.cpp', diff --git a/gyp/common_conditions.gypi b/gyp/common_conditions.gypi index 40649f1e94..19fad9e3b4 100644 --- a/gyp/common_conditions.gypi +++ b/gyp/common_conditions.gypi @@ -105,6 +105,11 @@ 'GCC_OPTIMIZATION_LEVEL': '0', }, }, + 'Release': { + 'xcode_settings': { + 'GCC_OPTIMIZATION_LEVEL': '3', + }, + }, }, 'xcode_settings': { 'SYMROOT': '<(DEPTH)/xcodebuild', |