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

Side by Side Diff: bench/DeferredCanvasBench.cpp

Issue 16040002: Changing SkDeferredCanvas to use factories for creation (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 6 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
« no previous file with comments | « no previous file | bench/DeferredSurfaceCopyBench.cpp » ('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 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 #include "SkBenchmark.h" 7 #include "SkBenchmark.h"
8 #include "SkDeferredCanvas.h" 8 #include "SkDeferredCanvas.h"
9 #include "SkDevice.h" 9 #include "SkDevice.h"
10 #include "SkString.h" 10 #include "SkString.h"
(...skipping 11 matching lines...) Expand all
22 }; 22 };
23 protected: 23 protected:
24 virtual const char* onGetName() { 24 virtual const char* onGetName() {
25 return fName.c_str(); 25 return fName.c_str();
26 } 26 }
27 27
28 virtual void onDraw(SkCanvas* canvas) { 28 virtual void onDraw(SkCanvas* canvas) {
29 SkDevice *device = canvas->getDevice()->createCompatibleDevice( 29 SkDevice *device = canvas->getDevice()->createCompatibleDevice(
30 SkBitmap::kARGB_8888_Config, CANVAS_WIDTH, CANVAS_HEIGHT, false); 30 SkBitmap::kARGB_8888_Config, CANVAS_WIDTH, CANVAS_HEIGHT, false);
31 31
32 SkDeferredCanvas deferredCanvas(device); 32 SkAutoTUnref<SkDeferredCanvas> deferredCanvas(
33 33 #if SK_DEFERRED_CANVAS_USES_FACTORIES
34 SkDeferredCanvas::Create(device));
35 #else
36 SkNEW_ARGS(SkDeferredCanvas, (device)));
37 #endif
34 device->unref(); 38 device->unref();
35 39
36 initDeferredCanvas(deferredCanvas); 40 initDeferredCanvas(deferredCanvas);
37 41
38 for (int i = 0; i < N; i++) { 42 for (int i = 0; i < N; i++) {
39 drawInDeferredCanvas(deferredCanvas); 43 drawInDeferredCanvas(deferredCanvas);
40 } 44 }
41 45
42 finalizeDeferredCanvas(deferredCanvas); 46 finalizeDeferredCanvas(deferredCanvas);
43 deferredCanvas.flush(); 47 deferredCanvas->flush();
44 } 48 }
45 49
46 virtual void initDeferredCanvas(SkDeferredCanvas& canvas) = 0; 50 virtual void initDeferredCanvas(SkDeferredCanvas* canvas) = 0;
47 virtual void drawInDeferredCanvas(SkDeferredCanvas& canvas) = 0; 51 virtual void drawInDeferredCanvas(SkDeferredCanvas* canvas) = 0;
48 virtual void finalizeDeferredCanvas(SkDeferredCanvas& canvas) = 0; 52 virtual void finalizeDeferredCanvas(SkDeferredCanvas* canvas) = 0;
49 53
50 SkString fName; 54 SkString fName;
51 55
52 private: 56 private:
53 typedef SkBenchmark INHERITED; 57 typedef SkBenchmark INHERITED;
54 }; 58 };
55 59
56 class SimpleNotificationClient : public SkDeferredCanvas::NotificationClient { 60 class SimpleNotificationClient : public SkDeferredCanvas::NotificationClient {
57 public: 61 public:
58 SimpleNotificationClient() : fDummy(false) {} 62 SimpleNotificationClient() : fDummy(false) {}
(...skipping 15 matching lines...) Expand all
74 public: 78 public:
75 DeferredRecordBench(void* param) 79 DeferredRecordBench(void* param)
76 : INHERITED(param, "record") { 80 : INHERITED(param, "record") {
77 } 81 }
78 82
79 enum { 83 enum {
80 M = SkBENCHLOOP(700), // number of individual draws in each loop 84 M = SkBENCHLOOP(700), // number of individual draws in each loop
81 }; 85 };
82 protected: 86 protected:
83 87
84 virtual void initDeferredCanvas(SkDeferredCanvas& canvas) SK_OVERRIDE { 88 virtual void initDeferredCanvas(SkDeferredCanvas* canvas) SK_OVERRIDE {
85 canvas.setNotificationClient(&fNotificationClient); 89 canvas->setNotificationClient(&fNotificationClient);
86 } 90 }
87 91
88 virtual void drawInDeferredCanvas(SkDeferredCanvas& canvas) SK_OVERRIDE { 92 virtual void drawInDeferredCanvas(SkDeferredCanvas* canvas) SK_OVERRIDE {
89 SkRect rect; 93 SkRect rect;
90 rect.setXYWH(0, 0, 10, 10); 94 rect.setXYWH(0, 0, 10, 10);
91 SkPaint paint; 95 SkPaint paint;
92 for (int i = 0; i < M; i++) { 96 for (int i = 0; i < M; i++) {
93 canvas.save(SkCanvas::kMatrixClip_SaveFlag); 97 canvas->save(SkCanvas::kMatrixClip_SaveFlag);
94 canvas.translate(SkIntToScalar(i * 27 % CANVAS_WIDTH), SkIntToScalar (i * 13 % CANVAS_HEIGHT)); 98 canvas->translate(SkIntToScalar(i * 27 % CANVAS_WIDTH), SkIntToScala r(i * 13 % CANVAS_HEIGHT));
95 canvas.drawRect(rect, paint); 99 canvas->drawRect(rect, paint);
96 canvas.restore(); 100 canvas->restore();
97 } 101 }
98 } 102 }
99 103
100 virtual void finalizeDeferredCanvas(SkDeferredCanvas& canvas) SK_OVERRIDE { 104 virtual void finalizeDeferredCanvas(SkDeferredCanvas* canvas) SK_OVERRIDE {
101 canvas.clear(0x0); 105 canvas->clear(0x0);
102 canvas.setNotificationClient(NULL); 106 canvas->setNotificationClient(NULL);
103 } 107 }
104 108
105 private: 109 private:
106 typedef DeferredCanvasBench INHERITED; 110 typedef DeferredCanvasBench INHERITED;
107 SimpleNotificationClient fNotificationClient; 111 SimpleNotificationClient fNotificationClient;
108 }; 112 };
109 113
110 114
111 /////////////////////////////////////////////////////////////////////////////// 115 ///////////////////////////////////////////////////////////////////////////////
112 116
113 static SkBenchmark* Fact0(void* p) { return new DeferredRecordBench(p); } 117 static SkBenchmark* Fact0(void* p) { return new DeferredRecordBench(p); }
114 118
115 static BenchRegistry gReg0(Fact0); 119 static BenchRegistry gReg0(Fact0);
OLDNEW
« no previous file with comments | « no previous file | bench/DeferredSurfaceCopyBench.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698