Add option and behavior to create the Vulkan interface correctly. (#99)

This commit is contained in:
Darío 2024-12-23 23:26:36 -03:00 committed by GitHub
parent 7997da230e
commit 210c5f0cf9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 2 deletions

View File

@ -10,6 +10,8 @@ if (${RT64_BUILD_EXAMPLES})
set(RT64_STATIC ON)
endif()
option(RT64_SDL_WINDOW_VULKAN "Build RT64 to expect an SDL Window outside of Windows" OFF)
if (NOT ${RT64_STATIC})
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
@ -235,6 +237,10 @@ add_compile_definitions(
IMGUI_IMPL_VULKAN_NO_PROTOTYPES
)
if (RT64_SDL_WINDOW_VULKAN)
add_compile_definitions("RT64_SDL_WINDOW_VULKAN")
endif()
set (SOURCES
"${PROJECT_SOURCE_DIR}/src/common/rt64_common.cpp"
"${PROJECT_SOURCE_DIR}/src/common/rt64_dynamic_libraries.cpp"

View File

@ -22,7 +22,20 @@ namespace RT64 {
// External functions to create the backends.
extern std::unique_ptr<RenderInterface> CreateD3D12Interface();
#ifdef RT64_SDL_WINDOW_VULKAN
extern std::unique_ptr<RenderInterface> CreateVulkanInterface(RenderWindow renderWindow);
#else
extern std::unique_ptr<RenderInterface> CreateVulkanInterface();
#endif
static std::unique_ptr<RenderInterface> CreateVulkanInterfaceWrapper(RenderWindow renderWindow) {
#ifdef RT64_SDL_WINDOW_VULKAN
return CreateVulkanInterface(renderWindow);
#else
return CreateVulkanInterface();
#endif
}
// Application::Core
@ -135,7 +148,7 @@ namespace RT64 {
return SetupResult::InvalidGraphicsAPI;
# endif
case UserConfiguration::GraphicsAPI::Vulkan:
renderInterface = CreateVulkanInterface();
renderInterface = CreateVulkanInterfaceWrapper(appWindow->windowHandle);
break;
default:
fprintf(stderr, "Unknown Graphics API specified in configuration.\n");
@ -182,7 +195,7 @@ namespace RT64 {
if (isRDNA3 && useHDRinD3D12) {
device.reset();
renderInterface.reset();
renderInterface = CreateVulkanInterface();
renderInterface = CreateVulkanInterfaceWrapper(appWindow->windowHandle);
if (renderInterface == nullptr) {
fprintf(stderr, "Unable to initialize graphics API.\n");
return SetupResult::GraphicsAPINotFound;