move GrTextBlobCache to GrContextThreadSafeProxy

ninja -C out/Release -j 800 skpbench && ./out/Release/skpbench \
--config gl --ddl --src skps/desk_nytimes.skp \
--ddlTilingWidthHeight 3 --gpuThreads 0 \
--pr ~small ~nvpr --cachePathMasks false --comparableDDL
Reports:
with out cl:
1.949     1.842     3.979     1.802      29%       99         50  cpu    ms      gl        desk_nytimes.skp

this cl:
1.476     1.388     3.342     1.365    34.2%       99         50  cpu    ms      gl        desk_nytimes.skp

Non-ddl perf:
./out/Release/skpbench --config gl --ddl --src skps/desk_nytimes.skp \
--ddlTilingWidthHeight 3 --gpuThreads 0 --pr ~small ~nvpr \
--cachePathMasks false --comparableSKP

 1.368      1.31     2.276     1.273    15.3%       99         50  cpu    ms      gl        desk_nytimes.skp

Change-Id: I879f779e34b5c717ab5602f23374aedaff56f96b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299197
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
diff --git a/src/gpu/GrContextThreadSafeProxyPriv.h b/src/gpu/GrContextThreadSafeProxyPriv.h
index c4873bb..e644fb1 100644
--- a/src/gpu/GrContextThreadSafeProxyPriv.h
+++ b/src/gpu/GrContextThreadSafeProxyPriv.h
@@ -12,6 +12,7 @@
 #include "include/private/GrContext_Base.h"
 
 #include "src/gpu/GrCaps.h"
+#include "src/gpu/text/GrTextBlobCache.h"
 
 /**
  * Class that adds methods to GrContextThreadSafeProxy that are only intended for use internal to
@@ -20,7 +21,9 @@
  */
 class GrContextThreadSafeProxyPriv {
 public:
-    void init(sk_sp<const GrCaps> caps) const { fProxy->init(std::move(caps)); }
+    void init(sk_sp<const GrCaps> caps) const {
+        fProxy->init(std::move(caps));
+    }
 
     bool matches(GrContext_Base* candidate) const {
         return fProxy == candidate->threadSafeProxy().get();
@@ -33,6 +36,9 @@
     const GrCaps* caps() const { return fProxy->fCaps.get(); }
     sk_sp<const GrCaps> refCaps() const { return fProxy->fCaps; }
 
+    GrTextBlobCache* getTextBlobCache() { return fProxy->fTextBlobCache.get(); }
+    const GrTextBlobCache* getTextBlobCache() const { return fProxy->fTextBlobCache.get(); }
+
     void abandonContext() { fProxy->abandonContext(); }
     bool abandoned() const { return fProxy->abandoned(); }