Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Side by Side Diff: bench/PathBench.cpp

Issue 1025033002: use Sk2s for conics (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/core/SkGeometry.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "Benchmark.h" 8 #include "Benchmark.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 SkConic dst[2]; 825 SkConic dst[2];
826 for (int i = 0; i < loops; ++i) { 826 for (int i = 0; i < loops; ++i) {
827 fRQ.chopAt(0.5f, dst); 827 fRQ.chopAt(0.5f, dst);
828 } 828 }
829 } 829 }
830 830
831 typedef Benchmark INHERITED; 831 typedef Benchmark INHERITED;
832 }; 832 };
833 833
834 class ConicBench_ChopHalf : public Benchmark { 834 class ConicBench_ChopHalf : public Benchmark {
835 SkConic fRQ; 835 protected:
836 SkConic fRQ, fDst[2];
837 SkString fName;
838 const bool fUseV2;
836 public: 839 public:
837 ConicBench_ChopHalf() { 840 ConicBench_ChopHalf(bool useV2) : fUseV2(useV2) {
838 fRQ.fPts[0].set(0, 0); 841 fRQ.fPts[0].set(0, 0);
839 fRQ.fPts[1].set(100, 0); 842 fRQ.fPts[1].set(100, 0);
840 fRQ.fPts[2].set(100, 100); 843 fRQ.fPts[2].set(100, 100);
841 fRQ.fW = SkScalarCos(SK_ScalarPI/4); 844 fRQ.fW = SkScalarCos(SK_ScalarPI/4);
845
846 fName.printf("conic-chop-half%d", useV2);
847 }
848
849 bool isSuitableFor(Backend backend) SK_OVERRIDE {
850 return backend == kNonRendering_Backend;
842 } 851 }
843 852
844 private: 853 private:
845 const char* onGetName() SK_OVERRIDE { 854 const char* onGetName() SK_OVERRIDE { return fName.c_str(); }
846 return "ratquad-chop-half";
847 }
848 855
849 void onDraw(const int loops, SkCanvas*) SK_OVERRIDE { 856 void onDraw(const int loops, SkCanvas*) SK_OVERRIDE {
850 SkConic dst[2]; 857 if (fUseV2) {
851 for (int i = 0; i < loops; ++i) { 858 for (int i = 0; i < loops; ++i) {
852 fRQ.chop(dst); 859 fRQ.chop2(fDst);
860 }
861 } else {
862 for (int i = 0; i < loops; ++i) {
863 fRQ.chop(fDst);
864 }
853 } 865 }
854 } 866 }
855 867
856 typedef Benchmark INHERITED; 868 typedef Benchmark INHERITED;
857 }; 869 };
870 DEF_BENCH( return new ConicBench_ChopHalf(false); )
871 DEF_BENCH( return new ConicBench_ChopHalf(true); )
872
873 class ConicBench_EvalPos : public ConicBench_ChopHalf {
874 public:
875 ConicBench_EvalPos(bool useV2) : ConicBench_ChopHalf(useV2) {
876 fName.printf("conic-eval-pos%d", useV2);
877 }
878 void onDraw(const int loops, SkCanvas*) SK_OVERRIDE {
879 if (fUseV2) {
880 for (int i = 0; i < loops; ++i) {
881 for (int j = 0; j < 1000; ++j) {
882 fDst[0].fPts[0] = fRQ.evalAt(0.4f);
883 }
884 }
885 } else {
886 for (int i = 0; i < loops; ++i) {
887 for (int j = 0; j < 1000; ++j) {
888 fRQ.evalAt(0.4f, &fDst[0].fPts[0], NULL);
889 }
890 }
891 }
892 }
893 };
894 DEF_BENCH( return new ConicBench_EvalPos(false); )
895 DEF_BENCH( return new ConicBench_EvalPos(true); )
896
897 class ConicBench_EvalTan : public ConicBench_ChopHalf {
898 public:
899 ConicBench_EvalTan(bool useV2) : ConicBench_ChopHalf(useV2) {
900 fName.printf("conic-eval-tan%d", useV2);
901 }
902 void onDraw(const int loops, SkCanvas*) SK_OVERRIDE {
903 if (fUseV2) {
904 for (int i = 0; i < loops; ++i) {
905 for (int j = 0; j < 1000; ++j) {
906 fDst[0].fPts[0] = fRQ.evalTangentAt(0.4f);
907 }
908 }
909 } else {
910 for (int i = 0; i < loops; ++i) {
911 for (int j = 0; j < 1000; ++j) {
912 fRQ.evalAt(0.4f, NULL, &fDst[0].fPts[0]);
913 }
914 }
915 }
916 }
917 };
918 DEF_BENCH( return new ConicBench_EvalTan(false); )
919 DEF_BENCH( return new ConicBench_EvalTan(true); )
858 920
859 /////////////////////////////////////////////////////////////////////////////// 921 ///////////////////////////////////////////////////////////////////////////////
860 922
861 static void rand_conic(SkConic* conic, SkRandom& rand) { 923 static void rand_conic(SkConic* conic, SkRandom& rand) {
862 for (int i = 0; i < 3; ++i) { 924 for (int i = 0; i < 3; ++i) {
863 conic->fPts[i].set(rand.nextUScalar1() * 100, rand.nextUScalar1() * 100) ; 925 conic->fPts[i].set(rand.nextUScalar1() * 100, rand.nextUScalar1() * 100) ;
864 } 926 }
865 if (rand.nextUScalar1() > 0.5f) { 927 if (rand.nextUScalar1() > 0.5f) {
866 conic->fW = rand.nextUScalar1(); 928 conic->fW = rand.nextUScalar1();
867 } else { 929 } else {
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kReversePathTo_Ad dType); ) 1067 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kReversePathTo_Ad dType); )
1006 1068
1007 DEF_BENCH( return new CirclesBench(FLAGS00); ) 1069 DEF_BENCH( return new CirclesBench(FLAGS00); )
1008 DEF_BENCH( return new CirclesBench(FLAGS01); ) 1070 DEF_BENCH( return new CirclesBench(FLAGS01); )
1009 DEF_BENCH( return new ArbRoundRectBench(false); ) 1071 DEF_BENCH( return new ArbRoundRectBench(false); )
1010 DEF_BENCH( return new ArbRoundRectBench(true); ) 1072 DEF_BENCH( return new ArbRoundRectBench(true); )
1011 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Rect_Type); ) 1073 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Rect_Type); )
1012 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k RoundRect_Type); ) 1074 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k RoundRect_Type); )
1013 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Oval_Type); ) 1075 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Oval_Type); )
1014 1076
1077
1015 // These seem to be optimized away, which is troublesome for timing. 1078 // These seem to be optimized away, which is troublesome for timing.
1016 /* 1079 /*
1017 DEF_BENCH( return new ConicBench_Chop5() ) 1080 DEF_BENCH( return new ConicBench_Chop5() )
1018 DEF_BENCH( return new ConicBench_ChopHalf() )
1019 DEF_BENCH( return new ConicBench_ComputeError() ) 1081 DEF_BENCH( return new ConicBench_ComputeError() )
1020 DEF_BENCH( return new ConicBench_asQuadTol() ) 1082 DEF_BENCH( return new ConicBench_asQuadTol() )
1021 DEF_BENCH( return new ConicBench_quadPow2() ) 1083 DEF_BENCH( return new ConicBench_quadPow2() )
1022 */ 1084 */
OLDNEW
« no previous file with comments | « no previous file | src/core/SkGeometry.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698