We are converting some shaders from HLSL to Metal using dxc to compile to spir-v and then spirv-cross to convert to .metal. The output looks pretty reasonable to me although I am still a newbie to .metal. This is all happening on a PC using the Metal tools for Windows.
On iOS when I load the first vertex shader it looks reasonable and the input attributes are reflected in both the vertex attributes and also the general attributes.
However, when I then attempt to load the fragment shader it finds the function successfully, but both the vertex attributes and stage input attributes are non-existent (obviously expected for the vertex attributes).
I've taken a look at the .metal file and it seems to be doing the correct thing. It has multiple inputs to the function, none of which seem to be reflected.
We are compiling the functions independently as it would be somewhat non-trivial in our code base to compile them into a single library, but my fear is that somehow it is unhappy about this.