Actually test the direct-context's thread-safe proxy cache
This CL:
connects the tests to the live cache
switches the cache over to using an SkTDynamicHash
Bug: 1108408
Change-Id: I1876baf13a8d12a1ec398f49e2b2d51f434d6d0e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317764
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrThreadSafeUniquelyKeyedProxyViewCache.cpp b/src/gpu/GrThreadSafeUniquelyKeyedProxyViewCache.cpp
index d8dde20..c2fd7dd 100644
--- a/src/gpu/GrThreadSafeUniquelyKeyedProxyViewCache.cpp
+++ b/src/gpu/GrThreadSafeUniquelyKeyedProxyViewCache.cpp
@@ -10,7 +10,7 @@
GrThreadSafeUniquelyKeyedProxyViewCache::GrThreadSafeUniquelyKeyedProxyViewCache() {}
GrThreadSafeUniquelyKeyedProxyViewCache::~GrThreadSafeUniquelyKeyedProxyViewCache() {
- fUniquelyKeyedProxyViews.foreach([](const GrUniqueKey&k, Entry** v) { delete *v; });
+ fUniquelyKeyedProxyViews.foreach([](Entry* v) { delete v; });
}
#if GR_TEST_UTILS
@@ -20,23 +20,24 @@
return fUniquelyKeyedProxyViews.count();
}
-size_t GrThreadSafeUniquelyKeyedProxyViewCache::approxBytesUsed() const {
+int GrThreadSafeUniquelyKeyedProxyViewCache::count() const {
SkAutoSpinlock lock{fSpinLock};
- return fUniquelyKeyedProxyViews.approxBytesUsed();
+ return fUniquelyKeyedProxyViews.count();
}
#endif
void GrThreadSafeUniquelyKeyedProxyViewCache::dropAllRefs() {
SkAutoSpinlock lock{fSpinLock};
+ fUniquelyKeyedProxyViews.foreach([](Entry* v) { delete v; });
fUniquelyKeyedProxyViews.reset();
}
void GrThreadSafeUniquelyKeyedProxyViewCache::dropAllUniqueRefs() {
SkAutoSpinlock lock{fSpinLock};
- fUniquelyKeyedProxyViews.foreach([](const GrUniqueKey&k, Entry** v) {
+ fUniquelyKeyedProxyViews.foreach([](Entry* v) {
// problematic
});
}
@@ -44,9 +45,9 @@
GrSurfaceProxyView GrThreadSafeUniquelyKeyedProxyViewCache::find(const GrUniqueKey& key) {
SkAutoSpinlock lock{fSpinLock};
- Entry** tmp = fUniquelyKeyedProxyViews.find(const_cast<GrUniqueKey&>(key));
+ Entry* tmp = fUniquelyKeyedProxyViews.find(key);
if (tmp) {
- return (*tmp)->fView;
+ return tmp->fView;
}
return {};
@@ -55,14 +56,14 @@
GrSurfaceProxyView GrThreadSafeUniquelyKeyedProxyViewCache::internalAdd(
const GrUniqueKey& key,
const GrSurfaceProxyView& view) {
- Entry** tmp = fUniquelyKeyedProxyViews.find(const_cast<GrUniqueKey&>(key));
+ Entry* tmp = fUniquelyKeyedProxyViews.find(key);
if (!tmp) {
// TODO: block allocate here?
- Entry* newT = new Entry(key, view);
- tmp = fUniquelyKeyedProxyViews.set(newT->fKey, newT);
+ tmp = new Entry(key, view);
+ fUniquelyKeyedProxyViews.add(tmp);
}
- return (*tmp)->fView;
+ return tmp->fView;
}
GrSurfaceProxyView GrThreadSafeUniquelyKeyedProxyViewCache::add(const GrUniqueKey& key,