OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2010 Google Inc. | 2 * Copyright 2010 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 #ifndef GrContext_DEFINED | 8 #ifndef GrContext_DEFINED |
9 #define GrContext_DEFINED | 9 #define GrContext_DEFINED |
10 | 10 |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 bool enableDistanceFieldFonts); | 211 bool enableDistanceFieldFonts); |
212 | 212 |
213 /////////////////////////////////////////////////////////////////////////// | 213 /////////////////////////////////////////////////////////////////////////// |
214 // Textures | 214 // Textures |
215 | 215 |
216 /** | 216 /** |
217 * Creates a new texture in the resource cache and returns it. The caller ow
ns a | 217 * Creates a new texture in the resource cache and returns it. The caller ow
ns a |
218 * ref on the returned texture which must be balanced by a call to unref. | 218 * ref on the returned texture which must be balanced by a call to unref. |
219 * | 219 * |
220 * @param desc Description of the texture properties. | 220 * @param desc Description of the texture properties. |
221 * @param srcData Pointer to the pixel values. | 221 * @param budgeted Does the texture count against the resource cache budget
? |
| 222 * @param srcData Pointer to the pixel values (optional). |
222 * @param rowBytes The number of bytes between rows of the texture. Zero | 223 * @param rowBytes The number of bytes between rows of the texture. Zero |
223 * implies tightly packed rows. For compressed pixel config
s, this | 224 * implies tightly packed rows. For compressed pixel config
s, this |
224 * field is ignored. | 225 * field is ignored. |
225 */ | 226 */ |
226 GrTexture* createTexture(const GrSurfaceDesc& desc, const void* srcData, siz
e_t rowBytes); | 227 GrTexture* createTexture(const GrSurfaceDesc& desc, bool budgeted, const voi
d* srcData, |
| 228 size_t rowBytes); |
227 | 229 |
228 GrTexture* createTexture(const GrSurfaceDesc& desc) { | 230 GrTexture* createTexture(const GrSurfaceDesc& desc, bool budgeted) { |
229 return this->createTexture(desc, NULL, 0); | 231 return this->createTexture(desc, budgeted, NULL, 0); |
230 } | 232 } |
231 | 233 |
232 /** | 234 /** |
233 * Creates a texture that is outside the cache. Does not count against | 235 * DEPRECATED: use createTexture(). |
234 * cache's budget. | |
235 * | |
236 * TODO: Add a budgeted param to createTexture and remove this function. | |
237 */ | 236 */ |
238 GrTexture* createUncachedTexture(const GrSurfaceDesc& desc, void* srcData, s
ize_t rowBytes); | 237 GrTexture* createUncachedTexture(const GrSurfaceDesc& desc, void* srcData, s
ize_t rowBytes) { |
| 238 return this->createTexture(desc, false, srcData, rowBytes); |
| 239 } |
239 | 240 |
240 /** | 241 /** |
241 * Enum that determines how closely a returned scratch texture must match | 242 * Enum that determines how closely a returned scratch texture must match |
242 * a provided GrSurfaceDesc. | 243 * a provided GrSurfaceDesc. TODO: Remove this. createTexture() should be us
ed |
| 244 * for exact match and refScratchTexture() should be replaced with createApp
roxTexture(). |
243 */ | 245 */ |
244 enum ScratchTexMatch { | 246 enum ScratchTexMatch { |
245 /** | 247 /** |
246 * Finds a texture that exactly matches the descriptor. | 248 * Finds a texture that exactly matches the descriptor. |
247 */ | 249 */ |
248 kExact_ScratchTexMatch, | 250 kExact_ScratchTexMatch, |
249 /** | 251 /** |
250 * Finds a texture that approximately matches the descriptor. Will be | 252 * Finds a texture that approximately matches the descriptor. Will be |
251 * at least as large in width and height as desc specifies. If desc | 253 * at least as large in width and height as desc specifies. If desc |
252 * specifies that texture is a render target then result will be a | 254 * specifies that texture is a render target then result will be a |
253 * render target. If desc specifies a render target and doesn't set the | 255 * render target. If desc specifies a render target and doesn't set the |
254 * no stencil flag then result will have a stencil. Format and aa level | 256 * no stencil flag then result will have a stencil. Format and aa level |
255 * will always match. | 257 * will always match. |
256 */ | 258 */ |
257 kApprox_ScratchTexMatch | 259 kApprox_ScratchTexMatch |
258 }; | 260 }; |
259 | 261 |
260 /** | 262 /** |
261 * Returns a texture matching the desc. It's contents are unknown. The calle
r | 263 * Returns a texture matching the desc. It's contents are unknown. The calle
r |
262 * owns a ref on the returned texture and must balance with a call to unref. | 264 * owns a ref on the returned texture and must balance with a call to unref. |
263 * It is guaranteed that the same texture will not be returned in subsequent | 265 * It is guaranteed that the same texture will not be returned in subsequent |
264 * calls until all refs to the texture are dropped. | 266 * calls until all refs to the texture are dropped. |
265 * | 267 * |
266 * Textures created by createTexture() hide the complications of | 268 * Textures created by createTexture() hide the complications of |
267 * tiling non-power-of-two textures on APIs that don't support this (e.g. | 269 * tiling non-power-of-two textures on APIs that don't support this (e.g. |
268 * unextended GLES2). NPOT scratch textures are not tilable on such APIs. | 270 * unextended GLES2). NPOT scratch textures are not tilable on such APIs. |
269 * | 271 * |
270 * internalFlag is a temporary workaround until changes in the internal | 272 * internalFlag is a temporary workaround until changes in the internal |
271 * architecture are complete. Use the default value. | 273 * architecture are complete. Use the default value. |
| 274 * |
| 275 * TODO: Once internal flag can be removed, this should be replaced with |
| 276 * createApproxTexture() and exact textures should be created with |
| 277 * createTexture(). |
272 */ | 278 */ |
273 GrTexture* refScratchTexture(const GrSurfaceDesc&, ScratchTexMatch match, | 279 GrTexture* refScratchTexture(const GrSurfaceDesc&, ScratchTexMatch match, |
274 bool internalFlag = false); | 280 bool internalFlag = false); |
275 | 281 |
276 /** | 282 /** |
277 * Can the provided configuration act as a texture? | 283 * Can the provided configuration act as a texture? |
278 */ | 284 */ |
279 bool isConfigTexturable(GrPixelConfig) const; | 285 bool isConfigTexturable(GrPixelConfig) const; |
280 | 286 |
281 /** | 287 /** |
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 GrDrawTarget* prepareToDraw(GrPipelineBuilder*, const GrPaint* paint, const
AutoCheckFlush*); | 836 GrDrawTarget* prepareToDraw(GrPipelineBuilder*, const GrPaint* paint, const
AutoCheckFlush*); |
831 | 837 |
832 void internalDrawPath(GrDrawTarget*, | 838 void internalDrawPath(GrDrawTarget*, |
833 GrPipelineBuilder*, | 839 GrPipelineBuilder*, |
834 const SkMatrix& viewMatrix, | 840 const SkMatrix& viewMatrix, |
835 GrColor, | 841 GrColor, |
836 bool useAA, | 842 bool useAA, |
837 const SkPath&, | 843 const SkPath&, |
838 const GrStrokeInfo&); | 844 const GrStrokeInfo&); |
839 | 845 |
840 // TODO: Move this out of GrContext. | 846 GrTexture* internalRefScratchTexture(const GrSurfaceDesc&, uint32_t flags); |
841 GrTexture* createResizedTexture(const GrSurfaceDesc&, | |
842 const GrContentKey& origKey, | |
843 const void* srcData, | |
844 size_t rowBytes, | |
845 bool filter); | |
846 | 847 |
847 /** | 848 /** |
848 * These functions create premul <-> unpremul effects if it is possible to g
enerate a pair | 849 * These functions create premul <-> unpremul effects if it is possible to g
enerate a pair |
849 * of effects that make a readToUPM->writeToPM->readToUPM cycle invariant. O
therwise, they | 850 * of effects that make a readToUPM->writeToPM->readToUPM cycle invariant. O
therwise, they |
850 * return NULL. | 851 * return NULL. |
851 */ | 852 */ |
852 const GrFragmentProcessor* createPMToUPMEffect(GrTexture*, bool swapRAndB, c
onst SkMatrix&); | 853 const GrFragmentProcessor* createPMToUPMEffect(GrTexture*, bool swapRAndB, c
onst SkMatrix&); |
853 const GrFragmentProcessor* createUPMToPMEffect(GrTexture*, bool swapRAndB, c
onst SkMatrix&); | 854 const GrFragmentProcessor* createUPMToPMEffect(GrTexture*, bool swapRAndB, c
onst SkMatrix&); |
854 | 855 |
855 /** | 856 /** |
856 * This callback allows the resource cache to callback into the GrContext | 857 * This callback allows the resource cache to callback into the GrContext |
857 * when the cache is still over budget after a purge. | 858 * when the cache is still over budget after a purge. |
858 */ | 859 */ |
859 static void OverBudgetCB(void* data); | 860 static void OverBudgetCB(void* data); |
860 | 861 |
861 typedef SkRefCnt INHERITED; | 862 typedef SkRefCnt INHERITED; |
862 }; | 863 }; |
863 | 864 |
864 #endif | 865 #endif |
OLD | NEW |