diff options
Diffstat (limited to 'src/vulkan/transfer_buffer.h')
-rw-r--r-- | src/vulkan/transfer_buffer.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/vulkan/transfer_buffer.h b/src/vulkan/transfer_buffer.h index 2c0a51d..7d96bec 100644 --- a/src/vulkan/transfer_buffer.h +++ b/src/vulkan/transfer_buffer.h @@ -34,7 +34,17 @@ class TransferBuffer : public Resource { TransferBuffer(Device* device, uint32_t size_in_bytes, Format* format); ~TransferBuffer() override; - Result Initialize(const VkBufferUsageFlags usage); + TransferBuffer* AsTransferBuffer() override { return this; } + Result AddUsageFlags(VkBufferUsageFlags flags) { + if (buffer_ != VK_NULL_HANDLE) { + return Result( + "Vulkan: TransferBuffer::AddUsageFlags Usage flags can't be changed " + "after initializing the buffer."); + } + usage_flags_ |= flags; + return {}; + } + Result Initialize() override; const VkBufferView* GetVkBufferView() const { return &view_; } VkBuffer GetVkBuffer() const { return buffer_; } @@ -47,6 +57,7 @@ class TransferBuffer : public Resource { void CopyToHost(CommandBuffer* command_buffer) override; private: + VkBufferUsageFlags usage_flags_ = 0; VkBuffer buffer_ = VK_NULL_HANDLE; VkDeviceMemory memory_ = VK_NULL_HANDLE; VkBufferView view_ = VK_NULL_HANDLE; |