16uint32_t create_unique_id() {
17 static std::atomic<uint32_t> nextID{1};
20 id = nextID.fetch_add(1, std::memory_order_relaxed);
30 std::string_view label,
31 bool commandBufferRefsAsUsageRefs)
32 : fSharedContext(sharedContext)
34 , fCommandBufferRefCnt(0)
36 , fCommandBufferRefsAsUsageRefs(commandBufferRefsAsUsageRefs)
37 , fOwnership(ownership)
38 , fGpuMemorySize(gpuMemorySize)
40 , fUniqueID(create_unique_id()) {
57 fReturnCache = std::move(returnCache);
64 Resource* mutableThis =
const_cast<Resource*
>(
this);
71 fReturnCache->returnResource(mutableThis, removedRef)) {
75 if (!this->hasAnyRefs()) {
81void Resource::internalDispose() {
85 fSharedContext =
nullptr;
91bool Resource::isPurgeable()
const {
95 return !(this->hasUsageRef() || this->hasCommandBufferRef());
117 SkString resourceName(
"skia/gpu_resources/resource_");
123 if (this->isPurgeable()) {
static constexpr uint32_t SK_InvalidUniqueID
void appendU32(uint32_t value)
const char * c_str() const
virtual bool shouldDumpUnbudgetedObjects() const
virtual void dumpWrappedState(const char *, bool)
virtual void dumpStringValue(const char *, const char *, const char *)
virtual void dumpBudgetedState(const char *, bool)
virtual bool shouldDumpWrappedObjects() const
virtual void dumpNumericValue(const char *dumpName, const char *valueName, const char *units, uint64_t value)=0
bool wasDestroyed() const
skgpu::Budgeted budgeted() const
virtual void invokeReleaseProc()
Resource(const Resource &)=delete
virtual void onDumpMemoryStatistics(SkTraceMemoryDump *traceMemoryDump, const char *dumpName) const
size_t gpuMemorySize() const
UniqueID uniqueID() const
void setLabel(std::string_view label)
Ownership ownership() const
virtual void freeGpuData()=0
void dumpMemoryStatistics(SkTraceMemoryDump *traceMemoryDump) const