Remove deprecated functionality
The following deprecated features are no longer supported:
- frag_coord builtin
- sample_mask_in and sample_mask_out builtins
- void keyword
- const keyword
Fixed: tint:677
Fixed: tint:699
Fixed: tint:714
Fixed: tint:715
Change-Id: I40ce9711310e70e62465f58f2a7f4d959039e307
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/52041
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bdf7995..bed5807 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -679,7 +679,6 @@
reader/wgsl/parser_impl_function_decoration_list_test.cc
reader/wgsl/parser_impl_function_decoration_test.cc
reader/wgsl/parser_impl_function_header_test.cc
- reader/wgsl/parser_impl_function_type_decl_test.cc
reader/wgsl/parser_impl_global_constant_decl_test.cc
reader/wgsl/parser_impl_global_decl_test.cc
reader/wgsl/parser_impl_global_variable_decl_test.cc
diff --git a/src/ast/builtin.cc b/src/ast/builtin.cc
index bdfaf88..3e49d14 100644
--- a/src/ast/builtin.cc
+++ b/src/ast/builtin.cc
@@ -39,10 +39,6 @@
out << "front_facing";
break;
}
- case Builtin::kFragCoord: {
- out << "frag_coord";
- break;
- }
case Builtin::kFragDepth: {
out << "frag_depth";
break;
@@ -71,14 +67,6 @@
out << "sample_mask";
break;
}
- case Builtin::kSampleMaskIn: {
- out << "sample_mask_in";
- break;
- }
- case Builtin::kSampleMaskOut: {
- out << "sample_mask_out";
- break;
- }
case Builtin::kPointSize: {
out << "pointsize";
}
diff --git a/src/ast/builtin.h b/src/ast/builtin.h
index 5b37aeb..e5092c8 100644
--- a/src/ast/builtin.h
+++ b/src/ast/builtin.h
@@ -27,7 +27,6 @@
kVertexIndex,
kInstanceIndex,
kFrontFacing,
- kFragCoord, // TODO(crbug.com/tint/714): Remove this
kFragDepth,
kLocalInvocationId,
kLocalInvocationIndex,
@@ -35,8 +34,6 @@
kWorkgroupId,
kSampleIndex,
kSampleMask,
- kSampleMaskIn, // TODO(crbug.com/tint/715): Remove this
- kSampleMaskOut, // TODO(crbug.com/tint/715): Remove this
// Below are not currently WGSL builtins, but are included in this enum as
// they are used by certain backends.
diff --git a/src/reader/wgsl/lexer.cc b/src/reader/wgsl/lexer.cc
index bfc34c0..be7b2bc 100644
--- a/src/reader/wgsl/lexer.cc
+++ b/src/reader/wgsl/lexer.cc
@@ -478,8 +478,6 @@
return {Token::Type::kBreak, source, "break"};
if (str == "case")
return {Token::Type::kCase, source, "case"};
- if (str == "const")
- return {Token::Type::kConst, source, "const"};
if (str == "continue")
return {Token::Type::kContinue, source, "continue"};
if (str == "continuing")
@@ -686,8 +684,6 @@
return {Token::Type::kVec3, source, "vec3"};
if (str == "vec4")
return {Token::Type::kVec4, source, "vec4"};
- if (str == "void")
- return {Token::Type::kVoid, source, "void"};
if (str == "workgroup")
return {Token::Type::kWorkgroup, source, "workgroup"};
return {};
@@ -698,6 +694,8 @@
return {Token::Type::kReservedKeyword, source, "asm"};
if (str == "bf16")
return {Token::Type::kReservedKeyword, source, "bf16"};
+ if (str == "const")
+ return {Token::Type::kReservedKeyword, source, "const"};
if (str == "do")
return {Token::Type::kReservedKeyword, source, "do"};
if (str == "enum")
@@ -728,6 +726,8 @@
return {Token::Type::kReservedKeyword, source, "u64"};
if (str == "unless")
return {Token::Type::kReservedKeyword, source, "unless"};
+ if (str == "void")
+ return {Token::Type::kReservedKeyword, source, "void"};
return {};
}
diff --git a/src/reader/wgsl/lexer_test.cc b/src/reader/wgsl/lexer_test.cc
index bb2ba86..3034870 100644
--- a/src/reader/wgsl/lexer_test.cc
+++ b/src/reader/wgsl/lexer_test.cc
@@ -423,7 +423,6 @@
TokenData{"bool", Token::Type::kBool},
TokenData{"break", Token::Type::kBreak},
TokenData{"case", Token::Type::kCase},
- TokenData{"const", Token::Type::kConst},
TokenData{"continue", Token::Type::kContinue},
TokenData{"continuing", Token::Type::kContinuing},
TokenData{"default", Token::Type::kDefault},
@@ -523,7 +522,6 @@
TokenData{"vec2", Token::Type::kVec2},
TokenData{"vec3", Token::Type::kVec3},
TokenData{"vec4", Token::Type::kVec4},
- TokenData{"void", Token::Type::kVoid},
TokenData{"workgroup", Token::Type::kWorkgroup}));
using KeywordTest_Reserved = testing::TestWithParam<const char*>;
@@ -540,6 +538,7 @@
KeywordTest_Reserved,
testing::Values("asm",
"bf16",
+ "const",
"do",
"enum",
"f16",
@@ -554,7 +553,8 @@
"u16",
"u64",
"unless",
- "regardless"));
+ "regardless",
+ "void"));
} // namespace
} // namespace wgsl
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index 8c91da6..ca63df2 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -83,9 +83,6 @@
if (str == "front_facing") {
return ast::Builtin::kFrontFacing;
}
- if (str == "frag_coord") {
- return ast::Builtin::kFragCoord;
- }
if (str == "frag_depth") {
return ast::Builtin::kFragDepth;
}
@@ -107,12 +104,6 @@
if (str == "sample_mask") {
return ast::Builtin::kSampleMask;
}
- if (str == "sample_mask_in") {
- return ast::Builtin::kSampleMaskIn;
- }
- if (str == "sample_mask_out") {
- return ast::Builtin::kSampleMaskOut;
- }
return ast::Builtin::kNone;
}
@@ -500,13 +491,7 @@
Maybe<ast::Variable*> ParserImpl::global_constant_decl(
ast::DecorationList& decos) {
if (!match(Token::Type::kLet)) {
- Source source;
- if (match(Token::Type::kConst, &source)) {
- // crbug.com/tint/699: 'const' renamed to 'let'
- deprecated(source, "use 'let' instead of 'const'");
- } else {
- return Failure::kNoMatch;
- }
+ return Failure::kNoMatch;
}
const char* use = "let declaration";
@@ -1327,19 +1312,11 @@
header->return_type, body.value, decos, header->return_type_decorations);
}
-// function_type_decl
-// : type_decl
-// | VOID
-Maybe<ast::Type*> ParserImpl::function_type_decl() {
- Source source;
- if (match(Token::Type::kVoid, &source))
- return builder_.ty.void_(source);
-
- return type_decl();
-}
-
// function_header
-// : FN IDENT PAREN_LEFT param_list PAREN_RIGHT ARROW function_type_decl
+// : FN IDENT PAREN_LEFT param_list PAREN_RIGHT return_type_decl_optional
+// return_type_decl_optional
+// :
+// | ARROW attribute_list* type_decl
Maybe<ParserImpl::FunctionHeader> ParserImpl::function_header() {
Source source;
if (!match(Token::Type::kFn, &source)) {
@@ -1377,7 +1354,7 @@
auto tok = peek();
- auto type = function_type_decl();
+ auto type = type_decl();
if (type.errored) {
errored = true;
} else if (!type.matched) {
@@ -1385,13 +1362,6 @@
} else {
return_type = type.value;
}
-
- if (Is<ast::Void>(return_type)) {
- // crbug.com/tint/677: void has been removed from the language
- deprecated(tok.source(),
- "omit '-> void' for functions that do not return a value");
- }
-
} else {
return_type = builder_.ty.void_();
}
@@ -1489,16 +1459,6 @@
if (builtin == ast::Builtin::kNone)
return add_error(ident.source, "invalid value for builtin decoration");
- if (builtin == ast::Builtin::kFragCoord) {
- deprecated(ident.source, "use 'position' instead of 'frag_coord'");
- }
- if (builtin == ast::Builtin::kSampleMaskIn) {
- deprecated(ident.source, "use 'sample_mask' instead of 'sample_mask_in'");
- }
- if (builtin == ast::Builtin::kSampleMaskOut) {
- deprecated(ident.source, "use 'sample_mask' instead of 'sample_mask_out'");
- }
-
return {builtin, ident.source};
}
@@ -1695,17 +1655,7 @@
// | variable_decl EQUAL logical_or_expression
// | CONST variable_ident_decl EQUAL logical_or_expression
Maybe<ast::VariableDeclStatement*> ParserImpl::variable_stmt() {
- bool is_const = match(Token::Type::kLet);
- if (!is_const) {
- Source source;
- if (match(Token::Type::kConst, &source)) {
- // crbug.com/tint/699: 'const' renamed to 'let'
- deprecated(source, "use 'let' instead of 'const'");
- is_const = true;
- }
- }
-
- if (is_const) {
+ if (match(Token::Type::kLet)) {
auto decl = expect_variable_ident_decl("let declaration");
if (decl.errored)
return Failure::kErrored;
diff --git a/src/reader/wgsl/parser_impl.h b/src/reader/wgsl/parser_impl.h
index 261d2c9..1fa4f31 100644
--- a/src/reader/wgsl/parser_impl.h
+++ b/src/reader/wgsl/parser_impl.h
@@ -458,9 +458,6 @@
/// @param use a description of what was being parsed if an error was raised
/// @returns returns the image format or kNone if none matched.
Expect<ast::ImageFormat> expect_image_storage_type(const std::string& use);
- /// Parses a `function_type_decl` grammar element
- /// @returns the parsed type or nullptr otherwise
- Maybe<ast::Type*> function_type_decl();
/// Parses a `function_header` grammar element
/// @returns the parsed function header
Maybe<FunctionHeader> function_header();
diff --git a/src/reader/wgsl/parser_impl_error_msg_test.cc b/src/reader/wgsl/parser_impl_error_msg_test.cc
index ba54f60..bfefc25 100644
--- a/src/reader/wgsl/parser_impl_error_msg_test.cc
+++ b/src/reader/wgsl/parser_impl_error_msg_test.cc
@@ -367,10 +367,10 @@
}
TEST_F(ParserImplErrorTest, FunctionDeclMissingArrow) {
- EXPECT("fn f() void {}",
+ EXPECT("fn f() f32 {}",
"test.wgsl:1:8 error: expected '{'\n"
- "fn f() void {}\n"
- " ^^^^\n");
+ "fn f() f32 {}\n"
+ " ^^^\n");
}
TEST_F(ParserImplErrorTest, FunctionDeclInvalidReturnType) {
diff --git a/src/reader/wgsl/parser_impl_function_header_test.cc b/src/reader/wgsl/parser_impl_function_header_test.cc
index 52071a3..193950c 100644
--- a/src/reader/wgsl/parser_impl_function_header_test.cc
+++ b/src/reader/wgsl/parser_impl_function_header_test.cc
@@ -124,19 +124,6 @@
EXPECT_EQ(p->error(), "1:13: unable to determine function return type");
}
-TEST_F(ParserImplTest, FunctionHeader_ArrowVoid) {
- auto p = parser("fn main() -> void");
- auto f = p->function_header();
- EXPECT_TRUE(f.matched);
- EXPECT_FALSE(f.errored);
- EXPECT_EQ(
- p->builder().Diagnostics().str(),
- R"(test.wgsl:1:14 warning: use of deprecated language feature: omit '-> void' for functions that do not return a value
-fn main() -> void
- ^^^^
-)");
-}
-
} // namespace
} // namespace wgsl
} // namespace reader
diff --git a/src/reader/wgsl/parser_impl_function_type_decl_test.cc b/src/reader/wgsl/parser_impl_function_type_decl_test.cc
deleted file mode 100644
index c9865ab..0000000
--- a/src/reader/wgsl/parser_impl_function_type_decl_test.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2020 The Tint Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "src/reader/wgsl/parser_impl_test_helper.h"
-
-namespace tint {
-namespace reader {
-namespace wgsl {
-namespace {
-
-TEST_F(ParserImplTest, FunctionTypeDecl_Void) {
- auto p = parser("void");
-
- auto e = p->function_type_decl();
- EXPECT_TRUE(e.matched);
- EXPECT_FALSE(e.errored);
- EXPECT_FALSE(p->has_error()) << p->error();
- EXPECT_TRUE(e.value->Is<ast::Void>());
- EXPECT_EQ(e.value->source().range, (Source::Range{{1u, 1u}, {1u, 5u}}));
-}
-
-TEST_F(ParserImplTest, FunctionTypeDecl_Type) {
- auto p = parser("vec2<f32>");
-
- auto e = p->function_type_decl();
- EXPECT_TRUE(e.matched);
- EXPECT_FALSE(e.errored);
- EXPECT_FALSE(p->has_error()) << p->error();
- ASSERT_TRUE(e.value->Is<ast::Vector>());
- EXPECT_EQ(e.value->As<ast::Vector>()->size(), 2u);
- EXPECT_TRUE(e.value->As<ast::Vector>()->type()->Is<ast::F32>());
- EXPECT_EQ(e.value->source().range, (Source::Range{{1u, 1u}, {1u, 10u}}));
-}
-
-TEST_F(ParserImplTest, FunctionTypeDecl_InvalidType) {
- auto p = parser("vec2<invalid>");
- auto e = p->function_type_decl();
- EXPECT_FALSE(e.matched);
- EXPECT_TRUE(e.errored);
- EXPECT_TRUE(p->has_error());
- EXPECT_EQ(e.value, nullptr);
- EXPECT_EQ(p->error(), "1:6: unknown constructed type 'invalid'");
-}
-
-} // namespace
-} // namespace wgsl
-} // namespace reader
-} // namespace tint
diff --git a/src/reader/wgsl/parser_impl_global_constant_decl_test.cc b/src/reader/wgsl/parser_impl_global_constant_decl_test.cc
index f8fd1d5..992883e 100644
--- a/src/reader/wgsl/parser_impl_global_constant_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_global_constant_decl_test.cc
@@ -181,23 +181,6 @@
EXPECT_EQ(p->error(), "1:12: override decoration must be positive");
}
-TEST_F(ParserImplTest, GlobalConstantDec_Const) {
- auto p = parser("const a : i32 = 1");
- auto decos = p->decoration_list();
- EXPECT_FALSE(decos.errored);
- EXPECT_FALSE(decos.matched);
-
- auto e = p->global_constant_decl(decos.value);
- EXPECT_TRUE(e.matched);
- EXPECT_FALSE(e.errored);
- EXPECT_EQ(
- p->builder().Diagnostics().str(),
- R"(test.wgsl:1:1 warning: use of deprecated language feature: use 'let' instead of 'const'
-const a : i32 = 1
-^^^^^
-)");
-}
-
} // namespace
} // namespace wgsl
} // namespace reader
diff --git a/src/reader/wgsl/parser_impl_variable_decoration_test.cc b/src/reader/wgsl/parser_impl_variable_decoration_test.cc
index c324483..33b1d10 100644
--- a/src/reader/wgsl/parser_impl_variable_decoration_test.cc
+++ b/src/reader/wgsl/parser_impl_variable_decoration_test.cc
@@ -113,7 +113,6 @@
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",
@@ -123,9 +122,7 @@
BuiltinData{"global_invocation_id", ast::Builtin::kGlobalInvocationId},
BuiltinData{"workgroup_id", ast::Builtin::kWorkgroupId},
BuiltinData{"sample_index", ast::Builtin::kSampleIndex},
- BuiltinData{"sample_mask", ast::Builtin::kSampleMask},
- BuiltinData{"sample_mask_in", ast::Builtin::kSampleMaskIn},
- BuiltinData{"sample_mask_out", ast::Builtin::kSampleMaskOut}));
+ BuiltinData{"sample_mask", ast::Builtin::kSampleMask}));
TEST_F(ParserImplTest, Decoration_Builtin_MissingLeftParen) {
auto p = parser("builtin position)");
@@ -307,72 +304,6 @@
"1:7: expected signed integer literal for group decoration");
}
-TEST_F(ParserImplTest, Decoration_FragCoord_Deprecated) {
- auto p = parser("builtin(frag_coord)");
- auto deco = p->decoration();
- EXPECT_TRUE(deco.matched);
- EXPECT_FALSE(deco.errored);
- ASSERT_NE(deco.value, nullptr);
- auto* var_deco = deco.value->As<ast::Decoration>();
- ASSERT_NE(var_deco, nullptr);
- ASSERT_FALSE(p->has_error());
- ASSERT_TRUE(var_deco->Is<ast::BuiltinDecoration>());
-
- auto* builtin = var_deco->As<ast::BuiltinDecoration>();
- EXPECT_EQ(builtin->value(), ast::Builtin::kFragCoord);
-
- EXPECT_EQ(
- p->builder().Diagnostics().str(),
- R"(test.wgsl:1:9 warning: use of deprecated language feature: use 'position' instead of 'frag_coord'
-builtin(frag_coord)
- ^^^^^^^^^^
-)");
-}
-
-TEST_F(ParserImplTest, Decoration_SampleMaskIn_Deprecated) {
- auto p = parser("builtin(sample_mask_in)");
- auto deco = p->decoration();
- EXPECT_TRUE(deco.matched);
- EXPECT_FALSE(deco.errored);
- ASSERT_NE(deco.value, nullptr);
- auto* var_deco = deco.value->As<ast::Decoration>();
- ASSERT_NE(var_deco, nullptr);
- ASSERT_FALSE(p->has_error());
- ASSERT_TRUE(var_deco->Is<ast::BuiltinDecoration>());
-
- auto* builtin = var_deco->As<ast::BuiltinDecoration>();
- EXPECT_EQ(builtin->value(), ast::Builtin::kSampleMaskIn);
-
- EXPECT_EQ(
- p->builder().Diagnostics().str(),
- R"(test.wgsl:1:9 warning: use of deprecated language feature: use 'sample_mask' instead of 'sample_mask_in'
-builtin(sample_mask_in)
- ^^^^^^^^^^^^^^
-)");
-}
-
-TEST_F(ParserImplTest, Decoration_SampleMaskOut_Deprecated) {
- auto p = parser("builtin(sample_mask_out)");
- auto deco = p->decoration();
- EXPECT_TRUE(deco.matched);
- EXPECT_FALSE(deco.errored);
- ASSERT_NE(deco.value, nullptr);
- auto* var_deco = deco.value->As<ast::Decoration>();
- ASSERT_NE(var_deco, nullptr);
- ASSERT_FALSE(p->has_error());
- ASSERT_TRUE(var_deco->Is<ast::BuiltinDecoration>());
-
- auto* builtin = var_deco->As<ast::BuiltinDecoration>();
- EXPECT_EQ(builtin->value(), ast::Builtin::kSampleMaskOut);
-
- EXPECT_EQ(
- p->builder().Diagnostics().str(),
- R"(test.wgsl:1:9 warning: use of deprecated language feature: use 'sample_mask' instead of 'sample_mask_out'
-builtin(sample_mask_out)
- ^^^^^^^^^^^^^^^
-)");
-}
-
} // namespace
} // namespace wgsl
} // namespace reader
diff --git a/src/reader/wgsl/parser_impl_variable_stmt_test.cc b/src/reader/wgsl/parser_impl_variable_stmt_test.cc
index bfbf6e8..624b78f 100644
--- a/src/reader/wgsl/parser_impl_variable_stmt_test.cc
+++ b/src/reader/wgsl/parser_impl_variable_stmt_test.cc
@@ -193,19 +193,6 @@
EXPECT_EQ(p->error(), "1:15: missing constructor for let declaration");
}
-TEST_F(ParserImplTest, VariableStmt_Const) {
- auto p = parser("const a : i32 = 1");
- auto e = p->variable_stmt();
- EXPECT_TRUE(e.matched);
- EXPECT_FALSE(e.errored);
- EXPECT_EQ(
- p->builder().Diagnostics().str(),
- R"(test.wgsl:1:1 warning: use of deprecated language feature: use 'let' instead of 'const'
-const a : i32 = 1
-^^^^^
-)");
-}
-
} // namespace
} // namespace wgsl
} // namespace reader
diff --git a/src/reader/wgsl/token.cc b/src/reader/wgsl/token.cc
index f131cd9..224dae0 100644
--- a/src/reader/wgsl/token.cc
+++ b/src/reader/wgsl/token.cc
@@ -115,8 +115,6 @@
return "break";
case Token::Type::kCase:
return "case";
- case Token::Type::kConst:
- return "const";
case Token::Type::kContinue:
return "continue";
case Token::Type::kContinuing:
@@ -309,8 +307,6 @@
return "vec3";
case Token::Type::kVec4:
return "vec4";
- case Token::Type::kVoid:
- return "void";
case Token::Type::kWorkgroup:
return "workgroup";
}
diff --git a/src/reader/wgsl/token.h b/src/reader/wgsl/token.h
index 10c6b0e..04b66da 100644
--- a/src/reader/wgsl/token.h
+++ b/src/reader/wgsl/token.h
@@ -123,8 +123,6 @@
kBreak,
/// A 'case'
kCase,
- /// A 'const'
- kConst,
/// A 'continue'
kContinue,
/// A 'continuing'
@@ -317,8 +315,6 @@
kVec3,
/// A 'vec4'
kVec4,
- /// A 'void'
- kVoid,
/// A 'workgroup'
kWorkgroup,
};
@@ -464,8 +460,6 @@
bool IsCase() const { return type_ == Type::kCase; }
/// @returns true if token is a 'sampler_comparison'
bool IsComparisonSampler() const { return type_ == Type::kComparisonSampler; }
- /// @returns true if token is a 'const'
- bool IsConst() const { return type_ == Type::kConst; }
/// @returns true if token is a 'continue'
bool IsContinue() const { return type_ == Type::kContinue; }
/// @returns true if token is a 'continuing'
@@ -676,8 +670,6 @@
bool IsVec3() const { return type_ == Type::kVec3; }
/// @returns true if token is a 'vec4'
bool IsVec4() const { return type_ == Type::kVec4; }
- /// @returns true if token is a 'void'
- bool IsVoid() const { return type_ == Type::kVoid; }
/// @returns true if token is a 'workgroup'
bool IsWorkgroup() const { return type_ == Type::kWorkgroup; }
diff --git a/src/transform/spirv.cc b/src/transform/spirv.cc
index ffb8da8..459b1f5 100644
--- a/src/transform/spirv.cc
+++ b/src/transform/spirv.cc
@@ -230,9 +230,7 @@
for (auto* var : ctx.src->AST().GlobalVariables()) {
for (auto* deco : var->decorations()) {
if (auto* builtin = deco->As<ast::BuiltinDecoration>()) {
- if (builtin->value() != ast::Builtin::kSampleMask &&
- builtin->value() != ast::Builtin::kSampleMaskIn &&
- builtin->value() != ast::Builtin::kSampleMaskOut) {
+ if (builtin->value() != ast::Builtin::kSampleMask) {
continue;
}
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index 1c2d3f0..8679601 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -1957,8 +1957,6 @@
return "SV_InstanceID";
case ast::Builtin::kFrontFacing:
return "SV_IsFrontFace";
- case ast::Builtin::kFragCoord:
- return "SV_Position";
case ast::Builtin::kFragDepth:
return "SV_Depth";
case ast::Builtin::kLocalInvocationId:
@@ -1973,10 +1971,6 @@
return "SV_SampleIndex";
case ast::Builtin::kSampleMask:
return "SV_Coverage";
- case ast::Builtin::kSampleMaskIn:
- return "SV_Coverage";
- case ast::Builtin::kSampleMaskOut:
- return "SV_Coverage";
default:
break;
}
diff --git a/src/writer/hlsl/generator_impl_test.cc b/src/writer/hlsl/generator_impl_test.cc
index b04d496..4fc4e32 100644
--- a/src/writer/hlsl/generator_impl_test.cc
+++ b/src/writer/hlsl/generator_impl_test.cc
@@ -76,7 +76,6 @@
HlslBuiltinData{ast::Builtin::kVertexIndex, "SV_VertexID"},
HlslBuiltinData{ast::Builtin::kInstanceIndex, "SV_InstanceID"},
HlslBuiltinData{ast::Builtin::kFrontFacing, "SV_IsFrontFace"},
- HlslBuiltinData{ast::Builtin::kFragCoord, "SV_Position"},
HlslBuiltinData{ast::Builtin::kFragDepth, "SV_Depth"},
HlslBuiltinData{ast::Builtin::kLocalInvocationId, "SV_GroupThreadID"},
HlslBuiltinData{ast::Builtin::kLocalInvocationIndex, "SV_GroupIndex"},
@@ -84,9 +83,7 @@
"SV_DispatchThreadID"},
HlslBuiltinData{ast::Builtin::kWorkgroupId, "SV_GroupID"},
HlslBuiltinData{ast::Builtin::kSampleIndex, "SV_SampleIndex"},
- HlslBuiltinData{ast::Builtin::kSampleMask, "SV_Coverage"},
- HlslBuiltinData{ast::Builtin::kSampleMaskIn, "SV_Coverage"},
- HlslBuiltinData{ast::Builtin::kSampleMaskOut, "SV_Coverage"}));
+ HlslBuiltinData{ast::Builtin::kSampleMask, "SV_Coverage"}));
} // namespace
} // namespace hlsl
diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc
index fd76e6e..132964e 100644
--- a/src/writer/msl/generator_impl.cc
+++ b/src/writer/msl/generator_impl.cc
@@ -1341,8 +1341,6 @@
return "instance_id";
case ast::Builtin::kFrontFacing:
return "front_facing";
- case ast::Builtin::kFragCoord:
- return "position";
case ast::Builtin::kFragDepth:
return "depth(any)";
case ast::Builtin::kLocalInvocationId:
@@ -1357,10 +1355,6 @@
return "sample_id";
case ast::Builtin::kSampleMask:
return "sample_mask";
- 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 f1f12cf..4cb99f8 100644
--- a/src/writer/msl/generator_impl_test.cc
+++ b/src/writer/msl/generator_impl_test.cc
@@ -65,7 +65,6 @@
MslBuiltinData{ast::Builtin::kVertexIndex, "vertex_id"},
MslBuiltinData{ast::Builtin::kInstanceIndex, "instance_id"},
MslBuiltinData{ast::Builtin::kFrontFacing, "front_facing"},
- MslBuiltinData{ast::Builtin::kFragCoord, "position"},
MslBuiltinData{ast::Builtin::kFragDepth, "depth(any)"},
MslBuiltinData{ast::Builtin::kLocalInvocationId,
"thread_position_in_threadgroup"},
@@ -76,10 +75,7 @@
MslBuiltinData{ast::Builtin::kWorkgroupId,
"threadgroup_position_in_grid"},
MslBuiltinData{ast::Builtin::kSampleIndex, "sample_id"},
- MslBuiltinData{ast::Builtin::kSampleMask, "sample_mask"},
- MslBuiltinData{ast::Builtin::kSampleMaskIn, "sample_mask"},
- MslBuiltinData{ast::Builtin::kSampleMaskOut,
- "sample_mask"}));
+ MslBuiltinData{ast::Builtin::kSampleMask, "sample_mask"}));
} // namespace
} // namespace msl
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index 7b51c94..41d9f1b 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -3369,8 +3369,6 @@
return SpvBuiltInInstanceIndex;
case ast::Builtin::kFrontFacing:
return SpvBuiltInFrontFacing;
- case ast::Builtin::kFragCoord:
- return SpvBuiltInFragCoord;
case ast::Builtin::kFragDepth:
return SpvBuiltInFragDepth;
case ast::Builtin::kLocalInvocationId:
@@ -3388,10 +3386,6 @@
return SpvBuiltInSampleId;
case ast::Builtin::kSampleMask:
return SpvBuiltInSampleMask;
- case ast::Builtin::kSampleMaskIn:
- return SpvBuiltInSampleMask;
- case ast::Builtin::kSampleMaskOut:
- return SpvBuiltInSampleMask;
case ast::Builtin::kNone:
break;
}
diff --git a/src/writer/spirv/builder_global_variable_test.cc b/src/writer/spirv/builder_global_variable_test.cc
index f084a40..38a5cc0 100644
--- a/src/writer/spirv/builder_global_variable_test.cc
+++ b/src/writer/spirv/builder_global_variable_test.cc
@@ -373,8 +373,6 @@
SpvBuiltInInstanceIndex},
BuiltinData{ast::Builtin::kFrontFacing, ast::StorageClass::kInput,
SpvBuiltInFrontFacing},
- BuiltinData{ast::Builtin::kFragCoord, ast::StorageClass::kInput,
- SpvBuiltInFragCoord},
BuiltinData{ast::Builtin::kFragDepth, ast::StorageClass::kOutput,
SpvBuiltInFragDepth},
BuiltinData{ast::Builtin::kLocalInvocationId, ast::StorageClass::kInput,
@@ -390,10 +388,6 @@
BuiltinData{ast::Builtin::kSampleMask, ast::StorageClass::kInput,
SpvBuiltInSampleMask},
BuiltinData{ast::Builtin::kSampleMask, ast::StorageClass::kOutput,
- SpvBuiltInSampleMask},
- BuiltinData{ast::Builtin::kSampleMaskIn, ast::StorageClass::kInput,
- SpvBuiltInSampleMask},
- BuiltinData{ast::Builtin::kSampleMaskOut, ast::StorageClass::kOutput,
SpvBuiltInSampleMask}));
TEST_F(BuilderTest, GlobalVar_DeclReadOnly) {
diff --git a/src/writer/wgsl/generator_impl_test.cc b/src/writer/wgsl/generator_impl_test.cc
index f61f0c7..985bf51 100644
--- a/src/writer/wgsl/generator_impl_test.cc
+++ b/src/writer/wgsl/generator_impl_test.cc
@@ -66,7 +66,6 @@
WgslBuiltinData{ast::Builtin::kVertexIndex, "vertex_index"},
WgslBuiltinData{ast::Builtin::kInstanceIndex, "instance_index"},
WgslBuiltinData{ast::Builtin::kFrontFacing, "front_facing"},
- WgslBuiltinData{ast::Builtin::kFragCoord, "frag_coord"},
WgslBuiltinData{ast::Builtin::kFragDepth, "frag_depth"},
WgslBuiltinData{ast::Builtin::kLocalInvocationId,
"local_invocation_id"},
@@ -75,9 +74,7 @@
WgslBuiltinData{ast::Builtin::kGlobalInvocationId,
"global_invocation_id"},
WgslBuiltinData{ast::Builtin::kWorkgroupId, "workgroup_id"},
- WgslBuiltinData{ast::Builtin::kSampleIndex, "sample_index"},
- WgslBuiltinData{ast::Builtin::kSampleMaskIn, "sample_mask_in"},
- WgslBuiltinData{ast::Builtin::kSampleMaskOut, "sample_mask_out"}));
+ WgslBuiltinData{ast::Builtin::kSampleIndex, "sample_index"}));
} // namespace
} // namespace wgsl
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 679555f..1ea5ae7 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -439,7 +439,6 @@
"../src/reader/wgsl/parser_impl_function_decoration_list_test.cc",
"../src/reader/wgsl/parser_impl_function_decoration_test.cc",
"../src/reader/wgsl/parser_impl_function_header_test.cc",
- "../src/reader/wgsl/parser_impl_function_type_decl_test.cc",
"../src/reader/wgsl/parser_impl_global_constant_decl_test.cc",
"../src/reader/wgsl/parser_impl_global_decl_test.cc",
"../src/reader/wgsl/parser_impl_global_variable_decl_test.cc",