Compare commits

...

6 Commits

Author SHA1 Message Date
crueter 9cbd739de3 Update
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-05-05 17:07:41 -04:00
crueter d546a04479 Use Aitor's PR
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-05-05 16:37:03 -04:00
crueter 82ed947bb5 26.0.1
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-05-05 16:36:37 -04:00
crueter 774ec0a942 Fix build
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-05-05 16:36:37 -04:00
crueter 073ecd36af [cmake] Bundle KosmicKrisp, MoltenVK, and Vulkan Loader
For future testing.

Signed-off-by: crueter <crueter@eden-emu.dev>
2026-05-05 16:36:37 -04:00
rayman30 a55ffc9225 tests: Add A64 optimizer test for VectorMin/Max patterns 2026-05-05 16:36:36 -04:00
7 changed files with 56 additions and 31 deletions
+5
View File
@@ -444,6 +444,11 @@ if (NOT YUZU_STATIC_ROOM)
if (NOT TARGET Opus::opus)
add_library(Opus::opus ALIAS opus)
endif()
if (APPLE)
# KosmicKrisp
AddJsonPackage(kosmickrisp)
endif()
endif()
if(NOT TARGET Boost::headers)
+9
View File
@@ -114,5 +114,14 @@
"QUAZIP_INSTALL OFF",
"QUAZIP_ENABLE_QTEXTCODEC OFF"
]
},
"kosmickrisp": {
"package": "KosmicKrisp",
"repo": "crueter-ci/KosmicKrisp",
"hash": "4709fb3735ed40048cab9a64abed9a661517dada92b6e8928d578e947fdd6af21b3da4887822f4c3ad3055c6641f9a63243e10e2dd2bba00379618dcc0cda4be",
"git_version": "26.0.6",
"tag": "v%VERSION%",
"artifact": "KosmicKrisp-%VERSION%.tar.zst",
"bundled": true
}
}
-14
View File
@@ -389,17 +389,3 @@ if (ANDROID)
add_library(oboe::oboe ALIAS oboe)
endif()
if (APPLE)
# moltenvk
if (NOT YUZU_USE_BUNDLED_MOLTENVK)
find_library(MOLTENVK_LIBRARY MoltenVK)
endif()
# TODO: kosmickrisp?
if (NOT MOLTENVK_LIBRARY OR YUZU_USE_BUNDLED_MOLTENVK)
AddJsonPackage(moltenvk)
set(MOLTENVK_LIBRARY "${moltenvk_SOURCE_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" CACHE STRING "" FORCE)
endif()
endif()
-8
View File
@@ -174,14 +174,6 @@
"bundled": true,
"skip_updates": "true"
},
"moltenvk": {
"repo": "V380-Ori/Ryujinx.MoltenVK",
"tag": "v%VERSION%-ryujinx",
"git_version": "1.4.1",
"artifact": "MoltenVK-macOS.tar",
"hash": "5695b36ca5775819a71791557fcb40a4a5ee4495be6b8442e0b666d0c436bec02aae68cc6210183f7a5c986bdbec0e117aecfad5396e496e9c2fd5c89133a347",
"bundled": true
},
"gamemode": {
"repo": "FeralInteractive/gamemode",
"sha": "ce6fe122f3",
@@ -866,10 +866,17 @@ void EmitIR<IR::Opcode::VectorMaxS32>(oaknut::CodeGenerator& code, EmitContext&
template<>
void EmitIR<IR::Opcode::VectorMaxS64>(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
#ifdef __APPLE__
EmitThreeOp(code, ctx, inst, [&](auto& Qresult, auto& Qa, auto& Qb) {
code.CMGT(Qresult->D2(), Qa->D2(), Qb->D2());
code.BSL(Qresult->B16(), Qa->B16(), Qb->B16());
});
#else
(void)code;
(void)ctx;
(void)inst;
UNREACHABLE();
#endif
}
template<>
@@ -889,10 +896,17 @@ void EmitIR<IR::Opcode::VectorMaxU32>(oaknut::CodeGenerator& code, EmitContext&
template<>
void EmitIR<IR::Opcode::VectorMaxU64>(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
#ifdef __APPLE__
EmitThreeOp(code, ctx, inst, [&](auto& Qresult, auto& Qa, auto& Qb) {
code.CMHI(Qresult->D2(), Qa->D2(), Qb->D2());
code.BSL(Qresult->B16(), Qa->B16(), Qb->B16());
});
#else
(void)code;
(void)ctx;
(void)inst;
UNREACHABLE();
#endif
}
template<>
@@ -912,10 +926,17 @@ void EmitIR<IR::Opcode::VectorMinS32>(oaknut::CodeGenerator& code, EmitContext&
template<>
void EmitIR<IR::Opcode::VectorMinS64>(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
#ifdef __APPLE__
EmitThreeOp(code, ctx, inst, [&](auto& Qresult, auto& Qa, auto& Qb) {
code.CMGT(Qresult->D2(), Qb->D2(), Qa->D2());
code.BSL(Qresult->B16(), Qa->B16(), Qb->B16());
});
#else
(void)code;
(void)ctx;
(void)inst;
UNREACHABLE();
#endif
}
template<>
@@ -935,10 +956,17 @@ void EmitIR<IR::Opcode::VectorMinU32>(oaknut::CodeGenerator& code, EmitContext&
template<>
void EmitIR<IR::Opcode::VectorMinU64>(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
#ifdef __APPLE__
EmitThreeOp(code, ctx, inst, [&](auto& Qresult, auto& Qa, auto& Qb) {
code.CMHI(Qresult->D2(), Qb->D2(), Qa->D2());
code.BSL(Qresult->B16(), Qa->B16(), Qb->B16());
});
#else
(void)code;
(void)ctx;
(void)inst;
UNREACHABLE();
#endif
}
template<>
@@ -24,10 +24,7 @@ std::shared_ptr<Common::DynamicLibrary> OpenLibrary(
#ifdef __APPLE__
const auto libvulkan_filename =
Common::FS::GetBundleDirectory() / "Contents/Frameworks/libvulkan.1.dylib";
const auto libmoltenvk_filename =
Common::FS::GetBundleDirectory() / "Contents/Frameworks/libMoltenVK.dylib";
const char* library_paths[] = {std::getenv("LIBVULKAN_PATH"), libvulkan_filename.c_str(),
libmoltenvk_filename.c_str()};
const char* library_paths[] = {std::getenv("LIBVULKAN_PATH"), libvulkan_filename.c_str()};
// Check if a path to a specific Vulkan library has been specified.
for (const auto& library_path : library_paths) {
if (library_path && library->Open(library_path)) {
+13 -5
View File
@@ -389,14 +389,22 @@ if (APPLE)
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE TRUE)
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
find_library(MOLTENVK_LIBRARY MoltenVK REQUIRED)
message(STATUS "Using MoltenVK at ${MOLTENVK_LIBRARY}.")
set(KK_LIBS
"${KosmicKrisp_SOURCE_DIR}/lib/libMoltenVK.dylib"
"${KosmicKrisp_SOURCE_DIR}/lib/libvulkan.1.dylib"
"${KosmicKrisp_SOURCE_DIR}/lib/libvulkan_kosmickrisp.dylib")
set_source_files_properties(${MOLTENVK_LIBRARY} PROPERTIES
set_source_files_properties(${KK_LIBS} PROPERTIES
MACOSX_PACKAGE_LOCATION Frameworks
XCODE_FILE_ATTRIBUTES "CodeSignOnCopy")
target_sources(yuzu PRIVATE ${MOLTENVK_LIBRARY})
target_sources(yuzu PRIVATE ${KK_LIBS})
add_custom_command(TARGET yuzu POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${KosmicKrisp_SOURCE_DIR}/vulkan"
"$<TARGET_FILE_DIR:yuzu>/../Resources/vulkan"
COMMENT "Copying Vulkan ICDs")
elseif(WIN32)
# compile as a win32 gui application instead of a console application
target_link_libraries(yuzu PRIVATE Qt6::EntryPointPrivate)