diff options
author | 2016-04-19 10:00:02 -0700 | |
---|---|---|
committer | 2016-04-19 10:00:02 -0700 | |
commit | 1bf3e71ad06a318613ccc09e1cf47d3c2465b23c (patch) | |
tree | 59aaa63ab864fdf4a6713d84b7a86eaac8dc8d71 /src/gpu/vk | |
parent | 44583122acff3251f48a98c71fa3180275e8437e (diff) |
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
Diffstat (limited to 'src/gpu/vk')
-rw-r--r-- | src/gpu/vk/GrVkGpu.cpp | 16 | ||||
-rw-r--r-- | src/gpu/vk/GrVkGpu.h | 3 |
2 files changed, 13 insertions, 6 deletions
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; |