17d68335eb427547606497eb4edea81acce7891f9reed@google.com/* 27d68335eb427547606497eb4edea81acce7891f9reed@google.com * Copyright 2012 Google Inc. 37d68335eb427547606497eb4edea81acce7891f9reed@google.com * 47d68335eb427547606497eb4edea81acce7891f9reed@google.com * Use of this source code is governed by a BSD-style license that can be 57d68335eb427547606497eb4edea81acce7891f9reed@google.com * found in the LICENSE file. 67d68335eb427547606497eb4edea81acce7891f9reed@google.com */ 77d68335eb427547606497eb4edea81acce7891f9reed@google.com 8f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h" 97d68335eb427547606497eb4edea81acce7891f9reed@google.com#include "SkMatrix44.h" 107d68335eb427547606497eb4edea81acce7891f9reed@google.com#include "SkRandom.h" 117d68335eb427547606497eb4edea81acce7891f9reed@google.com#include "SkString.h" 127d68335eb427547606497eb4edea81acce7891f9reed@google.com 13f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass Matrix44Bench : public Benchmark { 147d68335eb427547606497eb4edea81acce7891f9reed@google.com SkString fName; 157d68335eb427547606497eb4edea81acce7891f9reed@google.compublic: 164469938e92d779dff05e745559e67907bbf21e78reed@google.com Matrix44Bench(const char name[]) { 177d68335eb427547606497eb4edea81acce7891f9reed@google.com fName.printf("matrix44_%s", name); 18644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org } 19644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org 2036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool isSuitableFor(Backend backend) override { 21644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org return backend == kNonRendering_Backend; 227d68335eb427547606497eb4edea81acce7891f9reed@google.com } 237d68335eb427547606497eb4edea81acce7891f9reed@google.com 247d68335eb427547606497eb4edea81acce7891f9reed@google.com virtual void performTest() = 0; 257d68335eb427547606497eb4edea81acce7891f9reed@google.com 267d68335eb427547606497eb4edea81acce7891f9reed@google.comprotected: 277d68335eb427547606497eb4edea81acce7891f9reed@google.com virtual int mulLoopCount() const { return 1; } 287d68335eb427547606497eb4edea81acce7891f9reed@google.com 297d68335eb427547606497eb4edea81acce7891f9reed@google.com virtual const char* onGetName() { 307d68335eb427547606497eb4edea81acce7891f9reed@google.com return fName.c_str(); 317d68335eb427547606497eb4edea81acce7891f9reed@google.com } 327d68335eb427547606497eb4edea81acce7891f9reed@google.com 333361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org virtual void onDraw(const int loops, SkCanvas*) { 343361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org for (int i = 0; i < loops; i++) { 357d68335eb427547606497eb4edea81acce7891f9reed@google.com this->performTest(); 367d68335eb427547606497eb4edea81acce7891f9reed@google.com } 377d68335eb427547606497eb4edea81acce7891f9reed@google.com } 387d68335eb427547606497eb4edea81acce7891f9reed@google.com 397d68335eb427547606497eb4edea81acce7891f9reed@google.comprivate: 40f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina typedef Benchmark INHERITED; 417d68335eb427547606497eb4edea81acce7891f9reed@google.com}; 427d68335eb427547606497eb4edea81acce7891f9reed@google.com 437d68335eb427547606497eb4edea81acce7891f9reed@google.comclass EqualsMatrix44Bench : public Matrix44Bench { 447d68335eb427547606497eb4edea81acce7891f9reed@google.compublic: 454469938e92d779dff05e745559e67907bbf21e78reed@google.com EqualsMatrix44Bench() 464469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("equals") 474469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM0(SkMatrix44::kIdentity_Constructor) 484469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM1(SkMatrix44::kIdentity_Constructor) 494469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM2(SkMatrix44::kIdentity_Constructor) 504469938e92d779dff05e745559e67907bbf21e78reed@google.com { 517d68335eb427547606497eb4edea81acce7891f9reed@google.com fM1.set(0, 0, 0); 527d68335eb427547606497eb4edea81acce7891f9reed@google.com fM2.set(3, 3, 0); 537d68335eb427547606497eb4edea81acce7891f9reed@google.com } 547d68335eb427547606497eb4edea81acce7891f9reed@google.comprotected: 557d68335eb427547606497eb4edea81acce7891f9reed@google.com virtual void performTest() { 567d68335eb427547606497eb4edea81acce7891f9reed@google.com for (int i = 0; i < 10; ++i) { 5705af1afd429808913683da75644e48bece12e820humper@google.com (void) (fM0 == fM1); 5805af1afd429808913683da75644e48bece12e820humper@google.com (void) (fM1 == fM2); 5905af1afd429808913683da75644e48bece12e820humper@google.com (void) (fM2 == fM0); 607d68335eb427547606497eb4edea81acce7891f9reed@google.com } 617d68335eb427547606497eb4edea81acce7891f9reed@google.com } 627d68335eb427547606497eb4edea81acce7891f9reed@google.comprivate: 637d68335eb427547606497eb4edea81acce7891f9reed@google.com SkMatrix44 fM0, fM1, fM2; 647d68335eb427547606497eb4edea81acce7891f9reed@google.com typedef Matrix44Bench INHERITED; 657d68335eb427547606497eb4edea81acce7891f9reed@google.com}; 667d68335eb427547606497eb4edea81acce7891f9reed@google.com 6763bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.orgclass SetIdentityMatrix44Bench : public Matrix44Bench { 6863bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.orgpublic: 694469938e92d779dff05e745559e67907bbf21e78reed@google.com SetIdentityMatrix44Bench() 704469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("setidentity") 714469938e92d779dff05e745559e67907bbf21e78reed@google.com , mat(SkMatrix44::kIdentity_Constructor) 724469938e92d779dff05e745559e67907bbf21e78reed@google.com { 7363bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org double rowMajor[16] = 7463bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org { 1, 2, 3, 4, 7563bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org 5, 6, 7, 8, 7663bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org 9, 10, 11, 12, 7763bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org 13, 14, 15, 16}; 7863bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org mat.setRowMajord(rowMajor); 7963bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org } 8063bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.orgprotected: 8163bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org virtual void performTest() { 8263bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org for (int i = 0; i < 10; ++i) { 8363bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org mat.setIdentity(); 8463bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org } 8563bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org } 8663bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.orgprivate: 8763bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org SkMatrix44 mat; 8863bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org typedef Matrix44Bench INHERITED; 8963bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org}; 9063bf68df05b965d80875d4f3c9b30b0fa456762eshawnsingh@chromium.org 917d68335eb427547606497eb4edea81acce7891f9reed@google.comclass PreScaleMatrix44Bench : public Matrix44Bench { 927d68335eb427547606497eb4edea81acce7891f9reed@google.compublic: 934469938e92d779dff05e745559e67907bbf21e78reed@google.com PreScaleMatrix44Bench() 944469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("prescale") 954469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM0(SkMatrix44::kUninitialized_Constructor) 964469938e92d779dff05e745559e67907bbf21e78reed@google.com { 977d68335eb427547606497eb4edea81acce7891f9reed@google.com fX = fY = fZ = SkDoubleToMScalar(1.5); 987d68335eb427547606497eb4edea81acce7891f9reed@google.com } 997d68335eb427547606497eb4edea81acce7891f9reed@google.comprotected: 1007d68335eb427547606497eb4edea81acce7891f9reed@google.com virtual void performTest() { 1017d68335eb427547606497eb4edea81acce7891f9reed@google.com fM0.reset(); 1027d68335eb427547606497eb4edea81acce7891f9reed@google.com for (int i = 0; i < 10; ++i) { 1037d68335eb427547606497eb4edea81acce7891f9reed@google.com fM0.preScale(fX, fY, fZ); 1047d68335eb427547606497eb4edea81acce7891f9reed@google.com } 1057d68335eb427547606497eb4edea81acce7891f9reed@google.com } 1067d68335eb427547606497eb4edea81acce7891f9reed@google.comprivate: 1077d68335eb427547606497eb4edea81acce7891f9reed@google.com SkMatrix44 fM0; 1087d68335eb427547606497eb4edea81acce7891f9reed@google.com SkMScalar fX, fY, fZ; 1097d68335eb427547606497eb4edea81acce7891f9reed@google.com typedef Matrix44Bench INHERITED; 1107d68335eb427547606497eb4edea81acce7891f9reed@google.com}; 1117d68335eb427547606497eb4edea81acce7891f9reed@google.com 1129973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.comclass InvertMatrix44Bench : public Matrix44Bench { 1139973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.compublic: 1144469938e92d779dff05e745559e67907bbf21e78reed@google.com InvertMatrix44Bench() 1154469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("invert") 1164469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM0(SkMatrix44::kUninitialized_Constructor) 1174469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM1(SkMatrix44::kUninitialized_Constructor) 1184469938e92d779dff05e745559e67907bbf21e78reed@google.com { 119950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 0, -1.1); 120950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 1, 2.1); 121950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 2, -3.1); 122950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 3, 4.1); 123950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 0, 5.1); 124950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 1, -6.1); 125950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 2, 7.1); 126950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 3, 8.1); 127950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 0, -9.1); 128950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 1, 10.1); 129950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 2, 11.1); 130950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 3, -12.1); 131950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(3, 0, -13.1); 132950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(3, 1, 14.1); 133950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(3, 2, -15.1); 134950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(3, 3, 16.1); 135950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 136950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgprotected: 137950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org virtual void performTest() { 138950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org for (int i = 0; i < 10; ++i) { 139950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.invert(&fM1); 140950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 141950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 142950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgprivate: 143950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org SkMatrix44 fM0, fM1; 144950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org typedef Matrix44Bench INHERITED; 145950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org}; 146950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org 147950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgclass InvertAffineMatrix44Bench : public Matrix44Bench { 148950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgpublic: 1494469938e92d779dff05e745559e67907bbf21e78reed@google.com InvertAffineMatrix44Bench() 1504469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("invertaffine") 1514469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM0(SkMatrix44::kIdentity_Constructor) 1524469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM1(SkMatrix44::kUninitialized_Constructor) 1534469938e92d779dff05e745559e67907bbf21e78reed@google.com { 154950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 0, -1.1); 155950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 1, 2.1); 156950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 2, -3.1); 157950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 3, 4.1); 158950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 0, 5.1); 159950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 1, -6.1); 160950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 2, 7.1); 161950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 3, 8.1); 162950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 0, -9.1); 163950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 1, 10.1); 164950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 2, 11.1); 165950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 3, -12.1); 166950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org // bottom row (perspective component) remains (0, 0, 0, 1). 167950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 168950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgprotected: 169950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org virtual void performTest() { 170950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org for (int i = 0; i < 10; ++i) { 171950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.invert(&fM1); 172950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 173950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 174950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgprivate: 175950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org SkMatrix44 fM0, fM1; 176950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org typedef Matrix44Bench INHERITED; 177950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org}; 178950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org 179950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgclass InvertScaleTranslateMatrix44Bench : public Matrix44Bench { 180950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgpublic: 1814469938e92d779dff05e745559e67907bbf21e78reed@google.com InvertScaleTranslateMatrix44Bench() 1824469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("invertscaletranslate") 1834469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM0(SkMatrix44::kIdentity_Constructor) 1844469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM1(SkMatrix44::kUninitialized_Constructor) 1854469938e92d779dff05e745559e67907bbf21e78reed@google.com { 186950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 0, -1.1); 187950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 3, 4.1); 188950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org 189950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 1, -6.1); 190950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 3, 8.1); 191950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org 192950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 2, 11.1); 193950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 3, -12.1); 194950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 195950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgprotected: 196950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org virtual void performTest() { 197950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org for (int i = 0; i < 10; ++i) { 198950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.invert(&fM1); 199950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 200950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org } 201950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgprivate: 202950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org SkMatrix44 fM0, fM1; 203950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org typedef Matrix44Bench INHERITED; 204950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org}; 205950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org 206950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgclass InvertTranslateMatrix44Bench : public Matrix44Bench { 207950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.orgpublic: 2084469938e92d779dff05e745559e67907bbf21e78reed@google.com InvertTranslateMatrix44Bench() 2094469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("inverttranslate") 2104469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM0(SkMatrix44::kIdentity_Constructor) 2114469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM1(SkMatrix44::kUninitialized_Constructor) 2124469938e92d779dff05e745559e67907bbf21e78reed@google.com { 213950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(0, 3, 4.1); 214950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(1, 3, 8.1); 215950457543860eb1c545e0ef8bb2c20e2ddc6196ecommit-bot@chromium.org fM0.set(2, 3, -12.1); 2169973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com } 2179973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.comprotected: 2189973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com virtual void performTest() { 2199973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com for (int i = 0; i < 10; ++i) { 2209973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com fM0.invert(&fM1); 2219973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com } 2229973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com } 2239973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.comprivate: 2249973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com SkMatrix44 fM0, fM1; 2259973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com typedef Matrix44Bench INHERITED; 2269973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com}; 2279973a8a396957afb66c9ba5ee40f829770619ce3tomhudson@google.com 2287d68335eb427547606497eb4edea81acce7891f9reed@google.comclass PostScaleMatrix44Bench : public Matrix44Bench { 2297d68335eb427547606497eb4edea81acce7891f9reed@google.compublic: 2304469938e92d779dff05e745559e67907bbf21e78reed@google.com PostScaleMatrix44Bench() 2314469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("postscale") 2324469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM0(SkMatrix44::kUninitialized_Constructor) 2334469938e92d779dff05e745559e67907bbf21e78reed@google.com { 2347d68335eb427547606497eb4edea81acce7891f9reed@google.com fX = fY = fZ = SkDoubleToMScalar(1.5); 2357d68335eb427547606497eb4edea81acce7891f9reed@google.com } 2367d68335eb427547606497eb4edea81acce7891f9reed@google.comprotected: 2377d68335eb427547606497eb4edea81acce7891f9reed@google.com virtual void performTest() { 2387d68335eb427547606497eb4edea81acce7891f9reed@google.com fM0.reset(); 2397d68335eb427547606497eb4edea81acce7891f9reed@google.com for (int i = 0; i < 10; ++i) { 2407d68335eb427547606497eb4edea81acce7891f9reed@google.com fM0.postScale(fX, fY, fZ); 2417d68335eb427547606497eb4edea81acce7891f9reed@google.com } 2427d68335eb427547606497eb4edea81acce7891f9reed@google.com } 2437d68335eb427547606497eb4edea81acce7891f9reed@google.comprivate: 2447d68335eb427547606497eb4edea81acce7891f9reed@google.com SkMatrix44 fM0; 2457d68335eb427547606497eb4edea81acce7891f9reed@google.com SkMScalar fX, fY, fZ; 2467d68335eb427547606497eb4edea81acce7891f9reed@google.com typedef Matrix44Bench INHERITED; 2477d68335eb427547606497eb4edea81acce7891f9reed@google.com}; 2487d68335eb427547606497eb4edea81acce7891f9reed@google.com 2497d68335eb427547606497eb4edea81acce7891f9reed@google.comclass SetConcatMatrix44Bench : public Matrix44Bench { 2507d68335eb427547606497eb4edea81acce7891f9reed@google.compublic: 2514469938e92d779dff05e745559e67907bbf21e78reed@google.com SetConcatMatrix44Bench() 2524469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("setconcat") 2534469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM0(SkMatrix44::kUninitialized_Constructor) 2544469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM1(SkMatrix44::kUninitialized_Constructor) 2554469938e92d779dff05e745559e67907bbf21e78reed@google.com , fM2(SkMatrix44::kUninitialized_Constructor) 2564469938e92d779dff05e745559e67907bbf21e78reed@google.com{ 2577d68335eb427547606497eb4edea81acce7891f9reed@google.com fX = fY = fZ = SkDoubleToMScalar(1.5); 2587d68335eb427547606497eb4edea81acce7891f9reed@google.com fM1.setScale(fX, fY, fZ); 2597d68335eb427547606497eb4edea81acce7891f9reed@google.com fM2.setTranslate(fX, fY, fZ); 2607d68335eb427547606497eb4edea81acce7891f9reed@google.com } 2617d68335eb427547606497eb4edea81acce7891f9reed@google.comprotected: 2627d68335eb427547606497eb4edea81acce7891f9reed@google.com virtual void performTest() { 2637d68335eb427547606497eb4edea81acce7891f9reed@google.com fM0.reset(); // just to normalize this test with prescale/postscale 2647d68335eb427547606497eb4edea81acce7891f9reed@google.com for (int i = 0; i < 10; ++i) { 2657d68335eb427547606497eb4edea81acce7891f9reed@google.com fM0.setConcat(fM1, fM2); 2667d68335eb427547606497eb4edea81acce7891f9reed@google.com } 2677d68335eb427547606497eb4edea81acce7891f9reed@google.com } 2687d68335eb427547606497eb4edea81acce7891f9reed@google.comprivate: 2697d68335eb427547606497eb4edea81acce7891f9reed@google.com SkMatrix44 fM0, fM1, fM2; 2707d68335eb427547606497eb4edea81acce7891f9reed@google.com SkMScalar fX, fY, fZ; 2717d68335eb427547606497eb4edea81acce7891f9reed@google.com typedef Matrix44Bench INHERITED; 2727d68335eb427547606497eb4edea81acce7891f9reed@google.com}; 2737d68335eb427547606497eb4edea81acce7891f9reed@google.com 2747d68335eb427547606497eb4edea81acce7891f9reed@google.comclass GetTypeMatrix44Bench : public Matrix44Bench { 2757d68335eb427547606497eb4edea81acce7891f9reed@google.compublic: 2764469938e92d779dff05e745559e67907bbf21e78reed@google.com GetTypeMatrix44Bench() 2774469938e92d779dff05e745559e67907bbf21e78reed@google.com : INHERITED("gettype") 2784469938e92d779dff05e745559e67907bbf21e78reed@google.com , fMatrix(SkMatrix44::kIdentity_Constructor) 2794469938e92d779dff05e745559e67907bbf21e78reed@google.com {} 2807d68335eb427547606497eb4edea81acce7891f9reed@google.comprotected: 2817d68335eb427547606497eb4edea81acce7891f9reed@google.com // Putting random generation of the matrix inside performTest() 2827d68335eb427547606497eb4edea81acce7891f9reed@google.com // would help us avoid anomalous runs, but takes up 25% or 2837d68335eb427547606497eb4edea81acce7891f9reed@google.com // more of the function time. 2847d68335eb427547606497eb4edea81acce7891f9reed@google.com virtual void performTest() { 2857d68335eb427547606497eb4edea81acce7891f9reed@google.com for (int i = 0; i < 20; ++i) { 2867d68335eb427547606497eb4edea81acce7891f9reed@google.com fMatrix.set(1, 2, 1); // to invalidate the type-cache 2877d68335eb427547606497eb4edea81acce7891f9reed@google.com fMatrix.getType(); 2887d68335eb427547606497eb4edea81acce7891f9reed@google.com } 2897d68335eb427547606497eb4edea81acce7891f9reed@google.com } 2907d68335eb427547606497eb4edea81acce7891f9reed@google.comprivate: 2917d68335eb427547606497eb4edea81acce7891f9reed@google.com SkMatrix44 fMatrix; 2927d68335eb427547606497eb4edea81acce7891f9reed@google.com typedef Matrix44Bench INHERITED; 2937d68335eb427547606497eb4edea81acce7891f9reed@google.com}; 2947d68335eb427547606497eb4edea81acce7891f9reed@google.com 295410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new SetIdentityMatrix44Bench(); ) 296410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new EqualsMatrix44Bench(); ) 297410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new PreScaleMatrix44Bench(); ) 298410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new PostScaleMatrix44Bench(); ) 299410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new InvertMatrix44Bench(); ) 300410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new InvertAffineMatrix44Bench(); ) 301410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new InvertScaleTranslateMatrix44Bench(); ) 302410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new InvertTranslateMatrix44Bench(); ) 303410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new SetConcatMatrix44Bench(); ) 304410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new GetTypeMatrix44Bench(); ) 305