From 21e4322b925b1a0463094be8e9cc581d284f4b46 Mon Sep 17 00:00:00 2001 From: "tomhudson@google.com" Date: Thu, 17 Jan 2013 12:17:00 +0000 Subject: 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 --- bench/Matrix44Bench.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'bench/Matrix44Bench.cpp') 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); ) -- cgit v1.2.3