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

Side by Side Diff: src/core/SkMultiPictureDraw.cpp

Issue 1930623003: Clean up test drawContext usage (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix typo Created 4 years, 7 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 | « src/core/SkCanvas.cpp ('k') | src/gpu/SkGpuDevice.h » ('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 2014 Google Inc. 2 * Copyright 2014 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 7
8 // Need to include something before #if SK_SUPPORT_GPU so that the Android 8 // Need to include something before #if SK_SUPPORT_GPU so that the Android
9 // framework build, which gets its defines from SkTypes rather than a makefile, 9 // framework build, which gets its defines from SkTypes rather than a makefile,
10 // has the definition before checking it. 10 // has the definition before checking it.
11 #include "SkCanvas.h" 11 #include "SkCanvas.h"
12 #include "SkCanvasPriv.h" 12 #include "SkCanvasPriv.h"
13 #include "SkMultiPictureDraw.h" 13 #include "SkMultiPictureDraw.h"
14 #include "SkPicture.h" 14 #include "SkPicture.h"
15 #include "SkTaskGroup.h" 15 #include "SkTaskGroup.h"
16 16
17 #if SK_SUPPORT_GPU 17 #if SK_SUPPORT_GPU
18 #include "GrContext.h" 18 #include "GrContext.h"
19 #include "GrDrawContext.h"
19 #include "GrLayerHoister.h" 20 #include "GrLayerHoister.h"
20 #include "GrRecordReplaceDraw.h" 21 #include "GrRecordReplaceDraw.h"
21 #include "GrRenderTarget.h" 22 #include "GrRenderTarget.h"
22 #endif 23 #endif
23 24
24 void SkMultiPictureDraw::DrawData::draw() { 25 void SkMultiPictureDraw::DrawData::draw() {
25 fCanvas->drawPicture(fPicture, &fMatrix, fPaint); 26 fCanvas->drawPicture(fPicture, &fMatrix, fPaint);
26 } 27 }
27 28
28 void SkMultiPictureDraw::DrawData::init(SkCanvas* canvas, const SkPicture* pictu re, 29 void SkMultiPictureDraw::DrawData::init(SkCanvas* canvas, const SkPicture* pictu re,
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 126
126 if (!data.fPaint) { 127 if (!data.fPaint) {
127 SkRect clipBounds; 128 SkRect clipBounds;
128 if (!data.fCanvas->getClipBounds(&clipBounds)) { 129 if (!data.fCanvas->getClipBounds(&clipBounds)) {
129 continue; 130 continue;
130 } 131 }
131 132
132 SkMatrix initialMatrix = data.fCanvas->getTotalMatrix(); 133 SkMatrix initialMatrix = data.fCanvas->getTotalMatrix();
133 initialMatrix.preConcat(data.fMatrix); 134 initialMatrix.preConcat(data.fMatrix);
134 135
135 GrRenderTarget* rt = data.fCanvas->internal_private_accessTopLayerRe nderTarget(); 136 GrDrawContext* dc = data.fCanvas->internal_private_accessTopLayerDra wContext();
136 SkASSERT(rt); 137 SkASSERT(dc);
137 138
138 // TODO: sorting the cacheable layers from smallest to largest 139 // TODO: sorting the cacheable layers from smallest to largest
139 // would improve the packing and reduce the number of swaps 140 // would improve the packing and reduce the number of swaps
140 // TODO: another optimization would be to make a first pass to 141 // TODO: another optimization would be to make a first pass to
141 // lock any required layer that is already in the atlas 142 // lock any required layer that is already in the atlas
142 GrLayerHoister::FindLayersToAtlas(context, data.fPicture, initialMat rix, 143 GrLayerHoister::FindLayersToAtlas(context, data.fPicture, initialMat rix,
143 clipBounds, 144 clipBounds,
144 &atlasedNeedRendering, &atlasedRec ycled, 145 &atlasedNeedRendering, &atlasedRec ycled,
145 rt->numColorSamples()); 146 dc->numColorSamples());
146 } 147 }
147 } 148 }
148 149
149 GrLayerHoister::DrawLayersToAtlas(context, atlasedNeedRendering); 150 GrLayerHoister::DrawLayersToAtlas(context, atlasedNeedRendering);
150 151
151 SkTDArray<GrHoistedLayer> needRendering, recycled; 152 SkTDArray<GrHoistedLayer> needRendering, recycled;
152 #endif 153 #endif
153 154
154 for (int i = 0; i < count; ++i) { 155 for (int i = 0; i < count; ++i) {
155 const DrawData& data = fGPUDrawData[i]; 156 const DrawData& data = fGPUDrawData[i];
156 SkCanvas* canvas = data.fCanvas; 157 SkCanvas* canvas = data.fCanvas;
157 const SkPicture* picture = data.fPicture; 158 const SkPicture* picture = data.fPicture;
158 159
159 #if !defined(SK_IGNORE_GPU_LAYER_HOISTING) && SK_SUPPORT_GPU 160 #if !defined(SK_IGNORE_GPU_LAYER_HOISTING) && SK_SUPPORT_GPU
160 if (!data.fPaint) { 161 if (!data.fPaint) {
161 162
162 SkRect clipBounds; 163 SkRect clipBounds;
163 if (!canvas->getClipBounds(&clipBounds)) { 164 if (!canvas->getClipBounds(&clipBounds)) {
164 continue; 165 continue;
165 } 166 }
166 167
167 SkAutoCanvasMatrixPaint acmp(canvas, &data.fMatrix, data.fPaint, pic ture->cullRect()); 168 SkAutoCanvasMatrixPaint acmp(canvas, &data.fMatrix, data.fPaint, pic ture->cullRect());
168 169
169 const SkMatrix initialMatrix = canvas->getTotalMatrix(); 170 const SkMatrix initialMatrix = canvas->getTotalMatrix();
170 171
171 GrRenderTarget* rt = data.fCanvas->internal_private_accessTopLayerRe nderTarget(); 172 GrDrawContext* dc = data.fCanvas->internal_private_accessTopLayerDra wContext();
172 SkASSERT(rt); 173 SkASSERT(dc);
173 174
174 // Find the layers required by this canvas. It will return atlased 175 // Find the layers required by this canvas. It will return atlased
175 // layers in the 'recycled' list since they have already been drawn. 176 // layers in the 'recycled' list since they have already been drawn.
176 GrLayerHoister::FindLayersToHoist(context, picture, initialMatrix, 177 GrLayerHoister::FindLayersToHoist(context, picture, initialMatrix,
177 clipBounds, &needRendering, &recyc led, 178 clipBounds, &needRendering, &recyc led,
178 rt->numColorSamples()); 179 dc->numColorSamples());
179 180
180 GrLayerHoister::DrawLayers(context, needRendering); 181 GrLayerHoister::DrawLayers(context, needRendering);
181 182
182 // Render the entire picture using new layers 183 // Render the entire picture using new layers
183 GrRecordReplaceDraw(picture, canvas, context->getLayerCache(), 184 GrRecordReplaceDraw(picture, canvas, context->getLayerCache(),
184 initialMatrix, nullptr); 185 initialMatrix, nullptr);
185 186
186 GrLayerHoister::UnlockLayers(context, needRendering); 187 GrLayerHoister::UnlockLayers(context, needRendering);
187 GrLayerHoister::UnlockLayers(context, recycled); 188 GrLayerHoister::UnlockLayers(context, recycled);
188 189
189 needRendering.rewind(); 190 needRendering.rewind();
190 recycled.rewind(); 191 recycled.rewind();
191 } else 192 } else
192 #endif 193 #endif
193 { 194 {
194 canvas->drawPicture(picture, &data.fMatrix, data.fPaint); 195 canvas->drawPicture(picture, &data.fMatrix, data.fPaint);
195 } 196 }
196 if (flush) { 197 if (flush) {
197 canvas->flush(); 198 canvas->flush();
198 } 199 }
199 } 200 }
200 201
201 #if !defined(SK_IGNORE_GPU_LAYER_HOISTING) && SK_SUPPORT_GPU 202 #if !defined(SK_IGNORE_GPU_LAYER_HOISTING) && SK_SUPPORT_GPU
202 GrLayerHoister::UnlockLayers(context, atlasedNeedRendering); 203 GrLayerHoister::UnlockLayers(context, atlasedNeedRendering);
203 GrLayerHoister::UnlockLayers(context, atlasedRecycled); 204 GrLayerHoister::UnlockLayers(context, atlasedRecycled);
204 GrLayerHoister::End(context); 205 GrLayerHoister::End(context);
205 #endif 206 #endif
206 } 207 }
OLDNEW
« no previous file with comments | « src/core/SkCanvas.cpp ('k') | src/gpu/SkGpuDevice.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698