From 93c263953956490c30e3604578d6eb0b5440264b Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Tue, 15 Feb 2022 11:29:56 -0500 Subject: [PATCH] Enable Metal by default on SDL backend --- platforms/sdl/CMakeLists.txt | 7 +++++++ platforms/sdl/main.cpp.in | 14 +++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/platforms/sdl/CMakeLists.txt b/platforms/sdl/CMakeLists.txt index e88f259..3d1cd78 100644 --- a/platforms/sdl/CMakeLists.txt +++ b/platforms/sdl/CMakeLists.txt @@ -1,5 +1,11 @@ include(../../cmake/AddPlatformExecutable.cmake) +if(ENABLE_MACOS) + find_library(METAL Metal) + + set(EXTRA_LIBRARIES ${METAL}) +endif() + add_platform( SRC ${CMAKE_CURRENT_SOURCE_DIR}/file.cpp MAIN_FILE @@ -12,6 +18,7 @@ add_platform( Core GFXVulkan GFXMetal + ${EXTRA_LIBRARIES} ) function(add_platform_commands target) diff --git a/platforms/sdl/main.cpp.in b/platforms/sdl/main.cpp.in index 26f78e2..0525733 100644 --- a/platforms/sdl/main.cpp.in +++ b/platforms/sdl/main.cpp.in @@ -87,7 +87,11 @@ bool platform::supports_feature(const PlatformFeature feature) { platform::window_ptr platform::open_window(const std::string_view title, const prism::Rectangle rect, const WindowFlags flags) { auto& win = windows.emplace_back(); - int sdl_flags = SDL_WINDOW_VULKAN | SDL_WINDOW_ALLOW_HIGHDPI; + int sdl_flags = SDL_WINDOW_ALLOW_HIGHDPI; + #ifndef ENABLE_METAL + sdl_flags |= SDL_WINDOW_VULKAN; + #endif + if(flags & WindowFlags::Borderless) sdl_flags |= SDL_WINDOW_BORDERLESS; @@ -299,6 +303,10 @@ void platform::end_text_input() { int main(int argc, char* argv[]) { SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER); +#ifdef ENABLE_METAL + SDL_setenv("METAL_DEVICE_WRAPPER_TYPE", "1", 0); +#endif + engine = new prism::engine(argc, argv); app = new @APP_CLASS@(); @@ -306,7 +314,11 @@ int main(int argc, char* argv[]) { GFXCreateInfo info = {}; +#ifdef ENABLE_METAL + gfx_interface = new GFXMetal(); +#else gfx_interface = new GFXVulkan(); +#endif if(gfx_interface->initialize(info)) { engine->set_gfx(gfx_interface); } else {