| Index: src/gpu/vk/GrVkResource.h
|
| diff --git a/src/gpu/vk/GrVkResource.h b/src/gpu/vk/GrVkResource.h
|
| index d42ec70d765342b7d08876d4406f22187fcad4a4..3999749b6e8790898fda2fdba944c57385465e5b 100644
|
| --- a/src/gpu/vk/GrVkResource.h
|
| +++ b/src/gpu/vk/GrVkResource.h
|
| @@ -40,7 +40,26 @@ public:
|
| #ifdef SK_TRACE_VK_RESOURCES
|
| static const uint32_t& GetKey(const GrVkResource& r) { return r.fKey; }
|
| static uint32_t Hash(const uint32_t& k) { return k; }
|
| - static SkTDynamicHash<GrVkResource, uint32_t> fTrace;
|
| +
|
| + class Trace {
|
| + public:
|
| + ~Trace() {
|
| + if (fHash.count()) {
|
| + SkTDynamicHash<GrVkResource, uint32_t>::Iter iter(&fHash);
|
| + for (; !iter.done(); ++iter) {
|
| + (*iter).dumpInfo();
|
| + }
|
| + }
|
| + SkASSERT(0 == fHash.count());
|
| + }
|
| + void add(GrVkResource* r) { fHash.add(r); }
|
| + void remove(const GrVkResource* r) { fHash.remove(GetKey(*r)); }
|
| +
|
| + private:
|
| + SkTDynamicHash<GrVkResource, uint32_t> fHash;
|
| + };
|
| + static Trace fTrace;
|
| +
|
| static SkRandom fRandom;
|
| #endif
|
|
|
| @@ -144,7 +163,7 @@ private:
|
| void internal_dispose(const GrVkGpu* gpu) const {
|
| this->freeGPUData(gpu);
|
| #ifdef SK_TRACE_VK_RESOURCES
|
| - fTrace.remove(GetKey(*this));
|
| + fTrace.remove(this);
|
| #endif
|
| SkASSERT(0 == fRefCnt);
|
| fRefCnt = 1;
|
| @@ -157,7 +176,7 @@ private:
|
| void internal_dispose() const {
|
| this->abandonSubResources();
|
| #ifdef SK_TRACE_VK_RESOURCES
|
| - fTrace.remove(GetKey(*this));
|
| + fTrace.remove(this);
|
| #endif
|
| SkASSERT(0 == fRefCnt);
|
| fRefCnt = 1;
|
|
|