OLD | NEW |
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 Loading... |
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 (NULL != context) { | 128 if (context) { |
129 GrTextureDesc desc; | 129 GrTextureDesc desc; |
130 desc.fWidth = w; | 130 desc.fWidth = w; |
131 desc.fHeight = h; | 131 desc.fHeight = h; |
132 desc.fConfig = SkImageInfo2GrPixelConfig(baseCanvas->imageInfo()); | 132 desc.fConfig = SkImageInfo2GrPixelConfig(baseCanvas->imageInfo()); |
133 desc.fFlags = kRenderTarget_GrTextureFlagBit; | 133 desc.fFlags = kRenderTarget_GrTextureFlagBit; |
134 SkAutoTUnref<GrSurface> surface(context->createUncachedTexture(desc,
NULL, 0)); | 134 SkAutoTUnref<GrSurface> surface(context->createUncachedTexture(desc,
NULL, 0)); |
135 SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(surface.get())
); | 135 SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(surface.get())
); |
136 if (NULL != device.get()) { | 136 if (device.get()) { |
137 tempCanvas = SkNEW_ARGS(SkCanvas, (device.get())); | 137 tempCanvas = SkNEW_ARGS(SkCanvas, (device.get())); |
138 } | 138 } |
139 } | 139 } |
140 #endif | 140 #endif |
141 return tempCanvas; | 141 return tempCanvas; |
142 } | 142 } |
143 | 143 |
144 void drawMode(SkCanvas* canvas, | 144 void drawMode(SkCanvas* canvas, |
145 int x, int y, int w, int h, | 145 int x, int y, int w, int h, |
146 const SkPaint& modePaint, SkCanvas* layerCanvas) { | 146 const SkPaint& modePaint, SkCanvas* layerCanvas) { |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 SkAutoTUnref<SkShader> fBmpShader; | 237 SkAutoTUnref<SkShader> fBmpShader; |
238 | 238 |
239 typedef GM INHERITED; | 239 typedef GM INHERITED; |
240 }; | 240 }; |
241 | 241 |
242 ////////////////////////////////////////////////////////////////////////////// | 242 ////////////////////////////////////////////////////////////////////////////// |
243 | 243 |
244 DEF_GM(return new Xfermodes3GM;) | 244 DEF_GM(return new Xfermodes3GM;) |
245 | 245 |
246 } | 246 } |
OLD | NEW |