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

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

Issue 1217573002: remove SkInstCnt (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: Created 5 years, 6 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 | « include/gpu/GrCaps.h ('k') | include/gpu/GrDrawContext.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 28 matching lines...) Expand all
39 class GrTestTarget; 39 class GrTestTarget;
40 class GrTextBlobCache; 40 class GrTextBlobCache;
41 class GrTextContext; 41 class GrTextContext;
42 class GrTextureParams; 42 class GrTextureParams;
43 class GrVertexBuffer; 43 class GrVertexBuffer;
44 class GrStrokeInfo; 44 class GrStrokeInfo;
45 class GrSoftwarePathRenderer; 45 class GrSoftwarePathRenderer;
46 46
47 class SK_API GrContext : public SkRefCnt { 47 class SK_API GrContext : public SkRefCnt {
48 public: 48 public:
49 SK_DECLARE_INST_COUNT(GrContext)
50
51 /** 49 /**
52 * Creates a GrContext for a backend context. 50 * Creates a GrContext for a backend context.
53 */ 51 */
54 static GrContext* Create(GrBackend, GrBackendContext, const GrContextOptions & options); 52 static GrContext* Create(GrBackend, GrBackendContext, const GrContextOptions & options);
55 static GrContext* Create(GrBackend, GrBackendContext); 53 static GrContext* Create(GrBackend, GrBackendContext);
56 54
57 /** 55 /**
58 * Only defined in test apps. 56 * Only defined in test apps.
59 */ 57 */
60 static GrContext* CreateMockContext(); 58 static GrContext* CreateMockContext();
(...skipping 22 matching lines...) Expand all
83 * The 'info' parameter will be stored and passed to the callback function. 81 * The 'info' parameter will be stored and passed to the callback function.
84 */ 82 */
85 void addCleanUp(PFCleanUpFunc cleanUp, void* info) { 83 void addCleanUp(PFCleanUpFunc cleanUp, void* info) {
86 CleanUpData* entry = fCleanUpData.push(); 84 CleanUpData* entry = fCleanUpData.push();
87 85
88 entry->fFunc = cleanUp; 86 entry->fFunc = cleanUp;
89 entry->fInfo = info; 87 entry->fInfo = info;
90 } 88 }
91 89
92 /** 90 /**
93 * Abandons all GPU resources and assumes the underlying backend 3D API 91 * Abandons all GPU resources and assumes the underlying backend 3D API
94 * context is not longer usable. Call this if you have lost the associated 92 * context is not longer usable. Call this if you have lost the associated
95 * GPU context, and thus internal texture, buffer, etc. references/IDs are 93 * GPU context, and thus internal texture, buffer, etc. references/IDs are
96 * now invalid. Should be called even when GrContext is no longer going to 94 * now invalid. Should be called even when GrContext is no longer going to
97 * be used for two reasons: 95 * be used for two reasons:
98 * 1) ~GrContext will not try to free the objects in the 3D API. 96 * 1) ~GrContext will not try to free the objects in the 3D API.
99 * 2) Any GrGpuResources created by this GrContext that outlive 97 * 2) Any GrGpuResources created by this GrContext that outlive
100 * will be marked as invalid (GrGpuResource::wasDestroyed()) and 98 * will be marked as invalid (GrGpuResource::wasDestroyed()) and
101 * when they're destroyed no 3D API calls will be made. 99 * when they're destroyed no 3D API calls will be made.
102 * Content drawn since the last GrContext::flush() may be lost. After this 100 * Content drawn since the last GrContext::flush() may be lost. After this
103 * function is called the only valid action on the GrContext or 101 * function is called the only valid action on the GrContext or
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 * @param config the configuration of the render target. 163 * @param config the configuration of the render target.
166 * @param dpi the display density in dots per inch. 164 * @param dpi the display density in dots per inch.
167 * 165 *
168 * @return sample count that should be perform well and have good enough 166 * @return sample count that should be perform well and have good enough
169 * rendering quality for the display. Alternatively returns 0 if 167 * rendering quality for the display. Alternatively returns 0 if
170 * MSAA is not supported or recommended to be used by default. 168 * MSAA is not supported or recommended to be used by default.
171 */ 169 */
172 int getRecommendedSampleCount(GrPixelConfig config, SkScalar dpi) const; 170 int getRecommendedSampleCount(GrPixelConfig config, SkScalar dpi) const;
173 171
174 /** 172 /**
175 * Returns a helper object to orchestrate draws. 173 * Returns a helper object to orchestrate draws.
176 * Callers should take a ref if they rely on the GrDrawContext sticking arou nd. 174 * Callers should take a ref if they rely on the GrDrawContext sticking arou nd.
177 * NULL will be returned if the context has been abandoned. 175 * NULL will be returned if the context has been abandoned.
178 * 176 *
179 * @param devProps the device properties (mainly defines text drawing) 177 * @param devProps the device properties (mainly defines text drawing)
180 * 178 *
181 * @return a draw context 179 * @return a draw context
182 */ 180 */
183 GrDrawContext* drawContext(const SkSurfaceProps* surfaceProps = NULL) { 181 GrDrawContext* drawContext(const SkSurfaceProps* surfaceProps = NULL) {
184 return fDrawingMgr.drawContext(surfaceProps); 182 return fDrawingMgr.drawContext(surfaceProps);
185 } 183 }
186 184
187 /////////////////////////////////////////////////////////////////////////// 185 ///////////////////////////////////////////////////////////////////////////
188 // Misc. 186 // Misc.
189 187
190 /** 188 /**
191 * Flags that affect flush() behavior. 189 * Flags that affect flush() behavior.
192 */ 190 */
193 enum FlushBits { 191 enum FlushBits {
194 /** 192 /**
195 * A client may reach a point where it has partially rendered a frame 193 * A client may reach a point where it has partially rendered a frame
196 * through a GrContext that it knows the user will never see. This flag 194 * through a GrContext that it knows the user will never see. This flag
197 * causes the flush to skip submission of deferred content to the 3D API 195 * causes the flush to skip submission of deferred content to the 3D API
198 * during the flush. 196 * during the flush.
199 */ 197 */
200 kDiscard_FlushBit = 0x2, 198 kDiscard_FlushBit = 0x2,
201 }; 199 };
202 200
203 /** 201 /**
204 * Call to ensure all drawing to the context has been issued to the 202 * Call to ensure all drawing to the context has been issued to the
205 * underlying 3D API. 203 * underlying 3D API.
206 * @param flagsBitfield flags that control the flushing behavior. See 204 * @param flagsBitfield flags that control the flushing behavior. See
207 * FlushBits. 205 * FlushBits.
208 */ 206 */
209 void flush(int flagsBitfield = 0); 207 void flush(int flagsBitfield = 0);
210 208
211 void flushIfNecessary() { 209 void flushIfNecessary() {
212 if (fFlushToReduceCacheSize) { 210 if (fFlushToReduceCacheSize) {
213 this->flush(); 211 this->flush();
214 } 212 }
215 } 213 }
216 214
217 /** 215 /**
218 * These flags can be used with the read/write pixels functions below. 216 * These flags can be used with the read/write pixels functions below.
219 */ 217 */
220 enum PixelOpsFlags { 218 enum PixelOpsFlags {
221 /** The GrContext will not be flushed before the surface read or write. This means that 219 /** The GrContext will not be flushed before the surface read or write. This means that
222 the read or write may occur before previous draws have executed. */ 220 the read or write may occur before previous draws have executed. */
223 kDontFlush_PixelOpsFlag = 0x1, 221 kDontFlush_PixelOpsFlag = 0x1,
224 /** Any surface writes should be flushed to the backend 3D API after the surface operation 222 /** Any surface writes should be flushed to the backend 3D API after the surface operation
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 /** Prints GPU stats to the string if GR_GPU_STATS == 1. */ 354 /** Prints GPU stats to the string if GR_GPU_STATS == 1. */
357 void dumpGpuStats(SkString*) const; 355 void dumpGpuStats(SkString*) const;
358 void printGpuStats() const; 356 void printGpuStats() const;
359 357
360 private: 358 private:
361 GrGpu* fGpu; 359 GrGpu* fGpu;
362 const GrCaps* fCaps; 360 const GrCaps* fCaps;
363 GrResourceCache* fResourceCache; 361 GrResourceCache* fResourceCache;
364 // this union exists because the inheritance of GrTextureProvider->GrResourc eProvider 362 // this union exists because the inheritance of GrTextureProvider->GrResourc eProvider
365 // is in a private header. 363 // is in a private header.
366 union { 364 union {
367 GrResourceProvider* fResourceProvider; 365 GrResourceProvider* fResourceProvider;
368 GrTextureProvider* fTextureProvider; 366 GrTextureProvider* fTextureProvider;
369 }; 367 };
370 368
371 GrBatchFontCache* fBatchFontCache; 369 GrBatchFontCache* fBatchFontCache;
372 SkAutoTDelete<GrLayerCache> fLayerCache; 370 SkAutoTDelete<GrLayerCache> fLayerCache;
373 SkAutoTDelete<GrTextBlobCache> fTextBlobCache; 371 SkAutoTDelete<GrTextBlobCache> fTextBlobCache;
374 372
375 GrPathRendererChain* fPathRendererChain; 373 GrPathRendererChain* fPathRendererChain;
376 GrSoftwarePathRenderer* fSoftwarePathRenderer; 374 GrSoftwarePathRenderer* fSoftwarePathRenderer;
(...skipping 14 matching lines...) Expand all
391 const uint32_t fUniqueID; 389 const uint32_t fUniqueID;
392 390
393 GrContext(); // init must be called after the constructor. 391 GrContext(); // init must be called after the constructor.
394 bool init(GrBackend, GrBackendContext, const GrContextOptions& options); 392 bool init(GrBackend, GrBackendContext, const GrContextOptions& options);
395 393
396 // Currently the DrawingMgr stores a separate GrDrawContext for each 394 // Currently the DrawingMgr stores a separate GrDrawContext for each
397 // combination of text drawing options (pixel geometry x DFT use) 395 // combination of text drawing options (pixel geometry x DFT use)
398 // and hands the appropriate one back given the user's request. 396 // and hands the appropriate one back given the user's request.
399 // All of the GrDrawContexts still land in the same GrDrawTarget! 397 // All of the GrDrawContexts still land in the same GrDrawTarget!
400 // 398 //
401 // In the future this class will allocate a new GrDrawContext for 399 // In the future this class will allocate a new GrDrawContext for
402 // each GrRenderTarget/GrDrawTarget and manage the DAG. 400 // each GrRenderTarget/GrDrawTarget and manage the DAG.
403 class DrawingMgr { 401 class DrawingMgr {
404 public: 402 public:
405 DrawingMgr() : fDrawTarget(NULL) { 403 DrawingMgr() : fDrawTarget(NULL) {
406 sk_bzero(fDrawContext, sizeof(fDrawContext)); 404 sk_bzero(fDrawContext, sizeof(fDrawContext));
407 } 405 }
408 406
409 ~DrawingMgr(); 407 ~DrawingMgr();
410 408
411 void init(GrContext* context); 409 void init(GrContext* context);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 /** 455 /**
458 * A callback similar to the above for use by the TextBlobCache 456 * A callback similar to the above for use by the TextBlobCache
459 * TODO move textblob draw calls below context so we can use the call above. 457 * TODO move textblob draw calls below context so we can use the call above.
460 */ 458 */
461 static void TextBlobCacheOverBudgetCB(void* data); 459 static void TextBlobCacheOverBudgetCB(void* data);
462 460
463 typedef SkRefCnt INHERITED; 461 typedef SkRefCnt INHERITED;
464 }; 462 };
465 463
466 #endif 464 #endif
OLDNEW
« no previous file with comments | « include/gpu/GrCaps.h ('k') | include/gpu/GrDrawContext.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698