aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrOnFlushResourceProvider.cpp
diff options
context:
space:
mode:
authorGravatar Chris Dalton <csmartdalton@google.com>2017-12-19 10:40:23 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-19 19:41:16 +0000
commit5d2de08494a912db9d1ca9038deb900de8cbf38e (patch)
tree0513120c0ddc25985c66416d066d0106736fc780 /src/gpu/GrOnFlushResourceProvider.cpp
parent744cbb388870bc1ae0f6b3ac0fbeaa136f55917b (diff)
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>
Diffstat (limited to 'src/gpu/GrOnFlushResourceProvider.cpp')
-rw-r--r--src/gpu/GrOnFlushResourceProvider.cpp19
1 files changed, 7 insertions, 12 deletions
diff --git a/src/gpu/GrOnFlushResourceProvider.cpp b/src/gpu/GrOnFlushResourceProvider.cpp
index c9fc77ed48..e3b5eebefc 100644
--- a/src/gpu/GrOnFlushResourceProvider.cpp
+++ b/src/gpu/GrOnFlushResourceProvider.cpp
@@ -88,19 +88,14 @@ sk_sp<GrBuffer> GrOnFlushResourceProvider::makeBuffer(GrBufferType intendedType,
data));
}
-sk_sp<GrBuffer> GrOnFlushResourceProvider::findOrMakeStaticBuffer(const GrUniqueKey& key,
- GrBufferType intendedType,
- size_t size, const void* data) {
+sk_sp<const GrBuffer> GrOnFlushResourceProvider::findOrMakeStaticBuffer(GrBufferType intendedType,
+ size_t size,
+ const void* data,
+ const GrUniqueKey& key) {
GrResourceProvider* rp = fDrawingMgr->getContext()->resourceProvider();
- sk_sp<GrBuffer> buffer(rp->findByUniqueKey<GrBuffer>(key));
- if (!buffer) {
- buffer.reset(rp->createBuffer(size, intendedType, kStatic_GrAccessPattern, 0, data));
- if (!buffer) {
- return nullptr;
- }
- SkASSERT(buffer->sizeInBytes() == size); // rp shouldn't bin and/or cache static buffers.
- buffer->resourcePriv().setUniqueKey(key);
- }
+ sk_sp<const GrBuffer> buffer = rp->findOrMakeStaticBuffer(intendedType, size, data, key);
+ // Static buffers should never have pending IO.
+ SkASSERT(!buffer->resourcePriv().hasPendingIO_debugOnly());
return buffer;
}