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

Side by Side Diff: skia/ext/benchmarking_canvas.cc

Issue 895853003: Update from https://crrev.com/314320 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 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 | « skia/ext/analysis_canvas.cc ('k') | skia/ext/event_tracer_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/containers/hash_tables.h" 5 #include "base/containers/hash_tables.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "skia/ext/benchmarking_canvas.h" 8 #include "skia/ext/benchmarking_canvas.h"
9 #include "third_party/skia/include/core/SkSurface.h" 9 #include "third_party/skia/include/core/SkSurface.h"
10 #include "third_party/skia/include/utils/SkProxyCanvas.h" 10 #include "third_party/skia/include/utils/SkNWayCanvas.h"
11 11
12 namespace skia { 12 namespace skia {
13 13
14 class AutoStamper { 14 class AutoStamper {
15 public: 15 public:
16 AutoStamper(TimingCanvas* timing_canvas); 16 AutoStamper(TimingCanvas* timing_canvas);
17 ~AutoStamper(); 17 ~AutoStamper();
18 18
19 private: 19 private:
20 TimingCanvas* timing_canvas_; 20 TimingCanvas* timing_canvas_;
21 base::TimeTicks start_ticks_; 21 base::TimeTicks start_ticks_;
22 }; 22 };
23 23
24 class TimingCanvas : public SkProxyCanvas { 24 class TimingCanvas : public SkNWayCanvas {
25 public: 25 public:
26 TimingCanvas(int width, int height, const BenchmarkingCanvas* track_canvas) 26 TimingCanvas(int width, int height, const BenchmarkingCanvas* track_canvas)
27 : tracking_canvas_(track_canvas) { 27 : SkNWayCanvas(width, height)
28 , tracking_canvas_(track_canvas) {
28 surface_ = skia::AdoptRef(SkSurface::NewRasterN32Premul(width, height)); 29 surface_ = skia::AdoptRef(SkSurface::NewRasterN32Premul(width, height));
29 30
30 setProxy(surface_->getCanvas()); 31 addCanvas(surface_->getCanvas());
31 } 32 }
32 33
33 ~TimingCanvas() override {} 34 ~TimingCanvas() override {}
34 35
35 double GetTime(size_t index) { 36 double GetTime(size_t index) {
36 TimingsMap::const_iterator timing_info = timings_map_.find(index); 37 TimingsMap::const_iterator timing_info = timings_map_.find(index);
37 return timing_info != timings_map_.end() 38 return timing_info != timings_map_.end()
38 ? timing_info->second.InMillisecondsF() 39 ? timing_info->second.InMillisecondsF()
39 : 0.0; 40 : 0.0;
40 } 41 }
41 42
42 // SkCanvas overrides. 43 // SkCanvas overrides.
43 void willSave() override { 44 void willSave() override {
44 AutoStamper stamper(this); 45 AutoStamper stamper(this);
45 SkProxyCanvas::willSave(); 46 SkNWayCanvas::willSave();
46 } 47 }
47 48
48 SaveLayerStrategy willSaveLayer(const SkRect* bounds, 49 SaveLayerStrategy willSaveLayer(const SkRect* bounds,
49 const SkPaint* paint, 50 const SkPaint* paint,
50 SaveFlags flags) override { 51 SaveFlags flags) override {
51 AutoStamper stamper(this); 52 AutoStamper stamper(this);
52 return SkProxyCanvas::willSaveLayer(bounds, paint, flags); 53 return SkNWayCanvas::willSaveLayer(bounds, paint, flags);
53 } 54 }
54 55
55 void willRestore() override { 56 void willRestore() override {
56 AutoStamper stamper(this); 57 AutoStamper stamper(this);
57 SkProxyCanvas::willRestore(); 58 SkNWayCanvas::willRestore();
58 } 59 }
59 60
60 void onDrawPaint(const SkPaint& paint) override { 61 void onDrawPaint(const SkPaint& paint) override {
61 AutoStamper stamper(this); 62 AutoStamper stamper(this);
62 SkProxyCanvas::onDrawPaint(paint); 63 SkNWayCanvas::onDrawPaint(paint);
63 } 64 }
64 65
65 void onDrawPoints(PointMode mode, 66 void onDrawPoints(PointMode mode,
66 size_t count, 67 size_t count,
67 const SkPoint pts[], 68 const SkPoint pts[],
68 const SkPaint& paint) override { 69 const SkPaint& paint) override {
69 AutoStamper stamper(this); 70 AutoStamper stamper(this);
70 SkProxyCanvas::onDrawPoints(mode, count, pts, paint); 71 SkNWayCanvas::onDrawPoints(mode, count, pts, paint);
71 } 72 }
72 73
73 void onDrawOval(const SkRect& rect, const SkPaint& paint) override { 74 void onDrawOval(const SkRect& rect, const SkPaint& paint) override {
74 AutoStamper stamper(this); 75 AutoStamper stamper(this);
75 SkProxyCanvas::onDrawOval(rect, paint); 76 SkNWayCanvas::onDrawOval(rect, paint);
76 } 77 }
77 78
78 void onDrawRect(const SkRect& rect, const SkPaint& paint) override { 79 void onDrawRect(const SkRect& rect, const SkPaint& paint) override {
79 AutoStamper stamper(this); 80 AutoStamper stamper(this);
80 SkProxyCanvas::onDrawRect(rect, paint); 81 SkNWayCanvas::onDrawRect(rect, paint);
81 } 82 }
82 83
83 void onDrawRRect(const SkRRect& rrect, const SkPaint& paint) override { 84 void onDrawRRect(const SkRRect& rrect, const SkPaint& paint) override {
84 AutoStamper stamper(this); 85 AutoStamper stamper(this);
85 SkProxyCanvas::onDrawRRect(rrect, paint); 86 SkNWayCanvas::onDrawRRect(rrect, paint);
86 } 87 }
87 88
88 void onDrawPath(const SkPath& path, const SkPaint& paint) override { 89 void onDrawPath(const SkPath& path, const SkPaint& paint) override {
89 AutoStamper stamper(this); 90 AutoStamper stamper(this);
90 SkProxyCanvas::onDrawPath(path, paint); 91 SkNWayCanvas::onDrawPath(path, paint);
91 } 92 }
92 93
93 void onDrawBitmap(const SkBitmap& bitmap, 94 void onDrawBitmap(const SkBitmap& bitmap,
94 SkScalar left, 95 SkScalar left,
95 SkScalar top, 96 SkScalar top,
96 const SkPaint* paint) override { 97 const SkPaint* paint) override {
97 AutoStamper stamper(this); 98 AutoStamper stamper(this);
98 SkProxyCanvas::onDrawBitmap(bitmap, left, top, paint); 99 SkNWayCanvas::onDrawBitmap(bitmap, left, top, paint);
99 } 100 }
100 101
101 void onDrawBitmapRect(const SkBitmap& bitmap, 102 void onDrawBitmapRect(const SkBitmap& bitmap,
102 const SkRect* src, 103 const SkRect* src,
103 const SkRect& dst, 104 const SkRect& dst,
104 const SkPaint* paint, 105 const SkPaint* paint,
105 DrawBitmapRectFlags flags) override { 106 DrawBitmapRectFlags flags) override {
106 AutoStamper stamper(this); 107 AutoStamper stamper(this);
107 SkProxyCanvas::onDrawBitmapRect(bitmap, src, dst, paint, flags); 108 SkNWayCanvas::onDrawBitmapRect(bitmap, src, dst, paint, flags);
108 } 109 }
109 110
110 void onDrawSprite(const SkBitmap& bitmap, 111 void onDrawSprite(const SkBitmap& bitmap,
111 int left, 112 int left,
112 int top, 113 int top,
113 const SkPaint* paint) override { 114 const SkPaint* paint) override {
114 AutoStamper stamper(this); 115 AutoStamper stamper(this);
115 SkProxyCanvas::onDrawSprite(bitmap, left, top, paint); 116 SkNWayCanvas::onDrawSprite(bitmap, left, top, paint);
116 } 117 }
117 118
118 void onDrawVertices(VertexMode vmode, 119 void onDrawVertices(VertexMode vmode,
119 int vertexCount, 120 int vertexCount,
120 const SkPoint vertices[], 121 const SkPoint vertices[],
121 const SkPoint texs[], 122 const SkPoint texs[],
122 const SkColor colors[], 123 const SkColor colors[],
123 SkXfermode* xmode, 124 SkXfermode* xmode,
124 const uint16_t indices[], 125 const uint16_t indices[],
125 int indexCount, 126 int indexCount,
126 const SkPaint& paint) override { 127 const SkPaint& paint) override {
127 AutoStamper stamper(this); 128 AutoStamper stamper(this);
128 SkProxyCanvas::onDrawVertices(vmode, vertexCount, vertices, texs, colors, 129 SkNWayCanvas::onDrawVertices(vmode, vertexCount, vertices, texs, colors,
129 xmode, indices, indexCount, paint); 130 xmode, indices, indexCount, paint);
130 } 131 }
131 132
132 protected: 133 protected:
133 void onDrawText(const void* text, 134 void onDrawText(const void* text,
134 size_t byteLength, 135 size_t byteLength,
135 SkScalar x, 136 SkScalar x,
136 SkScalar y, 137 SkScalar y,
137 const SkPaint& paint) override { 138 const SkPaint& paint) override {
138 AutoStamper stamper(this); 139 AutoStamper stamper(this);
139 SkProxyCanvas::onDrawText(text, byteLength, x, y, paint); 140 SkNWayCanvas::onDrawText(text, byteLength, x, y, paint);
140 } 141 }
141 142
142 void onDrawPosText(const void* text, 143 void onDrawPosText(const void* text,
143 size_t byteLength, 144 size_t byteLength,
144 const SkPoint pos[], 145 const SkPoint pos[],
145 const SkPaint& paint) override { 146 const SkPaint& paint) override {
146 AutoStamper stamper(this); 147 AutoStamper stamper(this);
147 SkProxyCanvas::onDrawPosText(text, byteLength, pos, paint); 148 SkNWayCanvas::onDrawPosText(text, byteLength, pos, paint);
148 } 149 }
149 150
150 void onDrawPosTextH(const void* text, 151 void onDrawPosTextH(const void* text,
151 size_t byteLength, 152 size_t byteLength,
152 const SkScalar xpos[], 153 const SkScalar xpos[],
153 SkScalar constY, 154 SkScalar constY,
154 const SkPaint& paint) override { 155 const SkPaint& paint) override {
155 AutoStamper stamper(this); 156 AutoStamper stamper(this);
156 SkProxyCanvas::onDrawPosTextH(text, byteLength, xpos, constY, paint); 157 SkNWayCanvas::onDrawPosTextH(text, byteLength, xpos, constY, paint);
157 } 158 }
158 159
159 void onDrawTextOnPath(const void* text, 160 void onDrawTextOnPath(const void* text,
160 size_t byteLength, 161 size_t byteLength,
161 const SkPath& path, 162 const SkPath& path,
162 const SkMatrix* matrix, 163 const SkMatrix* matrix,
163 const SkPaint& paint) override { 164 const SkPaint& paint) override {
164 AutoStamper stamper(this); 165 AutoStamper stamper(this);
165 SkProxyCanvas::onDrawTextOnPath(text, byteLength, path, matrix, paint); 166 SkNWayCanvas::onDrawTextOnPath(text, byteLength, path, matrix, paint);
166 } 167 }
167 168
168 void onClipRect(const SkRect& rect, 169 void onClipRect(const SkRect& rect,
169 SkRegion::Op op, 170 SkRegion::Op op,
170 ClipEdgeStyle edge_style) override { 171 ClipEdgeStyle edge_style) override {
171 AutoStamper stamper(this); 172 AutoStamper stamper(this);
172 SkProxyCanvas::onClipRect(rect, op, edge_style); 173 SkNWayCanvas::onClipRect(rect, op, edge_style);
173 } 174 }
174 175
175 void onClipRRect(const SkRRect& rrect, 176 void onClipRRect(const SkRRect& rrect,
176 SkRegion::Op op, 177 SkRegion::Op op,
177 ClipEdgeStyle edge_style) override { 178 ClipEdgeStyle edge_style) override {
178 AutoStamper stamper(this); 179 AutoStamper stamper(this);
179 SkProxyCanvas::onClipRRect(rrect, op, edge_style); 180 SkNWayCanvas::onClipRRect(rrect, op, edge_style);
180 } 181 }
181 182
182 void onClipPath(const SkPath& path, 183 void onClipPath(const SkPath& path,
183 SkRegion::Op op, 184 SkRegion::Op op,
184 ClipEdgeStyle edge_style) override { 185 ClipEdgeStyle edge_style) override {
185 AutoStamper stamper(this); 186 AutoStamper stamper(this);
186 SkProxyCanvas::onClipPath(path, op, edge_style); 187 SkNWayCanvas::onClipPath(path, op, edge_style);
187 } 188 }
188 189
189 void onClipRegion(const SkRegion& region, SkRegion::Op op) override { 190 void onClipRegion(const SkRegion& region, SkRegion::Op op) override {
190 AutoStamper stamper(this); 191 AutoStamper stamper(this);
191 SkProxyCanvas::onClipRegion(region, op); 192 SkNWayCanvas::onClipRegion(region, op);
192 } 193 }
193 194
194 void onDrawPicture(const SkPicture* picture, 195 void onDrawPicture(const SkPicture* picture,
195 const SkMatrix* matrix, 196 const SkMatrix* matrix,
196 const SkPaint* paint) override { 197 const SkPaint* paint) override {
197 AutoStamper stamper(this); 198 AutoStamper stamper(this);
198 SkProxyCanvas::onDrawPicture(picture, matrix, paint); 199 SkNWayCanvas::onDrawPicture(picture, matrix, paint);
199 } 200 }
200 201
201 private: 202 private:
202 typedef base::hash_map<size_t, base::TimeDelta> TimingsMap; 203 typedef base::hash_map<size_t, base::TimeDelta> TimingsMap;
203 TimingsMap timings_map_; 204 TimingsMap timings_map_;
204 205
205 skia::RefPtr<SkSurface> surface_; 206 skia::RefPtr<SkSurface> surface_;
206 207
207 friend class AutoStamper; 208 friend class AutoStamper;
208 const BenchmarkingCanvas* tracking_canvas_; 209 const BenchmarkingCanvas* tracking_canvas_;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 DCHECK_LT(index, static_cast<size_t>(debug_canvas_->getSize())); 242 DCHECK_LT(index, static_cast<size_t>(debug_canvas_->getSize()));
242 return debug_canvas_->getDrawCommandAt(index); 243 return debug_canvas_->getDrawCommandAt(index);
243 } 244 }
244 245
245 double BenchmarkingCanvas::GetTime(size_t index) { 246 double BenchmarkingCanvas::GetTime(size_t index) {
246 DCHECK_LT(index, static_cast<size_t>(debug_canvas_->getSize())); 247 DCHECK_LT(index, static_cast<size_t>(debug_canvas_->getSize()));
247 return timing_canvas_->GetTime(index); 248 return timing_canvas_->GetTime(index);
248 } 249 }
249 250
250 } // namespace skia 251 } // namespace skia
OLDNEW
« no previous file with comments | « skia/ext/analysis_canvas.cc ('k') | skia/ext/event_tracer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698