Add findOrMakeStaticBuffer method to GrResourceProvider
Bug: skia:
Change-Id: Ie47f00bf8542462d719df0d08972794861ec4a2b
Reviewed-on: https://skia-review.googlesource.com/86283
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/GrResourceProvider.cpp b/src/gpu/GrResourceProvider.cpp
index 8b36bad..7fef350 100644
--- a/src/gpu/GrResourceProvider.cpp
+++ b/src/gpu/GrResourceProvider.cpp
@@ -312,6 +312,25 @@
return this->isAbandoned() ? nullptr : fCache->findOrCreateProxyByUniqueKey(key, origin);
}
+sk_sp<const GrBuffer> GrResourceProvider::findOrMakeStaticBuffer(GrBufferType intendedType,
+ size_t size,
+ const void* data,
+ const GrUniqueKey& key) {
+ if (auto buffer = this->findByUniqueKey<GrBuffer>(key)) {
+ return buffer;
+ }
+ if (auto buffer = this->createBuffer(size, intendedType, kStatic_GrAccessPattern, 0,
+ data)) {
+ // We shouldn't bin and/or cachestatic buffers.
+ SkASSERT(buffer->sizeInBytes() == size);
+ SkASSERT(!buffer->resourcePriv().getScratchKey().isValid());
+ SkASSERT(!buffer->resourcePriv().hasPendingIO_debugOnly());
+ buffer->resourcePriv().setUniqueKey(key);
+ return sk_sp<const GrBuffer>(buffer);
+ }
+ return nullptr;
+}
+
sk_sp<const GrBuffer> GrResourceProvider::createPatternedIndexBuffer(const uint16_t* pattern,
int patternSize,
int reps,