[wgsl-reader] Add support for sample index/mask builtins
Bug: tint:372
Change-Id: I2cbadf31f350c49ae0689d8b05f3f7a92d074efd
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/40560
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index 708157b..957cf1a 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -128,6 +128,15 @@
if (str == "global_invocation_id") {
return ast::Builtin::kGlobalInvocationId;
}
+ if (str == "sample_index") {
+ return ast::Builtin::kSampleIndex;
+ }
+ if (str == "sample_mask_in") {
+ return ast::Builtin::kSampleMaskIn;
+ }
+ if (str == "sample_mask_out") {
+ return ast::Builtin::kSampleMaskOut;
+ }
return ast::Builtin::kNone;
}
diff --git a/src/reader/wgsl/parser_impl_variable_decoration_test.cc b/src/reader/wgsl/parser_impl_variable_decoration_test.cc
index 9cf65ab..d1d076f 100644
--- a/src/reader/wgsl/parser_impl_variable_decoration_test.cc
+++ b/src/reader/wgsl/parser_impl_variable_decoration_test.cc
@@ -112,22 +112,24 @@
INSTANTIATE_TEST_SUITE_P(
ParserImplTest,
BuiltinTest,
- testing::Values(BuiltinData{"position", ast::Builtin::kPosition},
- BuiltinData{"vertex_idx", ast::Builtin::kVertexIndex},
- BuiltinData{"vertex_index", ast::Builtin::kVertexIndex},
- BuiltinData{"instance_idx", ast::Builtin::kInstanceIndex},
- BuiltinData{"instance_index", ast::Builtin::kInstanceIndex},
- BuiltinData{"front_facing", ast::Builtin::kFrontFacing},
- BuiltinData{"frag_coord", ast::Builtin::kFragCoord},
- BuiltinData{"frag_depth", ast::Builtin::kFragDepth},
- BuiltinData{"local_invocation_id",
- ast::Builtin::kLocalInvocationId},
- BuiltinData{"local_invocation_idx",
- ast::Builtin::kLocalInvocationIndex},
- BuiltinData{"local_invocation_index",
- ast::Builtin::kLocalInvocationIndex},
- BuiltinData{"global_invocation_id",
- ast::Builtin::kGlobalInvocationId}));
+ testing::Values(
+ BuiltinData{"position", ast::Builtin::kPosition},
+ BuiltinData{"vertex_idx", ast::Builtin::kVertexIndex},
+ BuiltinData{"vertex_index", ast::Builtin::kVertexIndex},
+ BuiltinData{"instance_idx", ast::Builtin::kInstanceIndex},
+ BuiltinData{"instance_index", ast::Builtin::kInstanceIndex},
+ BuiltinData{"front_facing", ast::Builtin::kFrontFacing},
+ BuiltinData{"frag_coord", ast::Builtin::kFragCoord},
+ BuiltinData{"frag_depth", ast::Builtin::kFragDepth},
+ BuiltinData{"local_invocation_id", ast::Builtin::kLocalInvocationId},
+ BuiltinData{"local_invocation_idx",
+ ast::Builtin::kLocalInvocationIndex},
+ BuiltinData{"local_invocation_index",
+ ast::Builtin::kLocalInvocationIndex},
+ BuiltinData{"global_invocation_id", ast::Builtin::kGlobalInvocationId},
+ BuiltinData{"sample_index", ast::Builtin::kSampleIndex},
+ BuiltinData{"sample_mask_in", ast::Builtin::kSampleMaskIn},
+ BuiltinData{"sample_mask_out", ast::Builtin::kSampleMaskOut}));
TEST_F(ParserImplTest, VariableDecoration_Builtin_MissingLeftParen) {
auto p = parser("builtin position)");