#pragma once #include "gryphn_instance_functions.h" #include "gryphn_device_functions.h" #include "gryphn_command_functions.h" #include "gryphn_loader_info.h" #include "utils/lists/gryphn_array_list.h" #include "extensions/synchronization/loader/sync_functions.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; gnSyncExtFunctions syncFunctions; // this index is not set by loadLayer, set by gnCreateInstance, also not used for now uint32_t layerIndex; } loaderLayer; loaderLayer loadLayer(loaderInfo info); GN_ARRAY_LIST(loaderLayer); loaderLayer* loaderGetNextLayer(gnInstance instance); void resetLayer(gnInstance instance); gnSyncExtFunctions loadAPISyncFunctions(gnRenderingAPI api);