Added rect draw api

Added some new maths types
Updated shaders to use new D_Rect structure
Added rect buffers to frames
Misc cleanup
This commit is contained in:
2025-10-05 14:27:05 +01:00
parent 3b8c50a361
commit 1757fc4b96
14 changed files with 432 additions and 121 deletions

View File

@@ -372,6 +372,16 @@ bool Vk_Setup(SDL_Window *window) {
vk.CreateDescriptorPool(vk.device, &descriptor_pool, 0, &frame->descriptors);
// rect buffer
//
Vk_Buffer *rbo = &frame->rbo;
rbo->usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
rbo->size = D_MAX_RECTS * sizeof(D_Rect);
rbo->host_visible = true;
Vk_BufferCreate(rbo);
VkSemaphoreCreateInfo semaphore = { 0 };
semaphore.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
@@ -547,7 +557,7 @@ internal VkDeviceMemory Vk_Allocate(VkMemoryRequirements *mreq, VkMemoryProperty
}
}
if (type_index != -1) {
if (type_index != U32_MAX) {
VkMemoryAllocateInfo alloc_info = { 0 };
alloc_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
alloc_info.allocationSize = mreq->size;
@@ -556,6 +566,7 @@ internal VkDeviceMemory Vk_Allocate(VkMemoryRequirements *mreq, VkMemoryProperty
vk.AllocateMemory(vk.device, &alloc_info, 0, &result);
}
Assert(result != VK_NULL_HANDLE);
return result;
}
@@ -566,6 +577,7 @@ void Vk_BufferCreate(Vk_Buffer *buffer) {
create_info.size = buffer->size;
vk.CreateBuffer(vk.device, &create_info, 0, &buffer->handle);
Assert(buffer->handle != VK_NULL_HANDLE);
VkMemoryRequirements req;
vk.GetBufferMemoryRequirements(vk.device, buffer->handle, &req);
@@ -580,6 +592,7 @@ void Vk_BufferCreate(Vk_Buffer *buffer) {
if (buffer->host_visible) {
vk.MapMemory(vk.device, buffer->memory, 0, buffer->size, 0, &buffer->data);
}
}
void Vk_ImageCreate(Vk_Image *image) {