writer/msl: Only use [[invariant]] on MSL 2.1+

This is not supported on older versions.
This behavior was agreed by the WGSL core group:
https://github.com/gpuweb/gpuweb/issues/893#issuecomment-745537465

Bug: tint:1327
Change-Id: I1a0459068c438e625ae9d99fe4a044a96f2db57e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/71684
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
Ben Clayton
2021-12-03 21:58:53 +00:00
committed by Tint LUCI CQ
parent cc05d89820
commit 05eedd81b0
5 changed files with 44 additions and 8 deletions

View File

@@ -1,8 +1,15 @@
#include <metal_stdlib>
using namespace metal;
#if __METAL_VERSION__ >= 210
#define TINT_INVARIANT [[invariant]]
#else
#define TINT_INVARIANT
#endif
struct tint_symbol_1 {
float4 value [[position]] [[invariant]];
float4 value [[position]] TINT_INVARIANT;
};
float4 tint_symbol_inner() {

View File

@@ -1,11 +1,18 @@
#include <metal_stdlib>
using namespace metal;
#if __METAL_VERSION__ >= 210
#define TINT_INVARIANT [[invariant]]
#else
#define TINT_INVARIANT
#endif
struct Out {
float4 pos;
};
struct tint_symbol_1 {
float4 pos [[position]] [[invariant]];
float4 pos [[position]] TINT_INVARIANT;
};
Out tint_symbol_inner() {