diff options
Diffstat (limited to 'src/gpu/vk/GrVkGpu.cpp')
-rw-r--r-- | src/gpu/vk/GrVkGpu.cpp | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/src/gpu/vk/GrVkGpu.cpp b/src/gpu/vk/GrVkGpu.cpp index 21e4ee358d..5796f11d51 100644 --- a/src/gpu/vk/GrVkGpu.cpp +++ b/src/gpu/vk/GrVkGpu.cpp @@ -171,18 +171,26 @@ void GrVkGpu::submitCommandBuffer(SyncQueue sync) { } /////////////////////////////////////////////////////////////////////////////// -GrVertexBuffer* GrVkGpu::onCreateVertexBuffer(size_t size, bool dynamic) { - return GrVkVertexBuffer::Create(this, size, dynamic); -} - -GrIndexBuffer* GrVkGpu::onCreateIndexBuffer(size_t size, bool dynamic) { - return GrVkIndexBuffer::Create(this, size, dynamic); -} - -GrTransferBuffer* GrVkGpu::onCreateTransferBuffer(size_t size, TransferType type) { - GrVkBuffer::Type bufferType = kCpuToGpu_TransferType ? GrVkBuffer::kCopyRead_Type - : GrVkBuffer::kCopyWrite_Type; - return GrVkTransferBuffer::Create(this, size, bufferType); +GrBuffer* GrVkGpu::onCreateBuffer(GrBufferType type, size_t size, GrAccessPattern accessPattern) { + switch (type) { + case kVertex_GrBufferType: + SkASSERT(kDynamic_GrAccessPattern == accessPattern || + kStatic_GrAccessPattern == accessPattern); + return 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); + case kXferCpuToGpu_GrBufferType: + SkASSERT(kStream_GrAccessPattern == accessPattern); + return GrVkTransferBuffer::Create(this, size, GrVkBuffer::kCopyRead_Type); + case kXferGpuToCpu_GrBufferType: + SkASSERT(kStream_GrAccessPattern == accessPattern); + return GrVkTransferBuffer::Create(this, size, GrVkBuffer::kCopyWrite_Type); + default: + SkFAIL("Unknown buffer type."); + return nullptr; + } } //////////////////////////////////////////////////////////////////////////////// @@ -1217,8 +1225,9 @@ bool GrVkGpu::onReadPixels(GrSurface* surface, false); GrVkTransferBuffer* transferBuffer = - reinterpret_cast<GrVkTransferBuffer*>(this->createTransferBuffer(rowBytes * height, - kGpuToCpu_TransferType)); + static_cast<GrVkTransferBuffer*>(this->createBuffer(kXferGpuToCpu_GrBufferType, + rowBytes * height, + kStream_GrAccessPattern)); bool flipY = kBottomLeft_GrSurfaceOrigin == surface->origin(); VkOffset3D offset = { |