8 #ifndef GrContext_DEFINED
9 #define GrContext_DEFINED
14 #include "SkPathEffect.h"
16 #include "../private/GrAuditTrail.h"
17 #include "../private/GrSingleOwner.h"
19 class GrAtlasGlyphCache;
23 class GrDrawingManager;
24 struct GrDrawOpAtlasConfig;
25 class GrRenderTargetContext;
26 class GrFragmentProcessor;
31 class GrPipelineBuilder;
32 class GrResourceEntry;
33 class GrResourceCache;
34 class GrResourceProvider;
37 class GrTextBlobCache;
53 static GrContext* Create(GrBackend, GrBackendContext);
67 void resetContext(uint32_t state = kAll_GrBackendState);
73 typedef void (*PFCleanUpFunc)(
const GrContext* context,
void* info);
83 entry->fFunc = cleanUp;
98 void abandonContext();
109 void releaseResourcesAndAbandonContext();
122 void getResourceCacheLimits(
int* maxResources,
size_t* maxResourceBytes)
const;
132 void getResourceCacheUsage(
int* resourceCount,
size_t* resourceBytes)
const;
137 size_t getResourceCachePurgeableBytes()
const;
148 void setResourceCacheLimits(
int maxResources,
size_t maxResourceBytes);
154 void freeGpuResources();
161 void purgeAllUnlockedResources();
167 void purgeResourcesNotUsedInMs(std::chrono::milliseconds ms);
179 void purgeUnlockedResources(
size_t bytesToPurge,
bool preferScratchResources);
195 int getRecommendedSampleCount(GrPixelConfig config, SkScalar dpi)
const;
204 int width,
int height,
205 GrPixelConfig config,
208 GrSurfaceOrigin origin = kBottomLeft_GrSurfaceOrigin,
210 SkBudgeted = SkBudgeted::kYes);
219 int width,
int height,
220 GrPixelConfig config,
223 GrSurfaceOrigin origin = kBottomLeft_GrSurfaceOrigin,
225 SkBudgeted budgeted = SkBudgeted::kYes);
243 GrGpu* getGpu() {
return fGpu; }
244 const GrGpu* getGpu()
const {
return fGpu; }
245 GrAtlasGlyphCache* getAtlasGlyphCache() {
return fAtlasGlyphCache; }
246 GrTextBlobCache* getTextBlobCache() {
return fTextBlobCache.get(); }
247 bool abandoned()
const;
248 GrResourceProvider* resourceProvider() {
return fResourceProvider; }
249 const GrResourceProvider* resourceProvider()
const {
return fResourceProvider; }
250 GrResourceCache* getResourceCache() {
return fResourceCache; }
253 void resetGpuStats()
const ;
256 void dumpCacheStats(
SkString*)
const;
257 void dumpCacheStatsKeyValuePairs(SkTArray<SkString>* keys, SkTArray<double>* values)
const;
258 void printCacheStats()
const;
262 void dumpGpuStatsKeyValuePairs(SkTArray<SkString>* keys, SkTArray<double>* values)
const;
263 void printGpuStats()
const;
267 void setTextBlobCacheLimit_ForTesting(
size_t bytes);
271 void setTextContextAtlasSizes_ForTesting(
const GrDrawOpAtlasConfig* configs);
281 GrAuditTrail* getAuditTrail() {
return &fAuditTrail; }
284 SkDEBUGCODE(GrSingleOwner* debugSingleOwner()
const {
return &fSingleOwner; } )
287 GrContextPriv contextPriv();
288 const GrContextPriv contextPriv()
const;
293 GrResourceCache* fResourceCache;
294 GrResourceProvider* fResourceProvider;
298 GrAtlasGlyphCache* fAtlasGlyphCache;
299 std::unique_ptr<GrTextBlobCache> fTextBlobCache;
301 bool fDisableGpuYUVConversion;
302 bool fDidTestPMConversions;
304 bool fPMUPMConversionsRoundTrip;
309 mutable GrSingleOwner fSingleOwner;
316 SkTDArray<CleanUpData> fCleanUpData;
318 const uint32_t fUniqueID;
320 std::unique_ptr<GrDrawingManager> fDrawingManager;
322 GrAuditTrail fAuditTrail;
327 friend class GrContextPriv;
338 bool useConfigConversionEffect);
340 bool useConfigConversionEffect);
346 bool validPMUPMConversionExists();
352 static void TextBlobCacheOverBudgetCB(
void* data);
364 : fCaps(std::move(caps))
365 , fContextUniqueID(uniqueID) {}
368 uint32_t fContextUniqueID;
Definition: GrContextOptions.h:14
Represents the capabilities of a GrContext.
Definition: GrCaps.h:24
const GrCaps * caps() const
Access the context capabilities.
Definition: GrContext.h:182
Describes properties and constraints of a given SkSurface.
Definition: SkSurfaceProps.h:51
Represents the filtering and tile modes used to access a texture.
Definition: GrSamplerParams.h:17
Definition: SkRefCnt.h:125
uint32_t uniqueID()
An ID associated with this context, guaranteed to be unique.
Definition: GrContext.h:239
Definition: GrContext.h:47
void addCleanUp(PFCleanUpFunc cleanUp, void *info)
Add a function to be called from within GrContext's destructor.
Definition: GrContext.h:80
Interface for memory tracing.
Definition: SkTraceMemoryDump.h:20
SkImage is an abstraction for drawing a rectagle of pixels, though the particular type of image could...
Definition: SkImage.h:48
Definition: GrContext.h:311
Light weight class for managing strings.
Definition: SkString.h:121
Can be used to perform actions related to the generating GrContext in a thread safe manner...
Definition: GrContext.h:361