From ab3bd566d21624f66bae0f94ab589301b999e453 Mon Sep 17 00:00:00 2001 From: Greg Wells Date: Thu, 26 Jun 2025 14:13:24 -0400 Subject: [PATCH] load the actuall first layer --- projects/core/src/instance/gryphn_instance.c | 17 +++++++++++------ projects/core/src/instance/gryphn_instance.h | 9 +++------ projects/loader/src/gryphn_loader.c | 2 -- projects/loader/src/gryphn_loader.h | 6 ++++++ 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/projects/core/src/instance/gryphn_instance.c b/projects/core/src/instance/gryphn_instance.c index a80b764..ce0da12 100644 --- a/projects/core/src/instance/gryphn_instance.c +++ b/projects/core/src/instance/gryphn_instance.c @@ -6,17 +6,22 @@ gnReturnCode gnCreateInstance(gnInstanceHandle* instance, gnInstanceInfo info) { *instance = malloc(sizeof(struct gnInstance_t)); + (*instance)->layers = loaderLayerArrayListCreate(); + + // load the API layers (this will) loaderInfo loadInfo = { - .api = info.renderingAPI + .api = info.renderingAPI, + .layerToLoad = api_layer }; - (*instance)->instanceFunctions = loadInstanceFunctions(loadInfo); - (*instance)->deviceFunctions = loadDeviceFunctions(loadInfo); - (*instance)->commandFunctions = loadCommandFunctions(loadInfo); + loaderLayerArrayListAdd(&(*instance)->layers, loadLayer(loadInfo)); + + // i hate this line of code but im not fixing it + (*instance)->callingLayer = &(*instance)->layers.data[(*instance)->layers.count - 1]; (*instance)->debugger = info.debugger; - return (*instance)->instanceFunctions._gnCreateInstance((*instance), info); + return (*instance)->callingLayer->instanceFunctions._gnCreateInstance((*instance), info); } void gnDestroyInstance(gnInstanceHandle instance) { - instance->instanceFunctions._gnDestroyInstance(instance); + instance->callingLayer->instanceFunctions._gnDestroyInstance(instance); } diff --git a/projects/core/src/instance/gryphn_instance.h b/projects/core/src/instance/gryphn_instance.h index 253c04a..e761e1b 100644 --- a/projects/core/src/instance/gryphn_instance.h +++ b/projects/core/src/instance/gryphn_instance.h @@ -3,9 +3,7 @@ #include "gryphn_handles.h" #include "utils/gryphn_version.h" #include "utils/gryphn_error_code.h" -#include "loader/src/gryphn_instance_functions.h" -#include "loader/src/gryphn_device_functions.h" -#include "loader/src/gryphn_command_functions.h" +#include "loader/src/gryphn_loader.h" typedef struct gnInstanceInfo { gnString applicationName; @@ -23,9 +21,8 @@ struct gnInstance_t { struct gnPlatformInstance_t* instance; gnBool valid; - gnInstanceFunctions instanceFunctions; - gnDeviceFunctions deviceFunctions; - gnCommandFunctions commandFunctions; + loaderLayerArrayList layers; + loaderLayer* callingLayer; gnDebuggerHandle debugger; }; diff --git a/projects/loader/src/gryphn_loader.c b/projects/loader/src/gryphn_loader.c index 763bb7c..7aaeb26 100644 --- a/projects/loader/src/gryphn_loader.c +++ b/projects/loader/src/gryphn_loader.c @@ -81,8 +81,6 @@ loaderLayer api_loaded_layer(gnRenderingAPI api) { } loaderLayer loadLayer(loaderInfo info) { - if (info.layerToLoad == no_layer) return null_layer(); if (info.layerToLoad == api_layer) return api_loaded_layer(info.api); - return null_layer(); } diff --git a/projects/loader/src/gryphn_loader.h b/projects/loader/src/gryphn_loader.h index 8d9b070..462f763 100644 --- a/projects/loader/src/gryphn_loader.h +++ b/projects/loader/src/gryphn_loader.h @@ -6,9 +6,15 @@ #include "utils/lists/gryphn_array_list.h" typedef struct loaderLayer { + // idk why I sperate these info different classes, I should really shove them in one bit class + // they used to be loaded seperatly but I guess there not anymore + // initlization is hard gnInstanceFunctions instanceFunctions; gnDeviceFunctions deviceFunctions; gnCommandFunctions commandFunctions; + + // this index is not set by loadLayer, set by gnCreateInstance + uint32_t layerIndex; } loaderLayer; loaderLayer loadLayer(loaderInfo info);