From b957956bbeb4b2cfca502d4341e7910b4d0b45d2 Mon Sep 17 00:00:00 2001 From: Greg Wells Date: Fri, 23 May 2025 21:53:36 -0400 Subject: [PATCH] has queue helper functions --- .../gryphn_physical_output_device.c | 17 +++++++++++++++++ .../gryphn_physical_output_device.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/src/core/output_device/gryphn_physical_output_device.c b/src/core/output_device/gryphn_physical_output_device.c index db0386a..9fac67d 100644 --- a/src/core/output_device/gryphn_physical_output_device.c +++ b/src/core/output_device/gryphn_physical_output_device.c @@ -23,6 +23,23 @@ gnBool gnQueueCanPresentToSurface(const struct gnPhysicalDevice_t device, uint32 return device.instance->functions->_gnQueueCanPresentToSurface(device, queueIndex, windowSurface); } +gnBool gnHasGraphicsQueue(const struct gnPhysicalDevice_t device) { + for (int i = 0; i < device.queueProperties.queueCount; i++) { + if (device.queueProperties.queueProperties[i].queueType & GN_QUEUE_GRAPHICS) { + return gnTrue; + } + } + return gnFalse; +} +gnBool gnHasPresentQueue(const struct gnPhysicalDevice_t device, struct gnWindowSurface_t windowSurface) { + for (int i = 0; i < device.queueProperties.queueCount; i++) { + if (gnQueueCanPresentToSurface(device, i, windowSurface)) { + return gnTrue; + } + } + return gnFalse; +} + int gnGetGraphicsQueueIndex(const struct gnPhysicalDevice_t device) { for (int i = 0; i < device.queueProperties.queueCount; i++) { if (device.queueProperties.queueProperties[i].queueType & GN_QUEUE_GRAPHICS) { diff --git a/src/core/output_device/gryphn_physical_output_device.h b/src/core/output_device/gryphn_physical_output_device.h index 372cb9d..76c0c31 100644 --- a/src/core/output_device/gryphn_physical_output_device.h +++ b/src/core/output_device/gryphn_physical_output_device.h @@ -41,5 +41,8 @@ typedef struct gnPhysicalDevice_t { gnPhysicalDevice* gnGetPhyscialDevices(gnInstance* instance, uint32_t* count); gnBool gnQueueCanPresentToSurface(const struct gnPhysicalDevice_t device, uint32_t queueIndex, const struct gnWindowSurface_t windowSurface); +gnBool gnHasGraphicsQueue(const struct gnPhysicalDevice_t device); +gnBool gnHasPresentQueue(const struct gnPhysicalDevice_t device, struct gnWindowSurface_t windowSurface); + int gnGetGraphicsQueueIndex(const struct gnPhysicalDevice_t device); int gnGetPresentQueueIndex(const struct gnPhysicalDevice_t device, struct gnWindowSurface_t windowSurface);