Import Tint changes from Dawn
Changes:
- 901fb74279ef117ac5a86727ea2409c763b83d4f [tint] Add explicit error for double leading underscores ... by Ben Clayton <bclayton@google.com>
- 70a16fff5c11612225e53055f43ba6523abc8f41 Enable ReadWrite/ReadOnly storage textures by default. by Corentin Wallez <cwallez@chromium.org>
- add6c36157ad329110e694fc55db7fbb7a9571c3 [tint][wgsl] Use two underscores for internal builtin fn by Ben Clayton <bclayton@google.com>
GitOrigin-RevId: 901fb74279ef117ac5a86727ea2409c763b83d4f
Change-Id: I54f3a6b255fe81efc8cf5e0476cdaa6b640fe815
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/177860
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/lang/wgsl/ast/transform/substitute_override_test.cc b/src/tint/lang/wgsl/ast/transform/substitute_override_test.cc
index a0ed463..5769c85 100644
--- a/src/tint/lang/wgsl/ast/transform/substitute_override_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/substitute_override_test.cc
@@ -292,7 +292,7 @@
fn f() {
const smaller_than_any_f32 = 1e-50;
const large_float = 1000000000000000013287555072.0;
- _ = _tint_materialize(vec2(0))[i32(((_tint_materialize(vec2(smaller_than_any_f32))[O] * large_float) * large_float))];
+ _ = __tint_materialize(vec2(0))[i32(((__tint_materialize(vec2(smaller_than_any_f32))[O] * large_float) * large_float))];
}
)";
diff --git a/src/tint/lang/wgsl/builtin_fn.cc b/src/tint/lang/wgsl/builtin_fn.cc
index 04bdd2f..a601143 100644
--- a/src/tint/lang/wgsl/builtin_fn.cc
+++ b/src/tint/lang/wgsl/builtin_fn.cc
@@ -408,7 +408,7 @@
if (name == "subgroupBroadcast") {
return BuiltinFn::kSubgroupBroadcast;
}
- if (name == "_tint_materialize") {
+ if (name == "__tint_materialize") {
return BuiltinFn::kTintMaterialize;
}
return BuiltinFn::kNone;
@@ -665,7 +665,7 @@
case BuiltinFn::kSubgroupBroadcast:
return "subgroupBroadcast";
case BuiltinFn::kTintMaterialize:
- return "_tint_materialize";
+ return "__tint_materialize";
}
return "<unknown>";
}
diff --git a/src/tint/lang/wgsl/builtin_fn.h b/src/tint/lang/wgsl/builtin_fn.h
index 30d4bd7..8f061ee 100644
--- a/src/tint/lang/wgsl/builtin_fn.h
+++ b/src/tint/lang/wgsl/builtin_fn.h
@@ -444,7 +444,7 @@
"atomicCompareExchangeWeak",
"subgroupBallot",
"subgroupBroadcast",
- "_tint_materialize",
+ "__tint_materialize",
};
/// Determines if the given `f` is a coarse derivative.
diff --git a/src/tint/lang/wgsl/features/status.cc b/src/tint/lang/wgsl/features/status.cc
index 22fd78e..87462d2 100644
--- a/src/tint/lang/wgsl/features/status.cc
+++ b/src/tint/lang/wgsl/features/status.cc
@@ -36,8 +36,6 @@
////////////////////////////////////////////////////////////////////
// Experimental features
///////////////////////////////////////////////////////////////////
- case LanguageFeature::kReadonlyAndReadwriteStorageTextures:
- return FeatureStatus::kExperimental;
////////////////////////////////////////////////////////////////////
// Enabled features
@@ -45,6 +43,7 @@
case LanguageFeature::kPacked4X8IntegerDotProduct:
case LanguageFeature::kPointerCompositeAccess:
case LanguageFeature::kUnrestrictedPointerParameters:
+ case LanguageFeature::kReadonlyAndReadwriteStorageTextures:
return FeatureStatus::kShippedWithKillswitch;
////////////////////////////////////////////////////////////////////
diff --git a/src/tint/lang/wgsl/intrinsic/data.cc b/src/tint/lang/wgsl/intrinsic/data.cc
index 77641d2..4aeadb0 100644
--- a/src/tint/lang/wgsl/intrinsic/data.cc
+++ b/src/tint/lang/wgsl/intrinsic/data.cc
@@ -11546,7 +11546,7 @@
},
{
/* [123] */
- /* fn _tint_materialize[T](T) -> T */
+ /* fn __tint_materialize[T](T) -> T */
/* num overloads */ 1,
/* overloads */ OverloadIndex(524),
},
diff --git a/src/tint/lang/wgsl/reader/parser/lexer.cc b/src/tint/lang/wgsl/reader/parser/lexer.cc
index 117f30a..b12c0ec 100644
--- a/src/tint/lang/wgsl/reader/parser/lexer.cc
+++ b/src/tint/lang/wgsl/reader/parser/lexer.cc
@@ -1012,19 +1012,17 @@
// Consume continuing codepoint
advance(static_cast<uint32_t>(n));
-
- if (pos() - start == 2 && substr(start, 2) == "__") {
- // Identifiers prefixed with two or more underscores are not allowed.
- // We check for these in the loop to bail early and prevent quadratic parse time for
- // long sequences of ____.
- set_pos(start);
- return {};
- }
}
auto str = substr(start, pos() - start);
end_source(source);
+ if (str.length() > 1 && substr(start, 2) == "__") {
+ // Identifiers prefixed with two or more underscores are not allowed.
+ return Token{Token::Type::kError, source,
+ "identifiers must not start with two or more underscores"};
+ }
+
if (auto t = parse_keyword(str); t.has_value()) {
return Token{t.value(), source, str};
}
diff --git a/src/tint/lang/wgsl/reader/parser/lexer_test.cc b/src/tint/lang/wgsl/reader/parser/lexer_test.cc
index b2b593b..38cbd46 100644
--- a/src/tint/lang/wgsl/reader/parser/lexer_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/lexer_test.cc
@@ -769,7 +769,8 @@
ASSERT_FALSE(list.empty());
auto& t = list[0];
- EXPECT_FALSE(t.IsIdentifier());
+ EXPECT_TRUE(t.IsError());
+ EXPECT_EQ(t.to_str(), "identifiers must not start with two or more underscores");
}
TEST_F(LexerTest, IdentifierTest_DoesNotStartWithNumber) {
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index 8a1740b..ca0b0a2 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -925,4 +925,4 @@
////////////////////////////////////////////////////////////////////////////////
// Tint internal builtins //
////////////////////////////////////////////////////////////////////////////////
-@const("Identity") fn _tint_materialize[T](T) -> T
+@const("Identity") fn __tint_materialize[T](T) -> T