Only check resource tracking on program shutdown, not context shutdown

BUG=skia:5496
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2128273002

Review-Url: https://codereview.chromium.org/2128273002
This commit is contained in:
jvanverth 2016-07-07 08:21:48 -07:00 committed by Commit bot
parent 6e46eea63e
commit d5f6e9a759
3 changed files with 24 additions and 25 deletions

View File

@ -153,7 +153,7 @@ void GrVkBuffer::vkUnmap(GrVkGpu* gpu) {
VK_CALL(gpu, UnmapMemory(gpu->device(), this->alloc().fMemory));
} else {
gpu->updateBuffer(this, fMapPtr, this->size());
delete (unsigned char*) fMapPtr;
delete [] (unsigned char*)fMapPtr;
}
fMapPtr = nullptr;

View File

@ -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;

View File

@ -15,7 +15,7 @@
#include "GrVkUtil.h"
#ifdef SK_TRACE_VK_RESOURCES
SkTDynamicHash<GrVkResource, uint32_t> GrVkResource::fTrace;
GrVkResource::Trace GrVkResource::fTrace;
SkRandom GrVkResource::fRandom;
#endif
@ -314,16 +314,6 @@ void GrVkResourceProvider::destroyResources() {
fUniformDescLayout = VK_NULL_HANDLE;
}
fUniformDescPool->unref(fGpu);
#ifdef SK_TRACE_VK_RESOURCES
if (GrVkResource::fTrace.count()) {
SkTDynamicHash<GrVkResource, uint32_t>::Iter iter(&GrVkResource::fTrace);
for (; !iter.done(); ++iter) {
(*iter).dumpInfo();
}
}
SkASSERT(0 == GrVkResource::fTrace.count());
#endif
}
void GrVkResourceProvider::abandonResources() {
@ -368,16 +358,6 @@ void GrVkResourceProvider::abandonResources() {
fUniformDescLayout = VK_NULL_HANDLE;
fUniformDescPool->unrefAndAbandon();
#ifdef SK_TRACE_VK_RESOURCES
if (GrVkResource::fTrace.count()) {
SkTDynamicHash<GrVkResource, uint32_t>::Iter iter(&GrVkResource::fTrace);
for (; !iter.done(); ++iter) {
(*iter).dumpInfo();
}
}
SkASSERT(0 == GrVkResource::fTrace.count());
#endif
}
////////////////////////////////////////////////////////////////////////////////