get the metal loader to kinda work (does not load functions)

This commit is contained in:
Greg Wells
2025-06-25 10:53:45 -04:00
parent 2c9e2260f4
commit dee0822779
6 changed files with 37 additions and 9 deletions

View File

@@ -3,19 +3,28 @@ project(Gryphn)
add_compile_definitions(GN_REVEAL_IMPL)
add_subdirectory(projects/loader) # build gryphn loader
add_subdirectory(projects/core) # build gryphn core
add_subdirectory(projects/platform) # build gryphn platform
add_library(Gryphn INTERFACE)
if (UNIX AND NOT APPLE)
add_compile_definitions(GN_PLATFORM_LINUX GN_WINDOW_X11)
add_compile_definitions(
GN_PLATFORM_LINUX
GN_WINDOW_X11
GN_API_VULKAN
)
add_subdirectory(projects/apis/vulkan/)
target_link_libraries(Gryphn INTERFACE GryphnVulkanImpl)
endif()
if (APPLE)
add_compile_definitions(GN_PLATFORM_MACOS GN_API_VULKAN GN_API_METAL)
add_compile_definitions(
GN_PLATFORM_MACOS
GN_API_VULKAN GN_API_METAL
)
add_subdirectory(projects/apis/vulkan/)
add_subdirectory(projects/apis/metal/)
target_link_libraries(Gryphn INTERFACE GryphnVulkanImpl GryphnMetalImpl)
endif()
add_subdirectory(projects/loader) # build gryphn loader
add_subdirectory(projects/core) # build gryphn core
add_subdirectory(projects/platform) # build gryphn platform
target_link_libraries(Gryphn INTERFACE GryphnCore GryphnLoader GryphnPlatform)

View File

@@ -5,7 +5,10 @@ project(GryphnMetalImpl)
file(GLOB_RECURSE SOURCE_FILES CONFIGURE_DEPENDS
"src/*.c" "src/*.h" "src/*.m"
)
add_library(GryphnMetalImpl STATIC ${SOURCE_FILES})
file(GLOB_RECURSE LOADER_FILES CONFIGURE_DEPENDS
"loader/*.m"
)
add_library(GryphnMetalImpl STATIC ${SOURCE_FILES} ${LOADER_FILES})
target_include_directories(GryphnMetalImpl PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../../core/src/
${CMAKE_CURRENT_SOURCE_DIR}/../../utils/

View File

@@ -1,5 +1,10 @@
#include "gryphn_loader.h"
#ifdef GN_API_VULKAN
#include <apis/vulkan/loader/vulkan_loader.h>
#endif
#ifdef GN_API_METAL
#include <apis/metal/loader/metal_loader.h>
#endif
gnInstanceFunctions loadInstanceFunctions(loaderInfo info) {
switch (info.api) {
@@ -10,7 +15,10 @@ gnInstanceFunctions loadInstanceFunctions(loaderInfo info) {
case GN_RENDERINGAPI_DIRECTX11: return (gnInstanceFunctions){ NULL };
case GN_RENDERINGAPI_DIRECTX12: return (gnInstanceFunctions){ NULL };
case GN_RENDERINGAPI_OPENGL: return (gnInstanceFunctions){ NULL };
case GN_RENDERINGAPI_METAL: return (gnInstanceFunctions){ NULL };
#ifdef GN_API_METAL
case GN_RENDERINGAPI_METAL: return loadMetalInstanceFunctions();
#endif
default: return (gnInstanceFunctions){NULL};
}
}
@@ -23,7 +31,11 @@ gnDeviceFunctions loadDeviceFunctions(loaderInfo info) {
case GN_RENDERINGAPI_DIRECTX11: return (gnDeviceFunctions){ NULL };
case GN_RENDERINGAPI_DIRECTX12: return (gnDeviceFunctions){ NULL };
case GN_RENDERINGAPI_OPENGL: return (gnDeviceFunctions){ NULL };
case GN_RENDERINGAPI_METAL: return (gnDeviceFunctions){ NULL };
#ifdef GN_API_METAL
case GN_RENDERINGAPI_METAL: return loadMetalDeviceFunctions();
#endif
default: return (gnDeviceFunctions){NULL};
}
}
@@ -36,6 +48,10 @@ gnCommandFunctions loadCommandFunctions(loaderInfo info) {
case GN_RENDERINGAPI_DIRECTX11: return (gnCommandFunctions){ NULL };
case GN_RENDERINGAPI_DIRECTX12: return (gnCommandFunctions){ NULL };
case GN_RENDERINGAPI_OPENGL: return (gnCommandFunctions){ NULL };
case GN_RENDERINGAPI_METAL: return (gnCommandFunctions){ NULL };
#ifdef GN_API_METAL
case GN_RENDERINGAPI_METAL: return loadMetalCommandFunctions();
#endif
default: return (gnCommandFunctions){NULL};
}
}