[msl-writer] Add support for sample_mask builtins

Bug: tint:372
Change-Id: Ib1d9dc525fbc180b603241c4746cbbd54077a489
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/40640
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc
index 5c9c1de..1f71561 100644
--- a/src/writer/msl/generator_impl.cc
+++ b/src/writer/msl/generator_impl.cc
@@ -1438,6 +1438,12 @@
       return "thread_index_in_threadgroup";
     case ast::Builtin::kGlobalInvocationId:
       return "thread_position_in_grid";
+    case ast::Builtin::kSampleId:
+      return "sample_id";
+    case ast::Builtin::kSampleMaskIn:
+      return "sample_mask";
+    case ast::Builtin::kSampleMaskOut:
+      return "sample_mask";
     default:
       break;
   }
diff --git a/src/writer/msl/generator_impl_test.cc b/src/writer/msl/generator_impl_test.cc
index f2ce025..4bce1d9 100644
--- a/src/writer/msl/generator_impl_test.cc
+++ b/src/writer/msl/generator_impl_test.cc
@@ -119,7 +119,11 @@
                     MslBuiltinData{ast::Builtin::kLocalInvocationIndex,
                                    "thread_index_in_threadgroup"},
                     MslBuiltinData{ast::Builtin::kGlobalInvocationId,
-                                   "thread_position_in_grid"}));
+                                   "thread_position_in_grid"},
+                    MslBuiltinData{ast::Builtin::kSampleId, "sample_id"},
+                    MslBuiltinData{ast::Builtin::kSampleMaskIn, "sample_mask"},
+                    MslBuiltinData{ast::Builtin::kSampleMaskOut,
+                                   "sample_mask"}));
 
 TEST_F(MslGeneratorImplTest, calculate_alignment_size_alias) {
   auto* alias = ty.alias("a", ty.f32());