diff options
author | Chris Dalton <csmartdalton@google.com> | 2017-12-19 10:40:23 -0700 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-19 19:41:16 +0000 |
commit | 5d2de08494a912db9d1ca9038deb900de8cbf38e (patch) | |
tree | 0513120c0ddc25985c66416d066d0106736fc780 /src/gpu/GrOnFlushResourceProvider.cpp | |
parent | 744cbb388870bc1ae0f6b3ac0fbeaa136f55917b (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.cpp | 19 |
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; } |