load vulkan queue function
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
8
projects/apis/vulkan/loader/vulkan_queue_loader.c
Normal file
8
projects/apis/vulkan/loader/vulkan_queue_loader.c
Normal file
@@ -0,0 +1,8 @@
|
||||
#include "vulkan_loader.h"
|
||||
#include "extensions/queues/vulkan_device_queues.h"
|
||||
|
||||
gnQueueExtFunctions loadVulkanQueueFunctions() {
|
||||
return (gnQueueExtFunctions) {
|
||||
._gnGetPhysicalDeviceQueueProperties = vulkanPhysicalDeviceQueueProperties
|
||||
};
|
||||
}
|
@@ -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);
|
||||
|
@@ -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);
|
10
projects/extensions/queues/queues_functions.h
Normal file
10
projects/extensions/queues/queues_functions.h
Normal 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;
|
@@ -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 },
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user