From 14feaf4ba8108251fcea9d4d311451a313299b65 Mon Sep 17 00:00:00 2001 From: TellowKrinkle Date: Sun, 29 Sep 2024 23:58:23 -0500 Subject: [PATCH] VideoBackends:Metal: Use ios_use_simdgroup_functions with SPIRV-Cross It defaults to trying to emulate simdgroup functions on iOS --- Source/Core/VideoBackends/Metal/MTLUtil.mm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/Core/VideoBackends/Metal/MTLUtil.mm b/Source/Core/VideoBackends/Metal/MTLUtil.mm index b9a195b555..4785084e62 100644 --- a/Source/Core/VideoBackends/Metal/MTLUtil.mm +++ b/Source/Core/VideoBackends/Metal/MTLUtil.mm @@ -559,6 +559,9 @@ std::optional Metal::Util::TranslateShaderToMSL(ShaderStage stage, options.platform = spirv_cross::CompilerMSL::Options::macOS; #elif TARGET_OS_IOS options.platform = spirv_cross::CompilerMSL::Options::iOS; + // Otherwise SPIRV-Cross will try to compile subgroup ops to quad ops instead + // (And crash because there's no quad_min or quad_max) + options.ios_use_simdgroup_functions = Metal::g_features.subgroup_ops; #else #error What platform is this? #endif