aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-10 14:19:40 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-10 14:19:40 +0000
commite05cc8e94ee2ad853233262d74047119939111f2 (patch)
tree50d39b53258eb3b22ef5371e3d6c20ba7627979c
parent58f511989f08a0af74f041cfae657740b008da86 (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.cpp118
-rw-r--r--bench/MathBench.cpp69
-rw-r--r--gyp/bench.gypi1
-rw-r--r--gyp/common_conditions.gypi5
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',