| 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 "SkBenchmark.h" |    8 #include "SkBenchmark.h" | 
|    9 #include "SkCanvas.h" |    9 #include "SkCanvas.h" | 
|   10 #include "SkCommandLineFlags.h" |   10 #include "SkCommandLineFlags.h" | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   55         } |   55         } | 
|   56         return fName.c_str(); |   56         return fName.c_str(); | 
|   57     } |   57     } | 
|   58  |   58  | 
|   59 protected: |   59 protected: | 
|   60     virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { |   60     virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { | 
|   61         c->drawRect(r, p); |   61         c->drawRect(r, p); | 
|   62     } |   62     } | 
|   63  |   63  | 
|   64     virtual const char* onGetName() { return computeName("rects"); } |   64     virtual const char* onGetName() { return computeName("rects"); } | 
|   65     virtual void onDraw(SkCanvas* canvas) { |   65     virtual void onDraw(const int loops, SkCanvas* canvas) { | 
|   66         SkPaint paint; |   66         SkPaint paint; | 
|   67         if (fStroke > 0) { |   67         if (fStroke > 0) { | 
|   68             paint.setStyle(SkPaint::kStroke_Style); |   68             paint.setStyle(SkPaint::kStroke_Style); | 
|   69             paint.setStrokeWidth(SkIntToScalar(fStroke)); |   69             paint.setStrokeWidth(SkIntToScalar(fStroke)); | 
|   70         } |   70         } | 
|   71         for (int i = 0; i < this->getLoops(); i++) { |   71         for (int i = 0; i < loops; i++) { | 
|   72             paint.setColor(fColors[i % N]); |   72             paint.setColor(fColors[i % N]); | 
|   73             this->setupPaint(&paint); |   73             this->setupPaint(&paint); | 
|   74             this->drawThisRect(canvas, fRects[i % N], paint); |   74             this->drawThisRect(canvas, fRects[i % N], paint); | 
|   75         } |   75         } | 
|   76     } |   76     } | 
|   77 private: |   77 private: | 
|   78     typedef SkBenchmark INHERITED; |   78     typedef SkBenchmark INHERITED; | 
|   79 }; |   79 }; | 
|   80  |   80  | 
|   81 class SrcModeRectBench : public RectBench { |   81 class SrcModeRectBench : public RectBench { | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  134     SkCanvas::PointMode fMode; |  134     SkCanvas::PointMode fMode; | 
|  135     const char* fName; |  135     const char* fName; | 
|  136  |  136  | 
|  137     PointsBench(SkCanvas::PointMode mode, const char* name) |  137     PointsBench(SkCanvas::PointMode mode, const char* name) | 
|  138         : RectBench(2) |  138         : RectBench(2) | 
|  139         , fMode(mode) { |  139         , fMode(mode) { | 
|  140         fName = name; |  140         fName = name; | 
|  141     } |  141     } | 
|  142  |  142  | 
|  143 protected: |  143 protected: | 
|  144     virtual void onDraw(SkCanvas* canvas) { |  144     virtual void onDraw(const int loops, SkCanvas* canvas) { | 
|  145         SkScalar gSizes[] = { |  145         SkScalar gSizes[] = { | 
|  146             SkIntToScalar(7), 0 |  146             SkIntToScalar(7), 0 | 
|  147         }; |  147         }; | 
|  148         size_t sizes = SK_ARRAY_COUNT(gSizes); |  148         size_t sizes = SK_ARRAY_COUNT(gSizes); | 
|  149  |  149  | 
|  150         if (FLAGS_strokeWidth >= 0) { |  150         if (FLAGS_strokeWidth >= 0) { | 
|  151             gSizes[0] = (SkScalar)FLAGS_strokeWidth; |  151             gSizes[0] = (SkScalar)FLAGS_strokeWidth; | 
|  152             sizes = 1; |  152             sizes = 1; | 
|  153         } |  153         } | 
|  154  |  154  | 
|  155         SkPaint paint; |  155         SkPaint paint; | 
|  156         paint.setStrokeCap(SkPaint::kRound_Cap); |  156         paint.setStrokeCap(SkPaint::kRound_Cap); | 
|  157  |  157  | 
|  158         for (int loop = 0; loop < this->getLoops(); loop++) { |  158         for (int loop = 0; loop < loops; loop++) { | 
|  159             for (size_t i = 0; i < sizes; i++) { |  159             for (size_t i = 0; i < sizes; i++) { | 
|  160                 paint.setStrokeWidth(gSizes[i]); |  160                 paint.setStrokeWidth(gSizes[i]); | 
|  161                 this->setupPaint(&paint); |  161                 this->setupPaint(&paint); | 
|  162                 canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), pain
     t); |  162                 canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), pain
     t); | 
|  163                 paint.setColor(fColors[i % N]); |  163                 paint.setColor(fColors[i % N]); | 
|  164             } |  164             } | 
|  165         } |  165         } | 
|  166     } |  166     } | 
|  167     virtual const char* onGetName() { return fName; } |  167     virtual const char* onGetName() { return fName; } | 
|  168 }; |  168 }; | 
|  169  |  169  | 
|  170 class AARectBench : public SkBenchmark { |  170 class AARectBench : public SkBenchmark { | 
|  171 public: |  171 public: | 
|  172     enum { |  172     enum { | 
|  173         W = 640, |  173         W = 640, | 
|  174         H = 480, |  174         H = 480, | 
|  175     }; |  175     }; | 
|  176  |  176  | 
|  177     AARectBench(bool rotate) : fRotate(rotate) {} |  177     AARectBench(bool rotate) : fRotate(rotate) {} | 
|  178  |  178  | 
|  179 protected: |  179 protected: | 
|  180  |  180  | 
|  181     virtual const char* onGetName() { |  181     virtual const char* onGetName() { | 
|  182         if (fRotate) { |  182         if (fRotate) { | 
|  183             return "aarects_rotated"; |  183             return "aarects_rotated"; | 
|  184         } |  184         } | 
|  185         return "aarects"; |  185         return "aarects"; | 
|  186     } |  186     } | 
|  187  |  187  | 
|  188     virtual void onDraw(SkCanvas* canvas) { |  188     virtual void onDraw(const int loops, SkCanvas* canvas) { | 
|  189         static const SkScalar kHalfRectSize = 0.75f; |  189         static const SkScalar kHalfRectSize = 0.75f; | 
|  190  |  190  | 
|  191         SkPaint paint; |  191         SkPaint paint; | 
|  192         this->setupPaint(&paint); |  192         this->setupPaint(&paint); | 
|  193         paint.setAntiAlias(true); |  193         paint.setAntiAlias(true); | 
|  194         paint.setColor(SK_ColorBLACK); |  194         paint.setColor(SK_ColorBLACK); | 
|  195         SkRect r = { -kHalfRectSize, -kHalfRectSize, kHalfRectSize, kHalfRectSiz
     e }; |  195         SkRect r = { -kHalfRectSize, -kHalfRectSize, kHalfRectSize, kHalfRectSiz
     e }; | 
|  196         int rot = 0; |  196         int rot = 0; | 
|  197  |  197  | 
|  198         for (int i = 0; i < this->getLoops(); i++) { |  198         for (int i = 0; i < loops; i++) { | 
|  199             // Draw small aa rects in a grid across the screen |  199             // Draw small aa rects in a grid across the screen | 
|  200             for (SkScalar y = kHalfRectSize+SK_Scalar1; y < H; y += 2*kHalfRectS
     ize+2) { |  200             for (SkScalar y = kHalfRectSize+SK_Scalar1; y < H; y += 2*kHalfRectS
     ize+2) { | 
|  201                 for (SkScalar x = kHalfRectSize+SK_Scalar1; x < W; x += 2*kHalfR
     ectSize+2) { |  201                 for (SkScalar x = kHalfRectSize+SK_Scalar1; x < W; x += 2*kHalfR
     ectSize+2) { | 
|  202                     canvas->save(); |  202                     canvas->save(); | 
|  203                     canvas->translate(x, y); |  203                     canvas->translate(x, y); | 
|  204  |  204  | 
|  205                     if (fRotate) { |  205                     if (fRotate) { | 
|  206                         SkMatrix rotate; |  206                         SkMatrix rotate; | 
|  207                         rotate.setRotate(SkIntToScalar(rot)); |  207                         rotate.setRotate(SkIntToScalar(rot)); | 
|  208                         canvas->concat(rotate); |  208                         canvas->concat(rotate); | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
|  236     SkCanvas::PointMode fMode; |  236     SkCanvas::PointMode fMode; | 
|  237     const char* fName; |  237     const char* fName; | 
|  238  |  238  | 
|  239     BlitMaskBench(SkCanvas::PointMode mode, |  239     BlitMaskBench(SkCanvas::PointMode mode, | 
|  240                   BlitMaskBench::kMaskType type, const char* name) : |  240                   BlitMaskBench::kMaskType type, const char* name) : | 
|  241         RectBench(2), fMode(mode), _type(type) { |  241         RectBench(2), fMode(mode), _type(type) { | 
|  242         fName = name; |  242         fName = name; | 
|  243     } |  243     } | 
|  244  |  244  | 
|  245 protected: |  245 protected: | 
|  246     virtual void onDraw(SkCanvas* canvas) { |  246     virtual void onDraw(const int loops, SkCanvas* canvas) { | 
|  247         SkScalar gSizes[] = { |  247         SkScalar gSizes[] = { | 
|  248             SkIntToScalar(13), SkIntToScalar(24) |  248             SkIntToScalar(13), SkIntToScalar(24) | 
|  249         }; |  249         }; | 
|  250         size_t sizes = SK_ARRAY_COUNT(gSizes); |  250         size_t sizes = SK_ARRAY_COUNT(gSizes); | 
|  251  |  251  | 
|  252         if (FLAGS_strokeWidth >= 0) { |  252         if (FLAGS_strokeWidth >= 0) { | 
|  253             gSizes[0] = (SkScalar)FLAGS_strokeWidth; |  253             gSizes[0] = (SkScalar)FLAGS_strokeWidth; | 
|  254             sizes = 1; |  254             sizes = 1; | 
|  255         } |  255         } | 
|  256         SkRandom rand; |  256         SkRandom rand; | 
|  257         SkColor color = 0xFF000000; |  257         SkColor color = 0xFF000000; | 
|  258         U8CPU alpha = 0xFF; |  258         U8CPU alpha = 0xFF; | 
|  259         SkPaint paint; |  259         SkPaint paint; | 
|  260         paint.setStrokeCap(SkPaint::kRound_Cap); |  260         paint.setStrokeCap(SkPaint::kRound_Cap); | 
|  261         if (_type == KMaskShader) { |  261         if (_type == KMaskShader) { | 
|  262             SkBitmap srcBM; |  262             SkBitmap srcBM; | 
|  263             srcBM.setConfig(SkBitmap::kARGB_8888_Config, 10, 1); |  263             srcBM.setConfig(SkBitmap::kARGB_8888_Config, 10, 1); | 
|  264             srcBM.allocPixels(); |  264             srcBM.allocPixels(); | 
|  265             srcBM.eraseColor(0xFF00FF00); |  265             srcBM.eraseColor(0xFF00FF00); | 
|  266  |  266  | 
|  267             SkShader* s; |  267             SkShader* s; | 
|  268             s  = SkShader::CreateBitmapShader(srcBM, SkShader::kClamp_TileMode, |  268             s  = SkShader::CreateBitmapShader(srcBM, SkShader::kClamp_TileMode, | 
|  269                                               SkShader::kClamp_TileMode); |  269                                               SkShader::kClamp_TileMode); | 
|  270             paint.setShader(s)->unref(); |  270             paint.setShader(s)->unref(); | 
|  271         } |  271         } | 
|  272         for (int loop = 0; loop < this->getLoops(); loop++) { |  272         for (int loop = 0; loop < loops; loop++) { | 
|  273             for (size_t i = 0; i < sizes; i++) { |  273             for (size_t i = 0; i < sizes; i++) { | 
|  274                 switch (_type) { |  274                 switch (_type) { | 
|  275                     case kMaskOpaque: |  275                     case kMaskOpaque: | 
|  276                         color = fColors[i]; |  276                         color = fColors[i]; | 
|  277                         alpha = 0xFF; |  277                         alpha = 0xFF; | 
|  278                         break; |  278                         break; | 
|  279                     case kMaskBlack: |  279                     case kMaskBlack: | 
|  280                         alpha = 0xFF; |  280                         alpha = 0xFF; | 
|  281                         color = 0xFF000000; |  281                         color = 0xFF000000; | 
|  282                         break; |  282                         break; | 
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  334                       BlitMaskBench::kMaskBlack, "maskblack") |  334                       BlitMaskBench::kMaskBlack, "maskblack") | 
|  335                       ); ) |  335                       ); ) | 
|  336 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, |  336 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, | 
|  337                       (SkCanvas::kPoints_PointMode, |  337                       (SkCanvas::kPoints_PointMode, | 
|  338                       BlitMaskBench::kMaskColor, "maskcolor") |  338                       BlitMaskBench::kMaskColor, "maskcolor") | 
|  339                       ); ) |  339                       ); ) | 
|  340 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, |  340 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, | 
|  341                      (SkCanvas::kPoints_PointMode, |  341                      (SkCanvas::kPoints_PointMode, | 
|  342                      BlitMaskBench::KMaskShader, "maskshader") |  342                      BlitMaskBench::KMaskShader, "maskshader") | 
|  343                      ); ) |  343                      ); ) | 
| OLD | NEW |