load vulkan queue function

This commit is contained in:
Greg Wells
2025-07-16 13:03:55 -04:00
parent 5e3f9e0a37
commit 3474ce4288
8 changed files with 49 additions and 3 deletions

View File

@@ -2,6 +2,6 @@
gnBool metalIsExtensionSupported(gnExtension extension) {
if (extension == GN_EXT_SYNCHRONIZATION) return gnTrue;
if (extension == GN_EXT_QUEUES) return gnTrue;
if (extension == GN_EXT_QUEUES) return gnFalse;
return gnFalse;
}

View File

@@ -3,11 +3,13 @@
#include "loader/src/gryphn_device_functions.h"
#include "loader/src/gryphn_command_functions.h"
#include "extensions/synchronization/loader/sync_functions.h"
#include "extensions/queues/queues_functions.h"
#include "core/gryphn_extensions.h"
gnInstanceFunctions loadVulkanInstanceFunctions();
gnDeviceFunctions loadVulkanDeviceFunctions();
gnCommandFunctions loadVulkanCommandFunctions();
gnSyncExtFunctions loadVulkanSyncFunctions();
gnQueueExtFunctions loadVulkanQueueFunctions();
gnBool vulkanIsExtensionSupported(gnExtension extension);

View File

@@ -0,0 +1,8 @@
#include "vulkan_loader.h"
#include "extensions/queues/vulkan_device_queues.h"
gnQueueExtFunctions loadVulkanQueueFunctions() {
return (gnQueueExtFunctions) {
._gnGetPhysicalDeviceQueueProperties = vulkanPhysicalDeviceQueueProperties
};
}

View File

@@ -1,5 +1,4 @@
#include <output_device/vulkan_physical_device.h>
#include "extensions/queues/gryphn_physcial_device_queue.h"
#include "vulkan_device_queues.h"
gnReturnCode vulkanPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device, uint32_t queueFamilyCount, gnQueueFamilyProperties* queues) {
vkGetPhysicalDeviceQueueFamilyProperties(device->physicalDevice->device, &queueFamilyCount, NULL);

View File

@@ -0,0 +1,6 @@
#pragma once
#include <output_device/vulkan_physical_device.h>
#include <extensions/queues/gryphn_physcial_device_queue.h>
gnReturnCode vulkanPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device, uint32_t queueFamilyCount, gnQueueFamilyProperties* queues);

View File

@@ -0,0 +1,10 @@
#pragma once
#include "stdint.h"
#include "utils/gryphn_error_code.h"
#include "core/src/gryphn_handles.h"
typedef struct gnQueueFamilyProperties gnQueueFamilyProperties;
typedef struct gnQueueExtFunctions {
gnReturnCode (*_gnGetPhysicalDeviceQueueProperties)(gnPhysicalOutputDeviceHandle device, uint32_t queueCount, gnQueueFamilyProperties* queues);
} gnQueueExtFunctions;

View File

@@ -93,6 +93,25 @@ gnSyncExtFunctions loadAPISyncFunctions(gnRenderingAPI api) {
}
}
gnQueueExtFunctions loadAPIQueueFunctions(gnRenderingAPI api) {
switch (api) {
case GN_RENDERINGAPI_NONE: return (gnQueueExtFunctions){ NULL };
#ifdef GN_API_VULKAN
case GN_RENDERINGAPI_VULKAN: return loadVulkanQueueFunctions();
#endif
case GN_RENDERINGAPI_SOFTWARE: return (gnQueueExtFunctions){ NULL };
case GN_RENDERINGAPI_DIRECTX11: return (gnQueueExtFunctions){ NULL };
case GN_RENDERINGAPI_DIRECTX12: return (gnQueueExtFunctions){ NULL };
case GN_RENDERINGAPI_OPENGL: return (gnQueueExtFunctions){ NULL };
#ifdef GN_API_METAL
case GN_RENDERINGAPI_METAL: return (gnQueueExtFunctions){ NULL };
#endif
default: return (gnQueueExtFunctions){NULL};
}
}
loaderLayer null_layer() {
return (loaderLayer){
.instanceFunctions = (gnInstanceFunctions){ NULL },

View File

@@ -6,6 +6,7 @@
#include "utils/lists/gryphn_array_list.h"
#include "extensions/synchronization/loader/sync_functions.h"
#include "extensions/queues/queues_functions.h"
typedef struct loaderLayer {
// idk why I sperate these info different classes, I should really shove them in one bit class
@@ -16,6 +17,7 @@ typedef struct loaderLayer {
gnCommandFunctions commandFunctions;
gnSyncExtFunctions syncFunctions;
gnQueueExtFunctions queueFunctions;
// this index is not set by loadLayer, set by gnCreateInstance, also not used for now
uint32_t layerIndex;