this->validate();
}
- /**
- * Gets an id that is unique for this GrProgramElement object. This will never return 0.
- */
- uint32_t getUniqueID() const { return fUniqueID; }
-
void validate() const {
#ifdef SK_DEBUG
SkASSERT(fRefCnt >= 0);
}
protected:
- GrProgramElement() : fRefCnt(1), fPendingExecutions(0), fUniqueID(CreateUniqueID()) {}
+ GrProgramElement() : fRefCnt(1), fPendingExecutions(0) {}
/** Subclasses registers their resources using this function. It is assumed the GrProgramResouce
is and will remain owned by the subclass and this function will retain a raw ptr. Once a
executions. */
virtual void notifyRefCntIsZero() const = 0;
- static uint32_t CreateUniqueID();
-
void removeRefs() const;
void addPendingIOs() const;
void pendingIOComplete() const;
mutable int32_t fRefCnt;
// Count of deferred executions not yet issued to the 3D API.
mutable int32_t fPendingExecutions;
- uint32_t fUniqueID;
SkSTArray<4, const GrGpuResourceRef*, true> fGpuResources;
#include "GrGpuResourceRef.h"
#include "SkAtomics.h"
-uint32_t GrProgramElement::CreateUniqueID() {
- static int32_t gUniqueID = SK_InvalidUniqueID;
- uint32_t id;
- do {
- id = static_cast<uint32_t>(sk_atomic_inc(&gUniqueID) + 1);
- } while (id == SK_InvalidUniqueID);
- return id;
-}
-
void GrProgramElement::addPendingIOs() const {
for (int i = 0; i < fGpuResources.count(); ++i) {
fGpuResources[i]->markPendingIO();