mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-10 22:17:51 +00:00
Rename builtin(frag_coord) to builtin(position)
Use the variable storage class to determine the correct builtin to use in the SPIR-V generator. Added a deprecation warning for frag_coord. Bug: tint:714 Change-Id: I5ad4956f9345e2f39f4af16e84668dec345ac82e Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/47742 Auto-Submit: James Price <jrprice@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
committed by
Commit Bot service account
parent
d13982ff2e
commit
88d7edcf7a
@@ -77,7 +77,7 @@ ast::Builtin EnumConverter::ToBuiltin(SpvBuiltIn b, ast::StorageClass sc) {
|
||||
case SpvBuiltInFrontFacing:
|
||||
return ast::Builtin::kFrontFacing;
|
||||
case SpvBuiltInFragCoord:
|
||||
return ast::Builtin::kFragCoord;
|
||||
return ast::Builtin::kPosition;
|
||||
case SpvBuiltInFragDepth:
|
||||
return ast::Builtin::kFragDepth;
|
||||
case SpvBuiltInLocalInvocationId:
|
||||
|
||||
@@ -214,7 +214,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
BuiltinCase{SpvBuiltInFrontFacing, ast::StorageClass::kInput, true,
|
||||
ast::Builtin::kFrontFacing},
|
||||
BuiltinCase{SpvBuiltInFragCoord, ast::StorageClass::kInput, true,
|
||||
ast::Builtin::kFragCoord},
|
||||
ast::Builtin::kPosition},
|
||||
BuiltinCase{SpvBuiltInLocalInvocationId, ast::StorageClass::kInput,
|
||||
true, ast::Builtin::kLocalInvocationId},
|
||||
BuiltinCase{SpvBuiltInLocalInvocationIndex, ast::StorageClass::kInput,
|
||||
|
||||
@@ -1379,6 +1379,10 @@ Expect<ast::Builtin> ParserImpl::expect_builtin() {
|
||||
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'");
|
||||
}
|
||||
|
||||
return {builtin, ident.source};
|
||||
}
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ TEST_F(ParserImplTest, ParamList_HangingComma) {
|
||||
|
||||
TEST_F(ParserImplTest, ParamList_Decorations) {
|
||||
auto p = parser(
|
||||
"[[builtin(frag_coord)]] coord : vec4<f32>, "
|
||||
"[[builtin(position)]] coord : vec4<f32>, "
|
||||
"[[location(1)]] loc1 : f32");
|
||||
|
||||
auto* f32 = p->builder().create<type::F32>();
|
||||
@@ -115,12 +115,12 @@ TEST_F(ParserImplTest, ParamList_Decorations) {
|
||||
ASSERT_EQ(decos0.size(), 1u);
|
||||
EXPECT_TRUE(decos0[0]->Is<ast::BuiltinDecoration>());
|
||||
EXPECT_EQ(decos0[0]->As<ast::BuiltinDecoration>()->value(),
|
||||
ast::Builtin::kFragCoord);
|
||||
ast::Builtin::kPosition);
|
||||
|
||||
ASSERT_EQ(e.value[0]->source().range.begin.line, 1u);
|
||||
ASSERT_EQ(e.value[0]->source().range.begin.column, 25u);
|
||||
ASSERT_EQ(e.value[0]->source().range.begin.column, 23u);
|
||||
ASSERT_EQ(e.value[0]->source().range.end.line, 1u);
|
||||
ASSERT_EQ(e.value[0]->source().range.end.column, 30u);
|
||||
ASSERT_EQ(e.value[0]->source().range.end.column, 28u);
|
||||
|
||||
EXPECT_EQ(e.value[1]->symbol(), p->builder().Symbols().Get("loc1"));
|
||||
EXPECT_EQ(e.value[1]->declared_type(), f32);
|
||||
@@ -131,9 +131,9 @@ TEST_F(ParserImplTest, ParamList_Decorations) {
|
||||
EXPECT_EQ(decos1[0]->As<ast::LocationDecoration>()->value(), 1u);
|
||||
|
||||
ASSERT_EQ(e.value[1]->source().range.begin.line, 1u);
|
||||
ASSERT_EQ(e.value[1]->source().range.begin.column, 60u);
|
||||
ASSERT_EQ(e.value[1]->source().range.begin.column, 58u);
|
||||
ASSERT_EQ(e.value[1]->source().range.end.line, 1u);
|
||||
ASSERT_EQ(e.value[1]->source().range.end.column, 64u);
|
||||
ASSERT_EQ(e.value[1]->source().range.end.column, 62u);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -305,6 +305,28 @@ TEST_F(ParserImplTest, Decoration_Group_MissingInvalid) {
|
||||
"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)
|
||||
^^^^^^^^^^
|
||||
)");
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace wgsl
|
||||
} // namespace reader
|
||||
|
||||
Reference in New Issue
Block a user