From 1bf3e71ad06a318613ccc09e1cf47d3c2465b23c Mon Sep 17 00:00:00 2001 From: cdalton Date: Tue, 19 Apr 2016 10:00:02 -0700 Subject: Add optional data parameter to createBuffer BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1877073002 Review URL: https://codereview.chromium.org/1877073002 --- src/gpu/vk/GrVkGpu.cpp | 16 +++++++++++----- src/gpu/vk/GrVkGpu.h | 3 ++- 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src/gpu/vk') diff --git a/src/gpu/vk/GrVkGpu.cpp b/src/gpu/vk/GrVkGpu.cpp index 28dce344be..b23cced41d 100644 --- a/src/gpu/vk/GrVkGpu.cpp +++ b/src/gpu/vk/GrVkGpu.cpp @@ -172,26 +172,32 @@ void GrVkGpu::submitCommandBuffer(SyncQueue sync) { } /////////////////////////////////////////////////////////////////////////////// -GrBuffer* GrVkGpu::onCreateBuffer(size_t size, GrBufferType type, GrAccessPattern accessPattern) { +GrBuffer* GrVkGpu::onCreateBuffer(size_t size, GrBufferType type, GrAccessPattern accessPattern, + const void* data) { + GrBuffer* buff; switch (type) { case kVertex_GrBufferType: SkASSERT(kDynamic_GrAccessPattern == accessPattern || kStatic_GrAccessPattern == accessPattern); - return GrVkVertexBuffer::Create(this, size, kDynamic_GrAccessPattern == accessPattern); + buff = GrVkVertexBuffer::Create(this, size, kDynamic_GrAccessPattern == accessPattern); case kIndex_GrBufferType: SkASSERT(kDynamic_GrAccessPattern == accessPattern || kStatic_GrAccessPattern == accessPattern); - return GrVkIndexBuffer::Create(this, size, kDynamic_GrAccessPattern == accessPattern); + buff = GrVkIndexBuffer::Create(this, size, kDynamic_GrAccessPattern == accessPattern); case kXferCpuToGpu_GrBufferType: SkASSERT(kStream_GrAccessPattern == accessPattern); - return GrVkTransferBuffer::Create(this, size, GrVkBuffer::kCopyRead_Type); + buff = GrVkTransferBuffer::Create(this, size, GrVkBuffer::kCopyRead_Type); case kXferGpuToCpu_GrBufferType: SkASSERT(kStream_GrAccessPattern == accessPattern); - return GrVkTransferBuffer::Create(this, size, GrVkBuffer::kCopyWrite_Type); + buff = GrVkTransferBuffer::Create(this, size, GrVkBuffer::kCopyWrite_Type); default: SkFAIL("Unknown buffer type."); return nullptr; } + if (data && buff) { + buff->updateData(data, size); + } + return buff; } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/vk/GrVkGpu.h b/src/gpu/vk/GrVkGpu.h index 5872f18671..76b18ac71e 100644 --- a/src/gpu/vk/GrVkGpu.h +++ b/src/gpu/vk/GrVkGpu.h @@ -129,7 +129,8 @@ private: GrWrapOwnership) override; GrRenderTarget* onWrapBackendTextureAsRenderTarget(const GrBackendTextureDesc&) override { return NULL; } - GrBuffer* onCreateBuffer(size_t size, GrBufferType type, GrAccessPattern) override; + GrBuffer* onCreateBuffer(size_t size, GrBufferType type, GrAccessPattern, + const void* data) override; void onClear(GrRenderTarget*, const SkIRect& rect, GrColor color) override; -- cgit v1.2.3