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

Side by Side Diff: src/gpu/SkGpuDevice.cpp

Issue 2208483004: Remove GrRenderTarget member variable from SkGpuDevice (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update to ToT Created 4 years, 4 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/gpu/SkGpuDevice.h ('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
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 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 #include "SkGpuDevice.h" 8 #include "SkGpuDevice.h"
9 9
10 #include "GrBlurUtils.h" 10 #include "GrBlurUtils.h"
11 #include "GrContext.h" 11 #include "GrContext.h"
12 #include "GrContextPriv.h" 12 #include "GrContextPriv.h"
13 #include "SkDraw.h" 13 #include "GrDrawContextPriv.h"
14 #include "GrGpu.h" 14 #include "GrGpu.h"
15 #include "GrGpuResourcePriv.h" 15 #include "GrGpuResourcePriv.h"
16 #include "GrImageIDTextureAdjuster.h" 16 #include "GrImageIDTextureAdjuster.h"
17 #include "GrStyle.h" 17 #include "GrStyle.h"
18 #include "GrTracing.h" 18 #include "GrTracing.h"
19
19 #include "SkCanvasPriv.h" 20 #include "SkCanvasPriv.h"
21 #include "SkDraw.h"
20 #include "SkErrorInternals.h" 22 #include "SkErrorInternals.h"
21 #include "SkGlyphCache.h" 23 #include "SkGlyphCache.h"
22 #include "SkGr.h" 24 #include "SkGr.h"
23 #include "SkGrPriv.h" 25 #include "SkGrPriv.h"
24 #include "SkImage_Base.h" 26 #include "SkImage_Base.h"
25 #include "SkImageCacherator.h" 27 #include "SkImageCacherator.h"
26 #include "SkImageFilter.h" 28 #include "SkImageFilter.h"
27 #include "SkImageFilterCache.h" 29 #include "SkImageFilterCache.h"
28 #include "SkLatticeIter.h" 30 #include "SkLatticeIter.h"
29 #include "SkMaskFilter.h" 31 #include "SkMaskFilter.h"
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 return nullptr; 142 return nullptr;
141 } 143 }
142 144
143 return sk_sp<SkGpuDevice>(new SkGpuDevice(std::move(drawContext), 145 return sk_sp<SkGpuDevice>(new SkGpuDevice(std::move(drawContext),
144 info.width(), info.height(), flags )); 146 info.width(), info.height(), flags ));
145 } 147 }
146 148
147 SkGpuDevice::SkGpuDevice(sk_sp<GrDrawContext> drawContext, int width, int height , unsigned flags) 149 SkGpuDevice::SkGpuDevice(sk_sp<GrDrawContext> drawContext, int width, int height , unsigned flags)
148 : INHERITED(drawContext->surfaceProps()) 150 : INHERITED(drawContext->surfaceProps())
149 , fContext(SkRef(drawContext->accessRenderTarget()->getContext())) 151 , fContext(SkRef(drawContext->accessRenderTarget()->getContext()))
150 , fRenderTarget(drawContext->renderTarget())
151 , fDrawContext(std::move(drawContext)) { 152 , fDrawContext(std::move(drawContext)) {
152 fSize.set(width, height); 153 fSize.set(width, height);
153 fOpaque = SkToBool(flags & kIsOpaque_Flag); 154 fOpaque = SkToBool(flags & kIsOpaque_Flag);
154 155
155 if (flags & kNeedClear_Flag) { 156 if (flags & kNeedClear_Flag) {
156 this->clearAll(); 157 this->clearAll();
157 } 158 }
158 } 159 }
159 160
160 sk_sp<GrDrawContext> SkGpuDevice::MakeDrawContext(GrContext* context, 161 sk_sp<GrDrawContext> SkGpuDevice::MakeDrawContext(GrContext* context,
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 // TODO: teach fRenderTarget to take ImageInfo directly to specify the src p ixels 223 // TODO: teach fRenderTarget to take ImageInfo directly to specify the src p ixels
223 GrPixelConfig config = SkImageInfo2GrPixelConfig(dstInfo, *fContext->caps()) ; 224 GrPixelConfig config = SkImageInfo2GrPixelConfig(dstInfo, *fContext->caps()) ;
224 if (kUnknown_GrPixelConfig == config) { 225 if (kUnknown_GrPixelConfig == config) {
225 return false; 226 return false;
226 } 227 }
227 228
228 uint32_t flags = 0; 229 uint32_t flags = 0;
229 if (kUnpremul_SkAlphaType == dstInfo.alphaType()) { 230 if (kUnpremul_SkAlphaType == dstInfo.alphaType()) {
230 flags = GrContext::kUnpremul_PixelOpsFlag; 231 flags = GrContext::kUnpremul_PixelOpsFlag;
231 } 232 }
232 return fRenderTarget->readPixels(x, y, dstInfo.width(), dstInfo.height(), co nfig, dstPixels, 233 return fDrawContext->accessRenderTarget()->readPixels(x, y,
233 dstRowBytes, flags); 234 dstInfo.width(), dstIn fo.height(),
235 config, dstPixels,
236 dstRowBytes, flags);
234 } 237 }
235 238
236 bool SkGpuDevice::onWritePixels(const SkImageInfo& info, const void* pixels, siz e_t rowBytes, 239 bool SkGpuDevice::onWritePixels(const SkImageInfo& info, const void* pixels, siz e_t rowBytes,
237 int x, int y) { 240 int x, int y) {
238 ASSERT_SINGLE_OWNER 241 ASSERT_SINGLE_OWNER
239 // TODO: teach fRenderTarget to take ImageInfo directly to specify the src p ixels 242 // TODO: teach fRenderTarget to take ImageInfo directly to specify the src p ixels
240 GrPixelConfig config = SkImageInfo2GrPixelConfig(info, *fContext->caps()); 243 GrPixelConfig config = SkImageInfo2GrPixelConfig(info, *fContext->caps());
241 if (kUnknown_GrPixelConfig == config) { 244 if (kUnknown_GrPixelConfig == config) {
242 return false; 245 return false;
243 } 246 }
244 uint32_t flags = 0; 247 uint32_t flags = 0;
245 if (kUnpremul_SkAlphaType == info.alphaType()) { 248 if (kUnpremul_SkAlphaType == info.alphaType()) {
246 flags = GrContext::kUnpremul_PixelOpsFlag; 249 flags = GrContext::kUnpremul_PixelOpsFlag;
247 } 250 }
248 fRenderTarget->writePixels(x, y, info.width(), info.height(), config, pixels , rowBytes, flags); 251 fDrawContext->accessRenderTarget()->writePixels(x, y, info.width(), info.hei ght(),
249 252 config, pixels, rowBytes, fl ags);
250 return true; 253 return true;
251 } 254 }
252 255
253 bool SkGpuDevice::onAccessPixels(SkPixmap* pmap) { 256 bool SkGpuDevice::onAccessPixels(SkPixmap* pmap) {
254 ASSERT_SINGLE_OWNER 257 ASSERT_SINGLE_OWNER
255 return false; 258 return false;
256 } 259 }
257 260
258 // call this every draw call, to ensure that the context reflects our state, 261 // call this every draw call, to ensure that the context reflects our state,
259 // and not the state from some other canvas/device 262 // and not the state from some other canvas/device
(...skipping 12 matching lines...) Expand all
272 ASSERT_SINGLE_OWNER 275 ASSERT_SINGLE_OWNER
273 GrColor color = 0; 276 GrColor color = 0;
274 GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice", "clearAll", fContext); 277 GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice", "clearAll", fContext);
275 SkIRect rect = SkIRect::MakeWH(this->width(), this->height()); 278 SkIRect rect = SkIRect::MakeWH(this->width(), this->height());
276 fDrawContext->clear(&rect, color, true); 279 fDrawContext->clear(&rect, color, true);
277 } 280 }
278 281
279 void SkGpuDevice::replaceDrawContext(bool shouldRetainContent) { 282 void SkGpuDevice::replaceDrawContext(bool shouldRetainContent) {
280 ASSERT_SINGLE_OWNER 283 ASSERT_SINGLE_OWNER
281 284
282 SkBudgeted budgeted = fRenderTarget->resourcePriv().isBudgeted(); 285 SkBudgeted budgeted = fDrawContext->drawContextPriv().isBudgeted();
283 286
284 sk_sp<GrDrawContext> newDC(MakeDrawContext(this->context(), 287 sk_sp<GrDrawContext> newDC(MakeDrawContext(this->context(),
285 budgeted, 288 budgeted,
286 this->imageInfo(), 289 this->imageInfo(),
287 fDrawContext->numColorSamples(), 290 fDrawContext->numColorSamples(),
288 fDrawContext->origin(), 291 fDrawContext->origin(),
289 &this->surfaceProps())); 292 &this->surfaceProps()));
290 if (!newDC) { 293 if (!newDC) {
291 return; 294 return;
292 } 295 }
293 296
294 if (shouldRetainContent) { 297 if (shouldRetainContent) {
295 if (fRenderTarget->wasDestroyed()) { 298 if (fDrawContext->wasAbandoned()) {
296 return; 299 return;
297 } 300 }
298 newDC->copySurface(fDrawContext->asTexture().get(), 301 newDC->copySurface(fDrawContext->asTexture().get(),
299 SkIRect::MakeWH(this->width(), this->height()), 302 SkIRect::MakeWH(this->width(), this->height()),
300 SkIPoint::Make(0, 0)); 303 SkIPoint::Make(0, 0));
301 } 304 }
302 305
303 SkASSERT(fDrawContext->accessRenderTarget() != newDC->accessRenderTarget());
304
305 fRenderTarget = newDC->renderTarget();
306
307 fDrawContext = newDC; 306 fDrawContext = newDC;
308 } 307 }
309 308
310 /////////////////////////////////////////////////////////////////////////////// 309 ///////////////////////////////////////////////////////////////////////////////
311 310
312 void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) { 311 void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) {
313 ASSERT_SINGLE_OWNER 312 ASSERT_SINGLE_OWNER
314 CHECK_SHOULD_DRAW(draw); 313 CHECK_SHOULD_DRAW(draw);
315 GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice", "drawPaint", fContext); 314 GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice", "drawPaint", fContext);
316 315
(...skipping 1462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1779 } 1778 }
1780 1779
1781 SkImageFilterCache* SkGpuDevice::getImageFilterCache() { 1780 SkImageFilterCache* SkGpuDevice::getImageFilterCache() {
1782 ASSERT_SINGLE_OWNER 1781 ASSERT_SINGLE_OWNER
1783 // We always return a transient cache, so it is freed after each 1782 // We always return a transient cache, so it is freed after each
1784 // filter traversal. 1783 // filter traversal.
1785 return SkImageFilterCache::Create(kDefaultImageFilterCacheSize); 1784 return SkImageFilterCache::Create(kDefaultImageFilterCacheSize);
1786 } 1785 }
1787 1786
1788 #endif 1787 #endif
OLDNEW
« no previous file with comments | « src/gpu/SkGpuDevice.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698