it's unclear if the problem was in spirv-cross or spirv-opt, but eitherway, the generated code at the end was invalid.