Bug fixes

This commit is contained in:
2026-06-21 20:09:54 +01:00
parent a425166018
commit ef12ba03d8
+27 -24
View File
@@ -374,7 +374,8 @@ int main() {
VmaAllocatorCreateInfo allocator_create_info = {}; VmaAllocatorCreateInfo allocator_create_info = {};
allocator_create_info.flags = VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT | allocator_create_info.flags = VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT |
VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT; VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT |
VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT;
allocator_create_info.instance = instance; allocator_create_info.instance = instance;
allocator_create_info.physicalDevice = physical_device; allocator_create_info.physicalDevice = physical_device;
allocator_create_info.device = device; allocator_create_info.device = device;
@@ -530,8 +531,8 @@ int main() {
}; };
u16 idx = (u16)wapp_array_count(indices); u16 idx = (u16)wapp_array_count(indices);
wapp_array_append_alloc(Vertex, &arena, vertices, &v, ARRAY_INIT_NONE); vertices = wapp_array_append_alloc(Vertex, &arena, vertices, &v, ARRAY_INIT_NONE);
wapp_array_append_alloc(u16, &arena, indices, &idx, ARRAY_INIT_NONE); indices = wapp_array_append_alloc(u16, &arena, indices, &idx, ARRAY_INIT_NONE);
} }
// }}} // }}}
@@ -565,20 +566,20 @@ int main() {
shader_data_bufs = wapp_array_with_capacity(ShaderDataBuffer, max_frames_in_flight, ARRAY_INIT_FILLED); shader_data_bufs = wapp_array_with_capacity(ShaderDataBuffer, max_frames_in_flight, ARRAY_INIT_FILLED);
for (u32 i = 0; i < max_frames_in_flight; ++i) { for (u32 i = 0; i < max_frames_in_flight; ++i) {
// {{{ Create Buffer // {{{ Create Buffer
VkBufferUsageFlags2CreateInfo data_buf_usage_flags = {}; VkBufferUsageFlags2CreateInfo buf_usage_flags = {};
data_buf_usage_flags.sType = VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO; buf_usage_flags.sType = VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO;
data_buf_usage_flags.usage = VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT; buf_usage_flags.usage = VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT;
VkBufferCreateInfo data_buf_create_info = {}; VkBufferCreateInfo data_buf_create_info = {};
data_buf_create_info.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; data_buf_create_info.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
data_buf_create_info.size = sizeof(ShaderData); data_buf_create_info.size = sizeof(ShaderData);
data_buf_create_info.usage = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT; data_buf_create_info.pNext = &buf_usage_flags;
data_buf_create_info.pNext = &data_buf_usage_flags;
VmaAllocationCreateInfo data_buf_alloc_create_info = {}; VmaAllocationCreateInfo data_buf_alloc_create_info = {};
data_buf_alloc_create_info.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT | data_buf_alloc_create_info.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT |
VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT | VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT |
VMA_ALLOCATION_CREATE_MAPPED_BIT; VMA_ALLOCATION_CREATE_MAPPED_BIT;
data_buf_create_info.usage = VMA_MEMORY_USAGE_AUTO; data_buf_alloc_create_info.usage = VMA_MEMORY_USAGE_AUTO;
check(vmaCreateBuffer(allocator, &data_buf_create_info, &data_buf_alloc_create_info, check(vmaCreateBuffer(allocator, &data_buf_create_info, &data_buf_alloc_create_info,
&shader_data_bufs[i].buffer, &shader_data_bufs[i].allocation, &shader_data_bufs[i].buffer, &shader_data_bufs[i].allocation,
@@ -1124,7 +1125,7 @@ int main() {
* - Poll events * - Poll events
*/ */
object_rotations = wapp_array_with_capacity(glm::vec3, 3, ARRAY_INIT_FILLED); object_rotations = wapp_array_with_capacity(glm::vec3, instance_count, ARRAY_INIT_FILLED);
u64 last_time = SDL_GetTicks(); u64 last_time = SDL_GetTicks();
SDL_Event event = {}; SDL_Event event = {};
@@ -1144,7 +1145,7 @@ int main() {
shader_data.projection = glm::perspective(glm::radians(45.0f), (f32)window_size.x / (f32)window_size.y, shader_data.projection = glm::perspective(glm::radians(45.0f), (f32)window_size.x / (f32)window_size.y,
0.1f, 32.0f); 0.1f, 32.0f);
shader_data.view = glm::translate(glm::mat4(1.0f), camera_position); shader_data.view = glm::translate(glm::mat4(1.0f), camera_position);
for (u32 i = 0; i < instance_count; ++i) { for (i32 i = 0; i < instance_count; ++i) {
glm::vec3 instance_pos = glm::vec3((f32)(i - 1) * 3.0f, 0.0f, 0.0f); glm::vec3 instance_pos = glm::vec3((f32)(i - 1) * 3.0f, 0.0f, 0.0f);
shader_data.model[i] = glm::translate(glm::mat4(1.0f), instance_pos) * shader_data.model[i] = glm::translate(glm::mat4(1.0f), instance_pos) *
glm::mat4_cast(glm::quat(object_rotations[i])); glm::mat4_cast(glm::quat(object_rotations[i]));
@@ -1179,17 +1180,17 @@ int main() {
memory_barriers[0].subresourceRange.layerCount = 1; memory_barriers[0].subresourceRange.layerCount = 1;
// Depth Attachment // Depth Attachment
memory_barriers[0].sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2; memory_barriers[1].sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2;
memory_barriers[0].srcStageMask = VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT; memory_barriers[1].srcStageMask = VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT;
memory_barriers[0].srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; memory_barriers[1].srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
memory_barriers[0].dstStageMask = VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT; memory_barriers[1].dstStageMask = VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT;
memory_barriers[0].dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; memory_barriers[1].dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
memory_barriers[0].oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; memory_barriers[1].oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
memory_barriers[0].newLayout = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL; memory_barriers[1].newLayout = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL;
memory_barriers[0].image = depth_image; memory_barriers[1].image = depth_image;
memory_barriers[0].subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; memory_barriers[1].subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
memory_barriers[0].subresourceRange.levelCount = 1; memory_barriers[1].subresourceRange.levelCount = 1;
memory_barriers[0].subresourceRange.layerCount = 1; memory_barriers[1].subresourceRange.layerCount = 1;
// {{{ Transition Layout Color And Depth Images // {{{ Transition Layout Color And Depth Images
VkDependencyInfo barrier_dependency_info = {}; VkDependencyInfo barrier_dependency_info = {};
@@ -1202,7 +1203,7 @@ int main() {
// {{{ Dynamic Rendering Commands // {{{ Dynamic Rendering Commands
VkClearValue color_clear_value = {}; VkClearValue color_clear_value = {};
color_clear_value.color = { 0.0f, 0.0f, 0.2f, 1.0f }; color_clear_value.color = { 0.0f, 0.0f, 0.0f, 0.0f };
VkClearValue depth_clear_value = {}; VkClearValue depth_clear_value = {};
depth_clear_value.depthStencil = { 1.0f, 0 }; depth_clear_value.depthStencil = { 1.0f, 0 };
@@ -1347,7 +1348,7 @@ int main() {
break; break;
} }
// Select active model instance // Select active model instance
if (event.key.key == SDLK_PLUS || event.key.key == SDLK_KP_PLUS) { if (event.key.key == SDLK_PLUS || event.key.key == SDLK_KP_PLUS || event.key.key == SDLK_EQUALS) {
shader_data.selected = (shader_data.selected < 2) ? shader_data.selected + 1 : 0; shader_data.selected = (shader_data.selected < 2) ? shader_data.selected + 1 : 0;
} }
if (event.key.key == SDLK_MINUS || event.key.key == SDLK_KP_MINUS) { if (event.key.key == SDLK_MINUS || event.key.key == SDLK_KP_MINUS) {
@@ -1376,6 +1377,8 @@ int main() {
// }}} // }}}
// {{{ Cleanup // {{{ Cleanup
check(vkQueueWaitIdle(queue));
vkDestroyPipeline(device, graphics_pipeline, NULL); vkDestroyPipeline(device, graphics_pipeline, NULL);
vkDestroyPipelineLayout(device, graphics_pipeline_layout, NULL); vkDestroyPipelineLayout(device, graphics_pipeline_layout, NULL);
vkDestroyShaderModule(device, shader_module, NULL); vkDestroyShaderModule(device, shader_module, NULL);