From 228c5bdb864a21ce9073df1232ac6e4a247bf656 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Tue, 29 Jul 2025 22:11:30 -0700 Subject: [PATCH] Fix D3D12 --- CMakeLists.txt | 5 +++++ MarathonRecomp/gpu/video.cpp | 14 ++++++++++---- tools/XenosRecomp | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 865e155e0..9036bc35c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,11 @@ if (MARATHON_RECOMP_ARCHITECTURE STREQUAL "x86_64" OR MARATHON_RECOMP_ARCHITECTU ) endif() +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + # Normally only defined by Visual Studio, added for consistency + add_compile_definitions(_DEBUG) +endif() + add_subdirectory(${MARATHON_RECOMP_THIRDPARTY_ROOT}) add_subdirectory(${MARATHON_RECOMP_TOOLS_ROOT}) diff --git a/MarathonRecomp/gpu/video.cpp b/MarathonRecomp/gpu/video.cpp index bfaf03e7d..db001e44d 100644 --- a/MarathonRecomp/gpu/video.cpp +++ b/MarathonRecomp/gpu/video.cpp @@ -4036,23 +4036,25 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons assert(result); guestShader->shader = g_device->createShader(decoded.data(), decoded.size(), "shaderMain", RenderShaderFormat::SPIRV); -#ifdef _DEBUG - guestShader->shader->setName(fmt::format("{}:{:x}", guestShader->shaderCacheEntry->filename, guestShader->shaderCacheEntry->hash)); -#endif break; } case Backend::D3D12: { guestShader->shader = g_device->createShader(g_shaderCache.get() + guestShader->shaderCacheEntry->dxilOffset, guestShader->shaderCacheEntry->dxilSize, "shaderMain", RenderShaderFormat::DXIL); + break; } case Backend::METAL: { guestShader->shader = g_device->createShader(g_shaderCache.get() + guestShader->shaderCacheEntry->airOffset, - guestShader->shaderCacheEntry->airSize, "shaderMain", RenderShaderFormat::METAL); + guestShader->shaderCacheEntry->airSize, "shaderMain", RenderShaderFormat::METAL); break; } } + +#ifdef _DEBUG + guestShader->shader->setName(fmt::format("{}:{:x}", guestShader->shaderCacheEntry->filename, guestShader->shaderCacheEntry->hash)); +#endif } return guestShader->shader.get(); @@ -4176,6 +4178,10 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons } shader = linkedShader.get(); + +#ifdef _DEBUG + guestShader->shader->setName(fmt::format("{}:{:x}", guestShader->shaderCacheEntry->filename, guestShader->shaderCacheEntry->hash)); +#endif } } #endif diff --git a/tools/XenosRecomp b/tools/XenosRecomp index ae41d87d3..2d3320dba 160000 --- a/tools/XenosRecomp +++ b/tools/XenosRecomp @@ -1 +1 @@ -Subproject commit ae41d87d360b8c3e028bb57091ffa099b1f5674d +Subproject commit 2d3320dba5dbdfb3abd6d67ae6111918fbd8377b