47 if (vk_buffer_view_ != VK_NULL_HANDLE) {
51 VkBufferViewCreateInfo buffer_view_info = {};
54 buffer_view_info.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
55 buffer_view_info.buffer = buffer_.
vk_handle();
62 device.
vk_handle(), &buffer_view_info, vk_allocation_callbacks, &vk_buffer_view_);
80 buffer_.
read(context, data);
112 if (vk_buffer_view_ != VK_NULL_HANDLE) {
115 vkDestroyBufferView(device.
vk_handle(), vk_buffer_view_, vk_allocation_callbacks);
116 vk_buffer_view_ = VK_NULL_HANDLE;
122void VKVertexBuffer::upload_data_direct(
const VKBuffer &host_buffer)
127 std::cout <<
"PERFORMANCE: Vertex buffer requires conversion.\n";
137void VKVertexBuffer::upload_data_via_staging_buffer(VKContext &context)
140 upload_data_direct(staging_buffer.host_buffer_get());
141 staging_buffer.copy_to_device(context);
156 upload_data_direct(buffer_);
160 upload_data_via_staging_buffer(context);
166 flag &= ~GPU_VERTBUF_DATA_DIRTY;
180 vertex_format_converter.
init(&
format, workarounds);
189void VKVertexBuffer::allocate()
191 VkBufferUsageFlags vk_buffer_usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT |
192 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
193 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT |
194 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT |
195 VK_BUFFER_USAGE_TRANSFER_DST_BIT;
@ GPU_VERTBUF_DATA_UPLOADED
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, 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 * mapped_memory_get() const
int64_t size_in_bytes() const
VkDevice vk_handle() const
const VKWorkarounds & workarounds_get() const
const VKBuffer & host_buffer_get() const
void copy_from_device(VKContext &context)
void texel_buffer_bind(VKVertexBuffer &vertex_buffer, int slot)
void storage_buffer_bind(BindSpaceStorageBuffers::Type resource_type, void *resource, int binding)
void duplicate_data(VertBuf *dst) override
void release_data() override
const GPUVertFormat & device_format_get() const
void acquire_data() override
void update_sub(uint start, uint len, const void *data) override
void device_format_ensure()
void upload_data() override
void wrap_handle(uint64_t handle) override
void bind_as_ssbo(uint binding) override
void ensure_buffer_view()
void bind_as_texture(uint binding) override
void read(void *data) const override
void resize_data() override
size_t size_alloc_get() const
void *(* MEM_mallocN)(size_t len, const char *str)
void object_label(GLenum type, GLuint object, const char *name)
VkFormat to_vk_format(const eGPUTextureFormat format)
static eGPUTextureFormat to_texture_format(const GPUVertFormat *format)
unsigned __int64 uint64_t
#define NOT_YET_IMPLEMENTED
#define VK_ALLOCATION_CALLBACKS