From c2d46d328b886164513d57cb20df47ea20427ac0 Mon Sep 17 00:00:00 2001 From: Noah Metz Date: Tue, 29 Oct 2024 00:27:38 -0600 Subject: [PATCH] Cleanup --- client/src/draw.c | 56 ++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/client/src/draw.c b/client/src/draw.c index 99cfcbc..cad0276 100644 --- a/client/src/draw.c +++ b/client/src/draw.c @@ -57,7 +57,9 @@ VkResult draw_frame( double time) { VkResult result; - VkFence fences[] = {context->frame[context->current_frame].ready}; + FrameContext* frame = &context->frame[context->current_frame]; + + VkFence fences[] = {frame->ready}; VK_RESULT(vkWaitForFences(context->device, 1, fences, VK_TRUE, UINT64_MAX)); VK_RESULT(vkResetFences(context->device, 1, fences)); @@ -65,28 +67,28 @@ VkResult draw_frame( .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, }; - if(context->frame[context->current_frame].transfer_count > 0) { - VkCommandBuffer transfer_commands = context->frame[context->current_frame].transfer_commands; + if(frame->transfer_count > 0) { + VkCommandBuffer transfer_commands = frame->transfer_commands; VK_RESULT(vkResetCommandBuffer(transfer_commands, 0)); VK_RESULT(vkBeginCommandBuffer(transfer_commands, &begin_info)); VkDeviceSize src_offset = 0; - for(uint32_t tid = 0; tid < context->frame[context->current_frame].transfer_count; tid++) { + for(uint32_t tid = 0; tid < frame->transfer_count; tid++) { command_copy_buffer( transfer_commands, - context->frame[context->current_frame].transfer_buffer, - context->frame[context->current_frame].transfer_infos[tid].buffer, + frame->transfer_buffer, + frame->transfer_infos[tid].buffer, src_offset, - context->frame[context->current_frame].transfer_infos[tid].offset, - context->frame[context->current_frame].transfer_infos[tid].size); - src_offset += context->frame[context->current_frame].transfer_infos[tid].size; + frame->transfer_infos[tid].offset, + frame->transfer_infos[tid].size); + src_offset += frame->transfer_infos[tid].size; } VK_RESULT(vkEndCommandBuffer(transfer_commands)); VkPipelineStageFlags wait_stages[] = {VK_PIPELINE_STAGE_TRANSFER_BIT}; - VkSemaphore transfer_signals[] = {context->frame[context->current_frame].transfer}; - VkSemaphore transfer_waits[] = {context->frame[context->current_frame].frame}; - uint64_t transfer_wait_values[] = {context->frame[context->current_frame].frame_index}; + VkSemaphore transfer_signals[] = {frame->transfer}; + VkSemaphore transfer_waits[] = {frame->frame}; + uint64_t transfer_wait_values[] = {frame->frame_index}; VkTimelineSemaphoreSubmitInfo timeline_info = { .sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, .waitSemaphoreValueCount = sizeof(transfer_wait_values)/sizeof(uint64_t), @@ -104,20 +106,20 @@ VkResult draw_frame( .pNext = &timeline_info, }; VK_RESULT(vkQueueSubmit(context->transfer_queue.handle, 1, &submit_info, VK_NULL_HANDLE)); - context->frame[context->current_frame].transfer_count = 0; - context->frame[context->current_frame].transfer_written = 0; + frame->transfer_count = 0; + frame->transfer_written = 0; - VkCommandBuffer compute_commands = context->frame[context->current_frame].compute_commands; + VkCommandBuffer compute_commands = frame->compute_commands; VK_RESULT(vkResetCommandBuffer(compute_commands, 0)); VK_RESULT(vkBeginCommandBuffer(compute_commands, &begin_info)); record_ui_compute(compute_commands, ui, context->current_frame); VK_RESULT(vkEndCommandBuffer(compute_commands)); VkPipelineStageFlags compute_wait_stages[] = {VK_PIPELINE_STAGE_TRANSFER_BIT | VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT}; - context->frame[context->current_frame].compute_index += 1; - VkSemaphore compute_signals[] = {context->frame[context->current_frame].compute}; - uint64_t compute_signal_values[] = {context->frame[context->current_frame].compute_index}; - VkSemaphore compute_waits[] = {context->frame[context->current_frame].transfer}; + frame->compute_index += 1; + VkSemaphore compute_signals[] = {frame->compute}; + uint64_t compute_signal_values[] = {frame->compute_index}; + VkSemaphore compute_waits[] = {frame->transfer}; VkTimelineSemaphoreSubmitInfo compute_timeline = { .sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, .signalSemaphoreValueCount = sizeof(compute_signal_values)/sizeof(uint64_t), @@ -138,7 +140,7 @@ VkResult draw_frame( } uint32_t image_index; - result = vkAcquireNextImageKHR(context->device, context->swapchain, UINT64_MAX, context->frame[context->current_frame].image, VK_NULL_HANDLE, &image_index); + result = vkAcquireNextImageKHR(context->device, context->swapchain, UINT64_MAX, frame->image, VK_NULL_HANDLE, &image_index); if(result != VK_SUCCESS) { return result; } @@ -180,11 +182,11 @@ VkResult draw_frame( VK_RESULT(vkEndCommandBuffer(command_buffer)); VkPipelineStageFlags wait_stages[] = {VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT}; - VkSemaphore wait_semaphores[] = {context->frame[context->current_frame].image, context->frame[context->current_frame].compute}; - VkSemaphore signal_semaphores[] = {context->frame[context->current_frame].render, context->frame[context->current_frame].frame}; - context->frame[context->current_frame].frame_index += 1; - uint64_t wait_values[] = {0, context->frame[context->current_frame].compute_index}; - uint64_t signal_values[] = {0, context->frame[context->current_frame].frame_index}; + VkSemaphore wait_semaphores[] = {frame->image, frame->compute}; + VkSemaphore signal_semaphores[] = {frame->render, frame->frame}; + frame->frame_index += 1; + uint64_t wait_values[] = {0, frame->compute_index}; + uint64_t signal_values[] = {0, frame->frame_index}; VkTimelineSemaphoreSubmitInfo timeline_info = { .sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, .signalSemaphoreValueCount = sizeof(signal_values)/sizeof(uint64_t), @@ -204,7 +206,7 @@ VkResult draw_frame( .pNext = &timeline_info, }; - result = vkQueueSubmit(context->graphics_queue.handle, 1, &submit_info, context->frame[context->current_frame].ready); + result = vkQueueSubmit(context->graphics_queue.handle, 1, &submit_info, frame->ready); if(result != VK_SUCCESS) { return result; } @@ -212,7 +214,7 @@ VkResult draw_frame( VkPresentInfoKHR present_info = { .sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, .waitSemaphoreCount = 1, - .pWaitSemaphores = &context->frame[context->current_frame].render, + .pWaitSemaphores = &frame->render, .swapchainCount = 1, .pSwapchains = &context->swapchain, .pImageIndices = &image_index,