Files
Gryphn/projects/apis/vulkan/loader/vulkan_instance_loader.c
2025-09-19 10:12:10 -04:00

50 lines
1.6 KiB
C

#include "vulkan_loader.h"
#include <instance/vulkan_instance.h>
#include <output_device/vulkan_physical_device.h>
#include <output_device/vulkan_output_devices.h>
#include <vulkan_surface/vulkan_surface.h>
gryphnInstanceFunctionLayers loadVulkanAPILayer(void) {
return (gryphnInstanceFunctionLayers) {
.createInstance = vulkanCreateInstance,
.isSuitable = vulkanIsInstanceSuitable,
.destroyInstance = vulkanDestroyInstance,
.queryDevices = vulkanQueryDevices,
.getPhysicalDeviceProperties = vulkanQueryPhysicalDeviceProperties,
.getPhysicalDeviceFeatures = vulkanQueryPhysicalDeviceFeatures,
.getPhysicalDeviceLimits = vulkanQueryPhysicalDeviceLimits,
.next = NULL
};
}
gnInstanceFunctions loadVulkanInstanceFunctions(void) {
return (gnInstanceFunctions){
._gnPhysicalDeviceCanPresentToSurface = deviceCanPresentToSurface,
._gnCreateOutputDevice = createVulkanOutputDevice,
._gnDestroyOutputDevice = destroyVulkanOutputDevice,
#ifdef GN_PLATFORM_LINUX
#ifdef GN_WINDOW_X11
._gnCreateX11WindowSurface = createX11WindowSurface,
#endif
#ifdef GN_WINDOW_WAYLAND
._gnCreateWaylandWindowSurface,
#endif
#endif
#ifdef GN_PLATFORM_WIN32
._gnCreateWin32WindowSurface,
#endif
#ifdef GN_PLATFORM_MACOS
._gnCreateMacOSWindowSurface = createMacOSWindowSurface,
#endif
._gnDestroyWindowSurface = destroyWindowSurface,
._gnGetSurfaceDetails = getSurfaceDetails
};
}