From ebc9a92f37bd4783a20ce2440cfa87ea32567977 Mon Sep 17 00:00:00 2001 From: Greg Wells Date: Wed, 16 Jul 2025 19:31:46 -0400 Subject: [PATCH] get vulkan queues --- .../vulkan/src/extensions/queues/vulkan_device_queues.c | 7 +++++++ .../vulkan/src/extensions/queues/vulkan_device_queues.h | 1 + projects/core/src/gryphn_handles.h | 6 +++++- projects/extensions/queues/gryphn_queue.h | 4 ++++ projects/extensions/queues/queues_functions.h | 1 + 5 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 projects/extensions/queues/gryphn_queue.h diff --git a/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.c b/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.c index 8fcb095..6d9a1b8 100644 --- a/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.c +++ b/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.c @@ -1,4 +1,5 @@ #include "vulkan_device_queues.h" +#include "output_device/vulkan_output_devices.h" gnReturnCode vulkanPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device, uint32_t queueFamilyCount, gnQueueFamilyProperties* queues) { vkGetPhysicalDeviceQueueFamilyProperties(device->physicalDevice->device, &queueFamilyCount, NULL); @@ -20,3 +21,9 @@ gnReturnCode vulkanPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle de return GN_SUCCESS; } + +void gnGetDeviceQueue(gnOutputDevice device, uint32_t queueFamily, uint32_t queueIndex, gnQueue* queue) { + VkQueue vulkanQueue; + vkGetDeviceQueue(device->outputDevice->device, queueFamily, queueIndex, &vulkanQueue); + *queue = (uint64_t)vulkanQueue; +} diff --git a/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.h b/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.h index 38e6dfd..b065ee5 100644 --- a/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.h +++ b/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.h @@ -1,4 +1,5 @@ #pragma once +#include #include #include diff --git a/projects/core/src/gryphn_handles.h b/projects/core/src/gryphn_handles.h index 6907892..65a4ad3 100644 --- a/projects/core/src/gryphn_handles.h +++ b/projects/core/src/gryphn_handles.h @@ -8,6 +8,10 @@ typedef uint32_t gnFlags; typedef struct type##_t* type##Handle; \ typedef struct type##_t* type +#define GN_IMPLEMENTATION_HANDLE(type) \ +typedef uint64_t type##Handle; \ +typedef uint64_t type + #define GN_HANDLE_ALIAS(handle, alias) \ typedef struct handle##_t* alias##Handle; \ typedef struct handle##_t* alias @@ -36,4 +40,4 @@ GN_HANDLE(gnUniform); GN_HANDLE(gnSemaphore); GN_HANDLE(gnFence); // GN_EXT_QUEUES -GN_HANDLE(gnQueue); // NOTE: this is an implementaion specific object +GN_IMPLEMENTATION_HANDLE(gnQueue); // NOTE: this is an implementaion specific object diff --git a/projects/extensions/queues/gryphn_queue.h b/projects/extensions/queues/gryphn_queue.h new file mode 100644 index 0000000..783ca8a --- /dev/null +++ b/projects/extensions/queues/gryphn_queue.h @@ -0,0 +1,4 @@ +#pragma once +#include + +void gnGetDeviceQueue(gnOutputDevice device, uint32_t queueFamily, uint32_t queueIndex, gnQueue* queue); diff --git a/projects/extensions/queues/queues_functions.h b/projects/extensions/queues/queues_functions.h index 54fe653..eed8f1b 100644 --- a/projects/extensions/queues/queues_functions.h +++ b/projects/extensions/queues/queues_functions.h @@ -7,4 +7,5 @@ typedef struct gnQueueFamilyProperties gnQueueFamilyProperties; typedef struct gnQueueExtFunctions { gnReturnCode (*_gnGetPhysicalDeviceQueueProperties)(gnPhysicalOutputDeviceHandle device, uint32_t queueCount, gnQueueFamilyProperties* queues); + void (*_gnGetDeviceQueue)(gnOutputDevice device, uint32_t queueFamily, uint32_t queueIndex, gnQueue* queue); } gnQueueExtFunctions;