OLD | NEW |
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 Loading... |
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 Loading... |
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 */ |
OLD | NEW |