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,