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

Side by Side Diff: include/gpu/GrContext.h

Issue 868233005: Revert of Move npot resizing out of GrContext and simplify GrContext texture functions. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 10 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 | « no previous file | include/gpu/GrPaint.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 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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 */ 162 */
163 void purgeCache(); 163 void purgeCache();
164 164
165 /** 165 /**
166 * Purge all the unlocked resources from the cache. 166 * Purge all the unlocked resources from the cache.
167 * This entry point is mainly meant for timing texture uploads 167 * This entry point is mainly meant for timing texture uploads
168 * and is not defined in normal builds of Skia. 168 * and is not defined in normal builds of Skia.
169 */ 169 */
170 void purgeAllUnlockedResources(); 170 void purgeAllUnlockedResources();
171 171
172 /** Sets a content key on the resource. The resource must not already have a content key and 172 /**
173 * the key must not already be in use for this to succeed. 173 * Stores a custom resource in the cache, based on the specified key.
174 */ 174 */
175 bool addResourceToCache(const GrContentKey&, GrGpuResource*); 175 void addResourceToCache(const GrContentKey&, GrGpuResource*);
176 176
177 /** 177 /**
178 * Finds a resource in the cache, based on the specified key. This is intend ed for use in 178 * Finds a resource in the cache, based on the specified key. This is intend ed for use in
179 * conjunction with addResourceToCache(). The return value will be NULL if n ot found. The 179 * conjunction with addResourceToCache(). The return value will be NULL if n ot found. The
180 * caller must balance with a call to unref(). 180 * caller must balance with a call to unref().
181 */ 181 */
182 GrGpuResource* findAndRefCachedResource(const GrContentKey&); 182 GrGpuResource* findAndRefCachedResource(const GrContentKey&);
183 183
184 /** Helper for casting resource to a texture. Caller must be sure that the r esource cached
185 with the key is either NULL or a texture and not another resource type. */
186 GrTexture* findAndRefCachedTexture(const GrContentKey& key) {
187 GrGpuResource* resource = this->findAndRefCachedResource(key);
188 if (resource) {
189 GrTexture* texture = static_cast<GrSurface*>(resource)->asTexture();
190 SkASSERT(texture);
191 return texture;
192 }
193 return NULL;
194 }
195
196 /**
197 * Determines whether a resource is in the cache. If the resource is found i t
198 * will not be locked or returned. This call does not affect the priority of
199 * the resource for deletion.
200 */
201 bool isResourceInCache(const GrContentKey& key) const;
202
203 /** 184 /**
204 * Creates a new text rendering context that is optimal for the 185 * Creates a new text rendering context that is optimal for the
205 * render target and the context. Caller assumes the ownership 186 * render target and the context. Caller assumes the ownership
206 * of the returned object. The returned object must be deleted 187 * of the returned object. The returned object must be deleted
207 * before the context is destroyed. 188 * before the context is destroyed.
208 */ 189 */
209 GrTextContext* createTextContext(GrRenderTarget*, 190 GrTextContext* createTextContext(GrRenderTarget*,
210 const SkDeviceProperties&, 191 const SkDeviceProperties&,
211 bool enableDistanceFieldFonts); 192 bool enableDistanceFieldFonts);
212 193
213 /////////////////////////////////////////////////////////////////////////// 194 ///////////////////////////////////////////////////////////////////////////
214 // Textures 195 // Textures
215 196
216 /** 197 /**
217 * Creates a new texture in the resource cache and returns it. The caller ow ns a 198 * Creates a new entry, based on the specified key and texture and returns i t. The caller owns a
218 * ref on the returned texture which must be balanced by a call to unref. 199 * ref on the returned texture which must be balanced by a call to unref.
219 * 200 *
201 * TODO: Move resizing logic out of GrContext and have the caller set the co ntent key on the
202 * returned texture rather than take it as a param.
203 *
204 * @param params The texture params used to draw a texture may help deter mine
205 * the cache entry used. (e.g. different versions may exist
206 * for different wrap modes on GPUs with limited NPOT
207 * texture support). NULL implies clamp wrap modes.
220 * @param desc Description of the texture properties. 208 * @param desc Description of the texture properties.
209 * @param key Key to associate with the texture.
221 * @param srcData Pointer to the pixel values. 210 * @param srcData Pointer to the pixel values.
222 * @param rowBytes The number of bytes between rows of the texture. Zero 211 * @param rowBytes The number of bytes between rows of the texture. Zero
223 * implies tightly packed rows. For compressed pixel config s, this 212 * implies tightly packed rows. For compressed pixel config s, this
224 * field is ignored. 213 * field is ignored.
214 * @param outKey (optional) If non-NULL, we'll write the cache key we use d to cacheKey. this
215 * may differ from key on GPUs that don't support tiling NP OT textures.
225 */ 216 */
226 GrTexture* createTexture(const GrSurfaceDesc& desc, const void* srcData, siz e_t rowBytes); 217 GrTexture* createTexture(const GrTextureParams* params,
227 218 const GrSurfaceDesc& desc,
228 GrTexture* createTexture(const GrSurfaceDesc& desc) { 219 const GrContentKey& key,
229 return this->createTexture(desc, NULL, 0); 220 const void* srcData,
230 } 221 size_t rowBytes,
231 222 GrContentKey* outKey = NULL);
232 /** 223 /**
233 * Creates a texture that is outside the cache. Does not count against 224 * Search for an entry based on key and dimensions. If found, ref it and ret urn it. The return
234 * cache's budget. 225 * value will be NULL if not found. The caller must balance with a call to u nref.
235 * 226 *
236 * TODO: Add a budgeted param to createTexture and remove this function. 227 * TODO: Remove this function and do lookups generically.
228 *
229 * @param desc Description of the texture properties.
230 * @param key key to use for texture look up.
231 * @param params The texture params used to draw a texture may help deter mine
232 * the cache entry used. (e.g. different versions may exist
233 * for different wrap modes on GPUs with limited NPOT
234 * texture support). NULL implies clamp wrap modes.
237 */ 235 */
238 GrTexture* createUncachedTexture(const GrSurfaceDesc& desc, void* srcData, s ize_t rowBytes); 236 GrTexture* findAndRefTexture(const GrSurfaceDesc& desc,
237 const GrContentKey& key,
238 const GrTextureParams* params);
239 /**
240 * Determines whether a texture is in the cache. If the texture is found it
241 * will not be locked or returned. This call does not affect the priority of
242 * the texture for deletion.
243 *
244 * TODO: Remove this function and do cache checks generically.
245 */
246 bool isTextureInCache(const GrSurfaceDesc& desc,
247 const GrContentKey& key,
248 const GrTextureParams* params) const;
239 249
240 /** 250 /**
241 * Enum that determines how closely a returned scratch texture must match 251 * Enum that determines how closely a returned scratch texture must match
242 * a provided GrSurfaceDesc. 252 * a provided GrSurfaceDesc.
243 */ 253 */
244 enum ScratchTexMatch { 254 enum ScratchTexMatch {
245 /** 255 /**
246 * Finds a texture that exactly matches the descriptor. 256 * Finds a texture that exactly matches the descriptor.
247 */ 257 */
248 kExact_ScratchTexMatch, 258 kExact_ScratchTexMatch,
(...skipping 18 matching lines...) Expand all
267 * tiling non-power-of-two textures on APIs that don't support this (e.g. 277 * 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. 278 * unextended GLES2). NPOT scratch textures are not tilable on such APIs.
269 * 279 *
270 * internalFlag is a temporary workaround until changes in the internal 280 * internalFlag is a temporary workaround until changes in the internal
271 * architecture are complete. Use the default value. 281 * architecture are complete. Use the default value.
272 */ 282 */
273 GrTexture* refScratchTexture(const GrSurfaceDesc&, ScratchTexMatch match, 283 GrTexture* refScratchTexture(const GrSurfaceDesc&, ScratchTexMatch match,
274 bool internalFlag = false); 284 bool internalFlag = false);
275 285
276 /** 286 /**
277 * Returns true if index8 textures are supported. 287 * Creates a texture that is outside the cache. Does not count against
288 * cache's budget.
289 *
290 * Textures created by createTexture() hide the complications of
291 * tiling non-power-of-two textures on APIs that don't support this (e.g.
292 * unextended GLES2). NPOT uncached textures are not tilable on such APIs.
278 */ 293 */
279 bool supportsIndex8PixelConfig() const; 294 GrTexture* createUncachedTexture(const GrSurfaceDesc& desc,
295 void* srcData,
296 size_t rowBytes);
297
298 /**
299 * Returns true if the specified use of an indexed texture is supported.
300 * Support may depend upon whether the texture params indicate that the
301 * texture will be tiled. Passing NULL for the texture params indicates
302 * clamp mode.
303 */
304 bool supportsIndex8PixelConfig(const GrTextureParams*,
305 int width,
306 int height) const;
280 307
281 /** 308 /**
282 * Return the max width or height of a texture supported by the current GPU . 309 * Return the max width or height of a texture supported by the current GPU .
283 */ 310 */
284 int getMaxTextureSize() const; 311 int getMaxTextureSize() const;
285 312
286 /** 313 /**
287 * Temporarily override the true max texture size. Note: an override 314 * Temporarily override the true max texture size. Note: an override
288 * larger then the true max texture size will have no effect. 315 * larger then the true max texture size will have no effect.
289 * This entry point is mainly meant for testing texture size dependent 316 * This entry point is mainly meant for testing texture size dependent
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 /** 897 /**
871 * This callback allows the resource cache to callback into the GrContext 898 * This callback allows the resource cache to callback into the GrContext
872 * when the cache is still over budget after a purge. 899 * when the cache is still over budget after a purge.
873 */ 900 */
874 static void OverBudgetCB(void* data); 901 static void OverBudgetCB(void* data);
875 902
876 typedef SkRefCnt INHERITED; 903 typedef SkRefCnt INHERITED;
877 }; 904 };
878 905
879 #endif 906 #endif
OLDNEW
« no previous file with comments | « no previous file | include/gpu/GrPaint.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698