39void VKStorageBuffer::allocate()
41 const bool is_host_visible =
false;
42 const VkBufferUsageFlags buffer_usage_flags = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT |
43 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
44 VK_BUFFER_USAGE_TRANSFER_SRC_BIT |
45 VK_BUFFER_USAGE_TRANSFER_DST_BIT;
53 context.state_manager_get().storage_buffer_bind(
61 context->state_manager_get().storage_buffer_unbind(
this);
69 buffer_.
clear(context, clear_value);
77 src_vertex_buffer.
upload();
82 copy_buffer.
region.srcOffset = src_offset;
83 copy_buffer.
region.dstOffset = dst_offset;
84 copy_buffer.
region.size = copy_size;
87 context.render_graph.add_node(copy_buffer);
void GPU_memory_barrier(eGPUBarrier barrier)
@ GPU_BARRIER_BUFFER_UPDATE
char name_[DEBUG_NAME_LEN]
void update_immediately(const void *data) const
bool is_allocated() const
bool create(size_t size, GPUUsageType usage, VkBufferUsageFlags buffer_usage, bool is_host_visible=true)
void read(VKContext &context, void *data) const
VkBuffer vk_handle() const
void clear(VKContext &context, uint32_t clear_value)
const VKBuffer & host_buffer_get() const
void copy_from_device(VKContext &context)
void copy_to_device(VKContext &context)
void update(const void *data) override
VkBuffer vk_handle() const
void async_flush_to_host() override
void clear(uint32_t clear_value) override
void copy_sub(VertBuf *src, uint dst_offset, uint src_offset, uint copy_size) override
void read(void *data) override
VKStorageBuffer(size_t size, GPUUsageType usage, const char *name)
void bind(int slot) override
VkBuffer vk_handle() const
void object_label(GLenum type, GLuint object, const char *name)
static Context * unwrap(GPUContext *ctx)