essentially finish the loader rewrite

This commit is contained in:
Gregory Wells
2025-08-03 10:59:00 -04:00
parent 9d0f42731b
commit 988333c0ac
11 changed files with 42 additions and 26 deletions

View File

@@ -3,6 +3,7 @@
#include "core/gryphn_return_code.h"
#include "utils/gryphn_bool.h"
#include "gryphn_handles.h"
#include "gryphn_loader_helpers.h"
typedef struct gnInstanceCreateInfo gnInstanceCreateInfo;
typedef struct gnSurfaceDetails gnSurfaceDetails;
@@ -18,9 +19,13 @@ typedef struct gnOutputDeviceInfo gnOutputDeviceInfo;
typedef struct gnMacOSWindowSurfaceInfo gnMacOSWindowSurfaceInfo;
#endif
typedef struct gryphnFunctionLayer gryphnFunctionLayer;
typedef gnReturnCode (*PFN_gnCreateInstance)(gnInstanceHandle instance, gnInstanceCreateInfo* info, gryphnFunctionLayer* next);
typedef gnReturnCode (*PFN_gnDestroyInstance)(gnInstanceHandle instance, gryphnFunctionLayer* next);
typedef struct PFN_gnCreateInstance_layer PFN_gnCreateInstance_layer;
typedef gnReturnCode (*PFN_gnCreateInstance)(gnInstanceHandle instance, gnInstanceCreateInfo* info, PFN_gnCreateInstance_layer* next);
gryphnFunctionLayer(PFN_gnCreateInstance);
typedef struct PFN_gnDestroyInstance_layer PFN_gnDestroyInstance_layer;
typedef void (*PFN_gnDestroyInstance)(gnInstanceHandle instance, PFN_gnDestroyInstance_layer* next);
gryphnFunctionLayer(PFN_gnDestroyInstance);
typedef struct gnInstanceFunctions {
gnPhysicalDevice* (*_gnGetPhysicalDevices)(gnInstanceHandle instance, uint32_t* count);

View File

@@ -14,8 +14,8 @@ typedef struct gryphnFunctionLayer {
} gryphnFunctionLayer;
typedef struct gryphnInstanceFunctionLayers {
gryphnFunctionLayer createInstance; // PFN_gnCreateInstance
gryphnFunctionLayer destroyInstance; // PFN_gnDestroyInstance
PFN_gnCreateInstance_layer createInstance;
PFN_gnDestroyInstance_layer destroyInstance;
} gryphnInstanceFunctionLayers;
gryphnInstanceFunctionLayers gryphnLoadAPILayer(gnRenderingAPI api);

View File

@@ -0,0 +1,6 @@
#pragma once
#define gryphnFunctionLayer(function) typedef struct function##_layer { \
function func;\
struct function##_layer* next; \
} function##_layer;\