load vulkan queue function
This commit is contained in:
@@ -2,6 +2,6 @@
|
|||||||
|
|
||||||
gnBool metalIsExtensionSupported(gnExtension extension) {
|
gnBool metalIsExtensionSupported(gnExtension extension) {
|
||||||
if (extension == GN_EXT_SYNCHRONIZATION) return gnTrue;
|
if (extension == GN_EXT_SYNCHRONIZATION) return gnTrue;
|
||||||
if (extension == GN_EXT_QUEUES) return gnTrue;
|
if (extension == GN_EXT_QUEUES) return gnFalse;
|
||||||
return gnFalse;
|
return gnFalse;
|
||||||
}
|
}
|
||||||
|
@@ -3,11 +3,13 @@
|
|||||||
#include "loader/src/gryphn_device_functions.h"
|
#include "loader/src/gryphn_device_functions.h"
|
||||||
#include "loader/src/gryphn_command_functions.h"
|
#include "loader/src/gryphn_command_functions.h"
|
||||||
#include "extensions/synchronization/loader/sync_functions.h"
|
#include "extensions/synchronization/loader/sync_functions.h"
|
||||||
|
#include "extensions/queues/queues_functions.h"
|
||||||
#include "core/gryphn_extensions.h"
|
#include "core/gryphn_extensions.h"
|
||||||
|
|
||||||
gnInstanceFunctions loadVulkanInstanceFunctions();
|
gnInstanceFunctions loadVulkanInstanceFunctions();
|
||||||
gnDeviceFunctions loadVulkanDeviceFunctions();
|
gnDeviceFunctions loadVulkanDeviceFunctions();
|
||||||
gnCommandFunctions loadVulkanCommandFunctions();
|
gnCommandFunctions loadVulkanCommandFunctions();
|
||||||
gnSyncExtFunctions loadVulkanSyncFunctions();
|
gnSyncExtFunctions loadVulkanSyncFunctions();
|
||||||
|
gnQueueExtFunctions loadVulkanQueueFunctions();
|
||||||
|
|
||||||
gnBool vulkanIsExtensionSupported(gnExtension extension);
|
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 "vulkan_device_queues.h"
|
||||||
#include "extensions/queues/gryphn_physcial_device_queue.h"
|
|
||||||
|
|
||||||
gnReturnCode vulkanPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device, uint32_t queueFamilyCount, gnQueueFamilyProperties* queues) {
|
gnReturnCode vulkanPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device, uint32_t queueFamilyCount, gnQueueFamilyProperties* queues) {
|
||||||
vkGetPhysicalDeviceQueueFamilyProperties(device->physicalDevice->device, &queueFamilyCount, NULL);
|
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() {
|
loaderLayer null_layer() {
|
||||||
return (loaderLayer){
|
return (loaderLayer){
|
||||||
.instanceFunctions = (gnInstanceFunctions){ NULL },
|
.instanceFunctions = (gnInstanceFunctions){ NULL },
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
#include "utils/lists/gryphn_array_list.h"
|
#include "utils/lists/gryphn_array_list.h"
|
||||||
|
|
||||||
#include "extensions/synchronization/loader/sync_functions.h"
|
#include "extensions/synchronization/loader/sync_functions.h"
|
||||||
|
#include "extensions/queues/queues_functions.h"
|
||||||
|
|
||||||
typedef struct loaderLayer {
|
typedef struct loaderLayer {
|
||||||
// idk why I sperate these info different classes, I should really shove them in one bit class
|
// 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;
|
gnCommandFunctions commandFunctions;
|
||||||
|
|
||||||
gnSyncExtFunctions syncFunctions;
|
gnSyncExtFunctions syncFunctions;
|
||||||
|
gnQueueExtFunctions queueFunctions;
|
||||||
|
|
||||||
// this index is not set by loadLayer, set by gnCreateInstance, also not used for now
|
// this index is not set by loadLayer, set by gnCreateInstance, also not used for now
|
||||||
uint32_t layerIndex;
|
uint32_t layerIndex;
|
||||||
|
Reference in New Issue
Block a user