move present over to sync extension

This commit is contained in:
Gregory Wells
2025-07-09 20:35:16 -04:00
parent f44b73665b
commit 9ae7689ab8
11 changed files with 64 additions and 8 deletions

View File

@@ -1,6 +1,7 @@
#include "vulkan_present.h"
#include "extensions/synchronization/commands/gryphn_sync_present.h"
gnReturnCode present(gnDevice device, gnPresentInfo info) {
gnReturnCode vulkanPresentSync(gnDevice device, gnPresentSyncInfo info) {
VkSemaphore* waitSemaphores = malloc(sizeof(VkSemaphore) * info.waitCount);
for (int i = 0; i < info.waitCount; i++) waitSemaphores[i] = info.waitSemaphores[i]->semaphore->semaphore;
@@ -24,3 +25,26 @@ gnReturnCode present(gnDevice device, gnPresentInfo info) {
if (result == VK_SUBOPTIMAL_KHR) return GN_SUBOPTIMAL_PRESENTATION_QUEUE;
return GN_SUCCESS;
}
gnReturnCode vulkanPresent(gnDevice device, gnPresentInfo info) {
VkSwapchainKHR* swapchains = malloc(sizeof(VkSwapchainKHR) * info.presentationQueueCount);
for (int i = 0; i < info.presentationQueueCount; i++) swapchains[i] = info.presentationQueues[i]->presentationQueue->swapChain;
VkPresentInfoKHR presentInfo = {
.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
.waitSemaphoreCount = 0,
.pWaitSemaphores = NULL,
.swapchainCount = info.presentationQueueCount,
.pSwapchains = swapchains,
.pImageIndices = info.imageIndices
};
VkQueue queue;
vkGetDeviceQueue(device->outputDevice->device, info.queueIndex, 0, &queue);
VkResult result = vkQueuePresentKHR(queue, &presentInfo);
if (result == VK_ERROR_OUT_OF_DATE_KHR) return GN_OUT_OF_DATE_PRESENTATION_QUEUE;
if (result == VK_SUBOPTIMAL_KHR) return GN_SUBOPTIMAL_PRESENTATION_QUEUE;
return GN_SUCCESS;
}

View File

@@ -3,4 +3,5 @@
#include <presentation_queue/vulkan_presentation_queue.h>
#include <output_device/vulkan_output_devices.h>
gnReturnCode present(gnDevice device, gnPresentInfo info);
gnReturnCode vulkanPresentSync(gnDevice device, gnPresentSyncInfo info);
gnReturnCode vulkanPresent(gnDevice device, gnPresentInfo info);