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

Unified Diff: include/gpu/GrGpuResource.h

Issue 846303002: Make uncached textures uncached from the get go. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Add comment Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bench/GrResourceCacheBench.cpp ('k') | include/gpu/GrRenderTarget.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/gpu/GrGpuResource.h
diff --git a/include/gpu/GrGpuResource.h b/include/gpu/GrGpuResource.h
index 4340f710b3497fc52eeb8ef1bb231cbfa2706357..44c4ba008203081b9e23ec0b0cb64a67f8793af1 100644
--- a/include/gpu/GrGpuResource.h
+++ b/include/gpu/GrGpuResource.h
@@ -125,6 +125,26 @@ class SK_API GrGpuResource : public GrIORef<GrGpuResource> {
public:
SK_DECLARE_INST_COUNT(GrGpuResource)
+ enum LifeCycle {
+ /**
+ * The resource is cached and owned by Skia. Resources with this status may be kept alive
+ * by the cache as either scratch or content resources even when there are no refs to them.
+ * The cache may release them whenever there are no refs.
+ */
+ kCached_LifeCycle,
+ /**
+ * The resource is uncached. As soon as there are no more refs to it, it is released. Under
+ * the hood the cache may opaquely recycle it as a cached resource.
+ */
+ kUncached_LifeCycle,
+ /**
+ * Similar to uncached, but Skia does not manage the lifetime of the underlying backend
+ * 3D API object(s). The client is responsible for freeing those. Used to inject client-
+ * created GPU resources into Skia (e.g. to render to a client-created texture).
+ */
+ kWrapped_LifeCycle,
+ };
+
/**
* Tests whether a object has been abandoned or released. All objects will
* be in this state after their creating GrContext is destroyed or has
@@ -204,7 +224,7 @@ protected:
// initialized (i.e. not in a base class constructor).
void registerWithCache();
- GrGpuResource(GrGpu*, bool isWrapped);
+ GrGpuResource(GrGpu*, LifeCycle);
virtual ~GrGpuResource();
GrGpu* getGpu() const { return fGpu; }
@@ -216,7 +236,7 @@ protected:
backend API calls should be made. */
virtual void onAbandon() { }
- bool isWrapped() const { return SkToBool(kWrapped_Flag & fFlags); }
+ bool isWrapped() const { return kWrapped_LifeCycle == fLifeCycle; }
/**
* This entry point should be called whenever gpuMemorySize() should report a different size.
@@ -240,7 +260,6 @@ private:
// See comments in CacheAccess.
bool setContentKey(const GrResourceKey& contentKey);
- void setBudgeted(bool countsAgainstBudget);
void notifyIsPurgable() const;
void removeScratchKey();
@@ -257,21 +276,9 @@ private:
static const size_t kInvalidGpuMemorySize = ~static_cast<size_t>(0);
enum Flags {
/**
- * The resource counts against the resource cache's budget.
- */
- kBudgeted_Flag = 0x1,
-
- /**
- * This object wraps a GPU object given to us by Skia's client. Skia will not free the
- * underlying backend API GPU resources when the GrGpuResource is destroyed. This also
- * implies that kBudgeted_Flag is not set.
- */
- kWrapped_Flag = 0x2,
-
- /**
* If set then fContentKey is valid and the resource is cached based on its content.
*/
- kContentKeySet_Flag = 0x4,
+ kContentKeySet_Flag = 0x1,
};
GrScratchKey fScratchKey;
@@ -284,6 +291,7 @@ private:
mutable size_t fGpuMemorySize;
uint32_t fFlags;
+ LifeCycle fLifeCycle;
const uint32_t fUniqueID;
SkAutoTUnref<const SkData> fData;
« no previous file with comments | « bench/GrResourceCacheBench.cpp ('k') | include/gpu/GrRenderTarget.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698