kiba-engine
sync.c
1 #include <kiba/renderer/vulkan/sync.h>
2 
3 b8 vulkan_sync_create(vulkan_context *context) {
4  VkSemaphoreCreateInfo sp_create_info = {
5  .sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6  };
7  VK_CALL_B8(vkCreateSemaphore(context->device.logical,
8  &sp_create_info,
9  &context->alloc.vulkan_callbacks,
10  &context->sync.sp_image_available));
11  VK_CALL_B8(vkCreateSemaphore(context->device.logical,
12  &sp_create_info,
13  &context->alloc.vulkan_callbacks,
14  &context->sync.sp_render_finished));
15 
16  VkFenceCreateInfo fc_create_info = {
17  .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
18  .flags = VK_FENCE_CREATE_SIGNALED_BIT,
19  };
20  VK_CALL_B8(vkCreateFence(context->device.logical,
21  &fc_create_info,
22  &context->alloc.vulkan_callbacks,
23  &context->sync.fc_in_flight));
24 
25  return true;
26 }
27 
28 void vulkan_sync_destroy(vulkan_context *context) {
29  vkDestroyFence(context->device.logical, context->sync.fc_in_flight, &context->alloc.vulkan_callbacks);
30  vkDestroySemaphore(context->device.logical, context->sync.sp_render_finished, &context->alloc.vulkan_callbacks);
31  vkDestroySemaphore(context->device.logical, context->sync.sp_image_available, &context->alloc.vulkan_callbacks);
32 }