diff --git a/spirv_msl.cpp b/spirv_msl.cpp index 2cb0d807..383ce688 100644 --- a/spirv_msl.cpp +++ b/spirv_msl.cpp @@ -18189,6 +18189,13 @@ void CompilerMSL::emit_argument_buffer_aliased_descriptor(const SPIRVariable &al } else { + // This alias may have already been used to emit an entry point declaration. If there is a mismatch, we need a recompile. + // Moving this code to be run earlier will also conflict, + // because we need the qualified alias for the base resource, + // so forcing recompile until things sync up is the least invasive method for now. + if (ir.meta[aliased_var.self].decoration.qualified_alias != name) + force_recompile(); + // This will get wrapped in a separate temporary when a spvDescriptorArray wrapper is emitted. set_qualified_name(aliased_var.self, name); }