Allow uniqueKey invalidation messages to reach the thread safe cache
With the addition of vertex data to the thread safe cache we also have
to handle the case where a given SkPath becomes inaccessible and
proactively invalidate the matching entry.
Bug: 1108408
Change-Id: Id11ce2aa10517f7c0772a253634d3c0d13e13460
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/330261
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrResourceCache.cpp b/src/gpu/GrResourceCache.cpp
index c05bf1f..a85b0c2 100644
--- a/src/gpu/GrResourceCache.cpp
+++ b/src/gpu/GrResourceCache.cpp
@@ -513,9 +513,15 @@
SkASSERT(fProxyProvider);
for (int i = 0; i < invalidKeyMsgs.count(); ++i) {
- fProxyProvider->processInvalidUniqueKey(invalidKeyMsgs[i].key(), nullptr,
+ if (invalidKeyMsgs[i].inThreadSafeCache()) {
+ fThreadSafeCache->remove(invalidKeyMsgs[i].key());
+ SkASSERT(!fThreadSafeCache->has(invalidKeyMsgs[i].key()));
+ } else {
+ fProxyProvider->processInvalidUniqueKey(
+ invalidKeyMsgs[i].key(), nullptr,
GrProxyProvider::InvalidateGPUResource::kYes);
- SkASSERT(!this->findAndRefUniqueResource(invalidKeyMsgs[i].key()));
+ SkASSERT(!this->findAndRefUniqueResource(invalidKeyMsgs[i].key()));
+ }
}
}