From 144e11be07e33a617c017e0302bb99810ea4b040 Mon Sep 17 00:00:00 2001 From: Samuliak Date: Sat, 24 May 2025 06:57:37 +0200 Subject: [PATCH] address neebyA's review --- src/Cafe/CMakeLists.txt | 8 ++++---- src/Cafe/HW/Latte/Core/FetchShader.cpp | 7 ++++++- src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp | 2 +- src/gui/MainWindow.cpp | 8 +++++--- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Cafe/CMakeLists.txt b/src/Cafe/CMakeLists.txt index b157067e..31258bd6 100644 --- a/src/Cafe/CMakeLists.txt +++ b/src/Cafe/CMakeLists.txt @@ -593,10 +593,10 @@ if(ENABLE_METAL) HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLHeader.hpp ) - #target_link_libraries(CemuCafe PRIVATE - # "-framework Metal" - # "-framework QuartzCore" - #) + target_link_libraries(CemuCafe PRIVATE + "-framework Metal" + "-framework QuartzCore" + ) endif() if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(AARCH64)") diff --git a/src/Cafe/HW/Latte/Core/FetchShader.cpp b/src/Cafe/HW/Latte/Core/FetchShader.cpp index f7c627d5..96b78d83 100644 --- a/src/Cafe/HW/Latte/Core/FetchShader.cpp +++ b/src/Cafe/HW/Latte/Core/FetchShader.cpp @@ -109,10 +109,15 @@ void LatteShader_calculateFSKey(LatteFetchShader* fetchShader) key += (uint64)attrib->semanticId; key = std::rotl(key, 8); if (g_renderer->GetType() == RendererAPI::Metal) + { key += (uint64)attrib->offset; + key = std::rotl(key, 7); + } else + { key += (uint64)(attrib->offset & 3); - key = std::rotl(key, 7); + key = std::rotl(key, 2); + } } } // todo - also hash invalid buffer groups? diff --git a/src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp b/src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp index 90b852d7..5708b861 100644 --- a/src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp +++ b/src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp @@ -45,7 +45,7 @@ std::vector MetalRenderer::GetDevices() for (uint32 i = 0; i < devices->count(); i++) { MTL::Device* device = static_cast(devices->object(i)); - result.emplace_back(std::string(device->name()->utf8String()), device->registryID()); + result.push_back({std::string(device->name()->utf8String()), device->registryID()}); } return result; diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 344e2bc9..323b1fac 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -1,5 +1,3 @@ -#include "Cafe/HW/Latte/Renderer/Metal/MetalRenderer.h" -#include "Cafe/HW/Latte/Renderer/Renderer.h" #include "gui/wxgui.h" #include "gui/MainWindow.h" #include "gui/guiWrapper.h" @@ -64,6 +62,10 @@ #include "gamemode_client.h" #endif +#if ENABLE_METAL +#include "Cafe/HW/Latte/Renderer/Metal/MetalRenderer.h" +#endif + #include "Cafe/TitleList/TitleInfo.h" #include "Cafe/TitleList/TitleList.h" #include "wxHelper.h" @@ -1476,7 +1478,7 @@ void MainWindow::OnKeyDown(wxKeyEvent& event) #endif else { - event.Skip(); + event.Skip(); } }