aboutsummaryrefslogtreecommitdiff
path: root/src/vulkan/transfer_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vulkan/transfer_buffer.h')
-rw-r--r--src/vulkan/transfer_buffer.h13
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;