From 9973a8a396957afb66c9ba5ee40f829770619ce3 Mon Sep 17 00:00:00 2001 From: "tomhudson@google.com" Date: Thu, 13 Dec 2012 09:55:42 +0000 Subject: Matrix inversion optimizations and benchmark; originally by whunt@google.com. https://codereview.appspot.com/6901046/ git-svn-id: http://skia.googlecode.com/svn/trunk@6775 2bbb7eff-a529-9590-31e7-b0007b416f81 --- bench/Matrix44Bench.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'bench/Matrix44Bench.cpp') diff --git a/bench/Matrix44Bench.cpp b/bench/Matrix44Bench.cpp index f10870c143..653f2b2134 100644 --- a/bench/Matrix44Bench.cpp +++ b/bench/Matrix44Bench.cpp @@ -76,6 +76,37 @@ private: typedef Matrix44Bench INHERITED; }; +class InvertMatrix44Bench : public Matrix44Bench { +public: + InvertMatrix44Bench(void* param) : INHERITED(param, "invert") { + fM0.set(0, 0, -1.1); + fM0.set(0, 1, 2.1); + fM0.set(0, 2, -3.1); + fM0.set(0, 3, 4.1); + fM0.set(1, 0, 5.1); + fM0.set(1, 1, -6.1); + fM0.set(1, 2, 7.1); + fM0.set(1, 3, 8.1); + fM0.set(2, 0, -9.1); + fM0.set(2, 1, 10.1); + fM0.set(2, 2, 11.1); + fM0.set(2, 3, -12.1); + fM0.set(3, 0, -13.1); + fM0.set(3, 1, 14.1); + fM0.set(3, 2, -15.1); + fM0.set(3, 3, 16.1); + } +protected: + virtual void performTest() { + for (int i = 0; i < 10; ++i) { + fM0.invert(&fM1); + } + } +private: + SkMatrix44 fM0, fM1; + typedef Matrix44Bench INHERITED; +}; + class PostScaleMatrix44Bench : public Matrix44Bench { public: PostScaleMatrix44Bench(void* param) : INHERITED(param, "postscale") { @@ -135,6 +166,7 @@ private: 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 SetConcatMatrix44Bench(p); ) DEF_BENCH( return new GetTypeMatrix44Bench(p); ) -- cgit v1.2.3