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

Side by Side Diff: bench/MergeBench.cpp

Issue 14234019: Added a few bench for some image filters (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
« bench/MagnifierBench.cpp ('K') | « bench/MagnifierBench.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7 #include "SkBenchmark.h"
8 #include "SkBlurImageFilter.h"
9 #include "SkCanvas.h"
10 #include "SkColorFilter.h"
11 #include "SkColorFilterImageFilter.h"
12 #include "SkMergeImageFilter.h"
13 #include "SkOffsetImageFilter.h"
14 #include "SkTestImageFilters.h"
15
16 #define FILTER_WIDTH SkIntToScalar(150)
17 #define FILTER_HEIGHT SkIntToScalar(200)
18
19 class MergeBench : public SkBenchmark {
Stephen White 2013/04/15 15:34:21 This bench seems to test a lot more than just Merg
20 public:
21 MergeBench(void* param) : INHERITED(param) {
22 }
23
24 protected:
25 virtual const char* onGetName() SK_OVERRIDE {
26 return "merge";
27 }
28
29 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
30 static SkImageFilter* (*gFilterProc[])() = {
31 mergeOffsetDown, mergeOffsetDownComposeColor, mergeOffsetBlurCompose Color
32 };
33
34 const SkRect bounds = SkRect::MakeWH(FILTER_WIDTH, FILTER_HEIGHT);
35
36 const SkScalar dx = bounds.width() * 8 / 7;
37 const SkScalar dy = bounds.height() * 8 / 7;
38
39 canvas->translate(SkIntToScalar(8), SkIntToScalar(8));
40
41 for (size_t i = 0; i < SK_ARRAY_COUNT(gFilterProc); ++i) {
Stephen White 2013/04/15 15:34:21 Again, should be separate bench test cases.
sugoi1 2013/04/19 18:09:42 I only kept 1, only with bitmaps, to get a better
42 int ix = i % 4;
43 int iy = i / 4;
44
45 SkAutoCanvasRestore acr(canvas, true);
46 canvas->translate(ix * dx, iy * dy);
47
48 SkPaint p;
49 p.setStyle(SkPaint::kStroke_Style);
50 canvas->drawRect(bounds, p);
51
52 SkPaint paint;
53 paint.setImageFilter(gFilterProc[i]())->unref();
54 canvas->saveLayer(&bounds, &paint);
55 draw(canvas);
56 }
57 }
58
59 private:
60 static void draw(SkCanvas* canvas) {
61 SkPaint p;
62 p.setAntiAlias(true);
63 SkRect r = SkRect::MakeWH(FILTER_WIDTH, FILTER_HEIGHT);
64 r.inset(SK_Scalar1 * 12, SK_Scalar1 * 12);
65 p.setColor(SK_ColorRED);
66 canvas->drawOval(r, p);
67 }
68
69 static SkImageFilter* mergeOffsetDown() {
70 SkImageFilter* first = new SkOffsetImageFilter(SkIntToScalar(16), SkIntT oScalar(16));
71 SkImageFilter* second = new SkDownSampleImageFilter(SK_Scalar1 / 5);
72 SkAutoUnref aur0(first);
73 SkAutoUnref aur1(second);
74 return new SkMergeImageFilter(first, second);
Stephen White 2013/04/15 15:34:21 I think it'd be better to have something that isol
sugoi1 2013/04/19 18:09:42 Removed.
75 }
76
77 static SkImageFilter* mergeOffsetDownComposeColor() {
78 SkImageFilter* outer = new SkOffsetImageFilter(SkIntToScalar(16), SkIntT oScalar(16));
79 SkImageFilter* inner = new SkDownSampleImageFilter(SK_Scalar1 / 5);
Stephen White 2013/04/15 15:34:21 I'd test SkDownSampleImageFilter separately in its
sugoi1 2013/04/19 18:09:42 Removed.
80 SkAutoUnref aur0(outer);
81 SkAutoUnref aur1(inner);
82 SkImageFilter* compose = new SkComposeImageFilter(outer, inner);
83 SkAutoUnref aur2(compose);
84
85 SkColorFilter* cf = SkColorFilter::CreateModeFilter(0x880000FF,
86 SkXfermode::kSrcIn_M ode);
87 SkAutoUnref aur3(cf);
88 SkImageFilter* blue = SkColorFilterImageFilter::Create(cf);
89 SkAutoUnref aur4(blue);
90
91 return new SkMergeImageFilter(compose, blue);
92 }
93
94 static SkImageFilter* mergeOffsetBlurComposeColor() {
95 SkImageFilter* outer = new SkOffsetImageFilter(SkIntToScalar(16), SkIntT oScalar(16));
96 SkImageFilter* inner = new SkBlurImageFilter(8, 0);
Stephen White 2013/04/15 15:34:21 Blur will probably dominate the performance time h
sugoi1 2013/04/19 18:09:42 Removed.
97 SkAutoUnref aur0(outer);
98 SkAutoUnref aur1(inner);
99 SkImageFilter* compose = new SkComposeImageFilter(outer, inner);
100 SkAutoUnref aur2(compose);
101
102 SkColorFilter* cf = SkColorFilter::CreateModeFilter(0x880000FF,
103 SkXfermode::kSrcIn_M ode);
104 SkAutoUnref aur3(cf);
105 SkImageFilter* blue = SkColorFilterImageFilter::Create(cf);
106 SkAutoUnref aur4(blue);
107
108 return new SkMergeImageFilter(compose, blue);
109 }
110
111 typedef SkBenchmark INHERITED;
112 };
113
114 ///////////////////////////////////////////////////////////////////////////////
115
116 DEF_BENCH( return new MergeBench(p); )
117
OLDNEW
« bench/MagnifierBench.cpp ('K') | « bench/MagnifierBench.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698