diff --git a/Makefile b/Makefile index 380bca01f9..3d8946235e 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,8 @@ validate-spv: $(SNAPSHOTS_BASE_OUT)/spv/*.spvasm validate-msl: $(SNAPSHOTS_BASE_OUT)/msl/*.msl @set -e && for file in $^ ; do \ echo "Validating" $${file#"$(SNAPSHOTS_BASE_OUT)/"}; \ - cat $${file} | xcrun -sdk macosx metal -mmacosx-version-min=10.15 -x metal - -o /dev/null; \ + header=$$(head -n1 $${file}); \ + cat $${file} | xcrun -sdk macosx metal -mmacosx-version-min=10.11 -std=macos-$${header:13:8} -x metal - -o /dev/null; \ done validate-glsl: $(SNAPSHOTS_BASE_OUT)/glsl/*.glsl diff --git a/src/back/msl/mod.rs b/src/back/msl/mod.rs index 3277991b30..6bc2b40528 100644 --- a/src/back/msl/mod.rs +++ b/src/back/msl/mod.rs @@ -189,7 +189,7 @@ pub struct Options { impl Default for Options { fn default() -> Self { Options { - lang_version: (1, 0), + lang_version: (1, 1), per_stage_map: PerStageMap::default(), inline_samplers: Vec::new(), spirv_cross_compatibility: false, diff --git a/src/back/msl/writer.rs b/src/back/msl/writer.rs index cfa034b6da..5634b60a67 100644 --- a/src/back/msl/writer.rs +++ b/src/back/msl/writer.rs @@ -1573,6 +1573,11 @@ impl Writer { .reset(module, super::keywords::RESERVED, &[], &mut self.names); self.runtime_sized_buffers.clear(); + writeln!( + self.out, + "// language: metal{}.{}", + options.lang_version.0, options.lang_version.1 + )?; writeln!(self.out, "#include ")?; writeln!(self.out, "#include ")?; writeln!(self.out)?; diff --git a/tests/in/extra.param.ron b/tests/in/extra.param.ron index a0c5c775e8..653d7f035f 100644 --- a/tests/in/extra.param.ron +++ b/tests/in/extra.param.ron @@ -1,4 +1,12 @@ ( god_mode: true, spv_version: (1, 0), + msl_custom: true, + msl: ( + lang_version: (2, 2), + per_stage_map: (), + inline_samplers: [], + spirv_cross_compatibility: false, + fake_missing_bindings: false, + ), ) diff --git a/tests/out/msl/access.msl b/tests/out/msl/access.msl index a7abce8b45..fbde9f3d79 100644 --- a/tests/out/msl/access.msl +++ b/tests/out/msl/access.msl @@ -1,3 +1,4 @@ +// language: metal2.0 #include #include diff --git a/tests/out/msl/boids.msl b/tests/out/msl/boids.msl index e51ac6309a..ef9d6d7107 100644 --- a/tests/out/msl/boids.msl +++ b/tests/out/msl/boids.msl @@ -1,3 +1,4 @@ +// language: metal2.0 #include #include diff --git a/tests/out/msl/collatz.msl b/tests/out/msl/collatz.msl index d687ae3102..b3053e6c53 100644 --- a/tests/out/msl/collatz.msl +++ b/tests/out/msl/collatz.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/control-flow.msl b/tests/out/msl/control-flow.msl index d7afd08cff..ef3b1eee2f 100644 --- a/tests/out/msl/control-flow.msl +++ b/tests/out/msl/control-flow.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/empty.msl b/tests/out/msl/empty.msl index 9b4ad48624..b918cf431e 100644 --- a/tests/out/msl/empty.msl +++ b/tests/out/msl/empty.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/extra.msl b/tests/out/msl/extra.msl index a568e14faf..a2613a6e04 100644 --- a/tests/out/msl/extra.msl +++ b/tests/out/msl/extra.msl @@ -1,3 +1,4 @@ +// language: metal2.2 #include #include diff --git a/tests/out/msl/globals.msl b/tests/out/msl/globals.msl index 435c090f27..7fcd970bb0 100644 --- a/tests/out/msl/globals.msl +++ b/tests/out/msl/globals.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/image.msl b/tests/out/msl/image.msl index 8198180111..6d21aa9899 100644 --- a/tests/out/msl/image.msl +++ b/tests/out/msl/image.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/interface.msl b/tests/out/msl/interface.msl index 67b51a83e5..efa936167d 100644 --- a/tests/out/msl/interface.msl +++ b/tests/out/msl/interface.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/interpolate.msl b/tests/out/msl/interpolate.msl index baec86cae8..f2600ba132 100644 --- a/tests/out/msl/interpolate.msl +++ b/tests/out/msl/interpolate.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/operators.msl b/tests/out/msl/operators.msl index 62ca17b3f6..a7e691d5aa 100644 --- a/tests/out/msl/operators.msl +++ b/tests/out/msl/operators.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/quad-vert.msl b/tests/out/msl/quad-vert.msl index 6a3039ed29..ef2264a137 100644 --- a/tests/out/msl/quad-vert.msl +++ b/tests/out/msl/quad-vert.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/quad.msl b/tests/out/msl/quad.msl index f0fa35dabb..9811ae517b 100644 --- a/tests/out/msl/quad.msl +++ b/tests/out/msl/quad.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/shadow.msl b/tests/out/msl/shadow.msl index 30c4754a78..60a9a023dd 100644 --- a/tests/out/msl/shadow.msl +++ b/tests/out/msl/shadow.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/skybox.msl b/tests/out/msl/skybox.msl index feec800e7c..1a479a89ea 100644 --- a/tests/out/msl/skybox.msl +++ b/tests/out/msl/skybox.msl @@ -1,3 +1,4 @@ +// language: metal2.1 #include #include diff --git a/tests/out/msl/standard.msl b/tests/out/msl/standard.msl index c102b47f73..cf7adc7d6b 100644 --- a/tests/out/msl/standard.msl +++ b/tests/out/msl/standard.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include diff --git a/tests/out/msl/texture-arg.msl b/tests/out/msl/texture-arg.msl index f958f527ff..39919e06d1 100644 --- a/tests/out/msl/texture-arg.msl +++ b/tests/out/msl/texture-arg.msl @@ -1,3 +1,4 @@ +// language: metal1.1 #include #include