aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/Matrix44Bench.cpp
diff options
context:
space:
mode:
authorGravatar tomhudson@google.com <tomhudson@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-01-17 12:17:00 +0000
committerGravatar tomhudson@google.com <tomhudson@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-01-17 12:17:00 +0000
commit21e4322b925b1a0463094be8e9cc581d284f4b46 (patch)
treee4c4321f406ace24e9e172b23f0ab9704f35abe8 /bench/Matrix44Bench.cpp
parent4d28d9889b033777afc1950474296d37887ef71b (diff)
Add SSE2 multiplication for SkMatrix44 on some platforms.
Original author whunt@chromium.org. https://codereview.appspot.com/7058077/ git-svn-id: http://skia.googlecode.com/svn/trunk@7241 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench/Matrix44Bench.cpp')
-rw-r--r--bench/Matrix44Bench.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/bench/Matrix44Bench.cpp b/bench/Matrix44Bench.cpp
index ce5d99de7b..ac39639f5f 100644
--- a/bench/Matrix44Bench.cpp
+++ b/bench/Matrix44Bench.cpp
@@ -125,12 +125,34 @@ private:
typedef Matrix44Bench INHERITED;
};
+class SetConcatMatrix44BenchSpecialCase : public Matrix44Bench {
+public:
+ SetConcatMatrix44BenchSpecialCase(void* param) : INHERITED(param, "setconcat_special") {
+ fX = fY = fZ = SkDoubleToMScalar(1.5);
+ fM1.setScale(fX, fY, fZ);
+ fM2.setTranslate(fX, fY, fZ);
+ }
+protected:
+ virtual void performTest() {
+ fM0.reset(); // just to normalize this test with prescale/postscale
+ for (int i = 0; i < 10; ++i) {
+ fM0.setConcat(fM1, fM2);
+ }
+ }
+private:
+ SkMatrix44 fM0, fM1, fM2;
+ SkMScalar fX, fY, fZ;
+ typedef Matrix44Bench INHERITED;
+};
+
class SetConcatMatrix44Bench : public Matrix44Bench {
public:
SetConcatMatrix44Bench(void* param) : INHERITED(param, "setconcat") {
fX = fY = fZ = SkDoubleToMScalar(1.5);
fM1.setScale(fX, fY, fZ);
+ fM1.set(2, 0, 3.0f);
fM2.setTranslate(fX, fY, fZ);
+ fM2.set(2, 0, 3.0f);
}
protected:
virtual void performTest() {
@@ -167,6 +189,7 @@ DEF_BENCH( return new EqualsMatrix44Bench(p); )
DEF_BENCH( return new PreScaleMatrix44Bench(p); )
DEF_BENCH( return new PostScaleMatrix44Bench(p); )
DEF_BENCH( return new InvertMatrix44Bench(p); )
+DEF_BENCH( return new SetConcatMatrix44BenchSpecialCase(p); )
DEF_BENCH( return new SetConcatMatrix44Bench(p); )
DEF_BENCH( return new GetTypeMatrix44Bench(p); )