diff --git a/projects/apis/vulkan/src/output_device/vulkan_output_device.c b/projects/apis/vulkan/src/output_device/vulkan_output_device.c index 5c761b4..4707358 100644 --- a/projects/apis/vulkan/src/output_device/vulkan_output_device.c +++ b/projects/apis/vulkan/src/output_device/vulkan_output_device.c @@ -85,6 +85,9 @@ gnReturnCode createOutputDevice(gnOutputDeviceHandle outputDevice, gnInstanceHan free(queueCreateInfos); free(queueFamilies); + VkFenceCreateInfo fenceInfo = { .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO }; + if (vkCreateFence(outputDevice->outputDevice->device, &fenceInfo, NULL, &outputDevice->outputDevice->barrierFence) != VK_SUCCESS) return GN_FAILED_TO_CREATE_FENCE; + // create the massive staging buffer outputDevice->outputDevice->stagingBufferSize = 128 * 1024 * 1024; gnReturnCode code = VkCreateBuffer( @@ -101,6 +104,7 @@ void waitForDevice(const gnOutputDeviceHandle device) { } void destroyOutputDevice(gnOutputDeviceHandle device) { + vkDestroyFence(device->outputDevice->device, device->outputDevice->barrierFence, NULL); gnDestroyVulkanBuffer(&device->outputDevice->stagingBuffer, device->outputDevice->device); vkDestroyCommandPool(device->outputDevice->device, device->outputDevice->transferCommandPool, NULL); vkDestroyDevice(device->outputDevice->device, NULL); diff --git a/projects/apis/vulkan/src/output_device/vulkan_output_devices.h b/projects/apis/vulkan/src/output_device/vulkan_output_devices.h index 76172a1..fe379bf 100644 --- a/projects/apis/vulkan/src/output_device/vulkan_output_devices.h +++ b/projects/apis/vulkan/src/output_device/vulkan_output_devices.h @@ -14,6 +14,8 @@ typedef struct gnPlatformOutputDevice_t { VkGryphnBuffer stagingBuffer; VkDeviceSize stagingBufferSize; + VkFence barrierFence; + gnBool enabledOversizedDescriptorPools; } gnPlatformOutputDevice;