From 6ab4e99cf7d8681f6e378788ff7d7ea61759b2f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 30 Jan 2025 14:21:32 +0100 Subject: [PATCH] Fix #133645: Metal: Crash when activating EEVEE on MacOS 13.7.2 with AMD This was caused by the subpass input workaround for non-tilebased GPU using `texelFetch` on an `image`. This was supported before the cleanup 9c0321ae9b4be72a9f5e572471f2814ac2f6dfef. But is against the GLSL specification and was removed inside the cleanup. Using `imageLoad` instead of `texelFetch` fixes the crash. However rendering seems to be broken for other reasons. --- source/blender/gpu/metal/mtl_shader_generator.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/gpu/metal/mtl_shader_generator.mm b/source/blender/gpu/metal/mtl_shader_generator.mm index f1f2bd13743..a787ceb75f7 100644 --- a/source/blender/gpu/metal/mtl_shader_generator.mm +++ b/source/blender/gpu/metal/mtl_shader_generator.mm @@ -2284,9 +2284,9 @@ std::string MSLGeneratorInterface::generate_msl_fragment_tile_input_population() "ivec2(v_in._default_position_.xy)"; out << "\t" << get_shader_stage_instance_name(ShaderStage::FRAGMENT) << "." - << tile_input.name << " = texelFetch(" + << tile_input.name << " = imageLoad(" << get_shader_stage_instance_name(ShaderStage::FRAGMENT) << "." << tile_input.name - << "_subpass_img, " << texel_co << ", 0)." << swizzle << ";\n"; + << "_subpass_img, " << texel_co << ")." << swizzle << ";\n"; } } return out.str();