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

Side by Side Diff: gm/xfermodes3.cpp

Issue 848903004: Require budget decision when creating a RenderTarget SkSurface (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address initial comments Created 5 years, 11 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
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2013 Google Inc. 3 * Copyright 2013 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "gm.h" 8 #include "gm.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkGradientShader.h" 10 #include "SkGradientShader.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 * We are trying to test those. We could use saveLayer() to create small SkG puDevices but 118 * We are trying to test those. We could use saveLayer() to create small SkG puDevices but
119 * saveLayer() uses the texture cache. This means that the actual render tar get may be larger 119 * saveLayer() uses the texture cache. This means that the actual render tar get may be larger
120 * than the layer. Because the clip will contain the layer's bounds, no draw s will be full-RT. 120 * than the layer. Because the clip will contain the layer's bounds, no draw s will be full-RT.
121 * So when running on a GPU canvas we explicitly create a temporary canvas u sing a texture with 121 * So when running on a GPU canvas we explicitly create a temporary canvas u sing a texture with
122 * dimensions exactly matching the layer size. 122 * dimensions exactly matching the layer size.
123 */ 123 */
124 SkCanvas* possiblyCreateTempCanvas(SkCanvas* baseCanvas, int w, int h) { 124 SkCanvas* possiblyCreateTempCanvas(SkCanvas* baseCanvas, int w, int h) {
125 SkCanvas* tempCanvas = NULL; 125 SkCanvas* tempCanvas = NULL;
126 #if SK_SUPPORT_GPU 126 #if SK_SUPPORT_GPU
127 GrContext* context = baseCanvas->getGrContext(); 127 GrContext* context = baseCanvas->getGrContext();
128 if (context) { 128 SkImageInfo baseInfo = baseCanvas->imageInfo();
129 GrSurfaceDesc desc; 129 SkImageInfo info = SkImageInfo::Make(w, h, baseInfo.colorType(), baseInf o.alphaType(),
130 desc.fWidth = w; 130 baseInfo.profileType());
131 desc.fHeight = h; 131 SkAutoTUnref<SkSurface> surface(SkSurface::NewRenderTarget(context, SkSu rface::kNo_Budgeted,
132 desc.fConfig = SkImageInfo2GrPixelConfig(baseCanvas->imageInfo()); 132 info, 0, NULL));
133 desc.fFlags = kRenderTarget_GrSurfaceFlag; 133 if (surface) {
134 SkAutoTUnref<GrSurface> surface(context->createUncachedTexture(desc, NULL, 0)); 134 tempCanvas = SkRef(surface->getCanvas());
135 SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(surface.get(),
136 SkSurfaceProps(SkSurfaceProps::kLegacy FontHost_InitType)));
137 if (device.get()) {
138 tempCanvas = SkNEW_ARGS(SkCanvas, (device.get()));
139 }
140 } 135 }
141 #endif 136 #endif
142 return tempCanvas; 137 return tempCanvas;
143 } 138 }
144 139
145 void drawMode(SkCanvas* canvas, 140 void drawMode(SkCanvas* canvas,
146 int x, int y, int w, int h, 141 int x, int y, int w, int h,
147 const SkPaint& modePaint, SkCanvas* layerCanvas) { 142 const SkPaint& modePaint, SkCanvas* layerCanvas) {
148 canvas->save(); 143 canvas->save();
149 144
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 SkAutoTUnref<SkShader> fBmpShader; 233 SkAutoTUnref<SkShader> fBmpShader;
239 234
240 typedef GM INHERITED; 235 typedef GM INHERITED;
241 }; 236 };
242 237
243 ////////////////////////////////////////////////////////////////////////////// 238 //////////////////////////////////////////////////////////////////////////////
244 239
245 DEF_GM(return new Xfermodes3GM;) 240 DEF_GM(return new Xfermodes3GM;)
246 241
247 } 242 }
OLDNEW
« no previous file with comments | « gm/surface.cpp ('k') | include/core/SkSurface.h » ('j') | tests/SurfaceTest.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698