diff --git a/src/BUILD.gn b/src/BUILD.gn index 0cdaac47f7..8c321d60a0 100644 --- a/src/BUILD.gn +++ b/src/BUILD.gn @@ -292,8 +292,6 @@ libtint_source_set("libtint_core_all_src") { "ast/call_statement.h", "ast/case_statement.cc", "ast/case_statement.h", - "ast/constant_id_decoration.cc", - "ast/constant_id_decoration.h", "ast/constructor_expression.cc", "ast/constructor_expression.h", "ast/continue_statement.cc", @@ -346,6 +344,8 @@ libtint_source_set("libtint_core_all_src") { "ast/multisampled_texture.h", "ast/node.cc", "ast/node.h", + "ast/override_decoration.cc", + "ast/override_decoration.h", "ast/pipeline_stage.cc", "ast/pipeline_stage.h", "ast/pointer.cc", diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dbb4681f86..11b363b13f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -74,8 +74,6 @@ set(TINT_LIB_SRCS ast/call_statement.h ast/case_statement.cc ast/case_statement.h - ast/constant_id_decoration.cc - ast/constant_id_decoration.h ast/constructor_expression.cc ast/constructor_expression.h ast/continue_statement.cc @@ -128,6 +126,8 @@ set(TINT_LIB_SRCS ast/multisampled_texture.h ast/node.cc ast/node.h + ast/override_decoration.cc + ast/override_decoration.h ast/pipeline_stage.cc ast/pipeline_stage.h ast/pointer.cc @@ -479,7 +479,6 @@ if(${TINT_BUILD_TESTS}) ast/call_expression_test.cc ast/call_statement_test.cc ast/case_statement_test.cc - ast/constant_id_decoration_test.cc ast/continue_statement_test.cc ast/depth_texture_test.cc ast/discard_statement_test.cc @@ -503,6 +502,7 @@ if(${TINT_BUILD_TESTS}) ast/module_clone_test.cc ast/module_test.cc ast/multisampled_texture_test.cc + ast/override_decoration_test.cc ast/pointer_test.cc ast/return_statement_test.cc ast/sampled_texture_test.cc diff --git a/src/ast/binding_decoration_test.cc b/src/ast/binding_decoration_test.cc index 8f32660945..4b4b29f715 100644 --- a/src/ast/binding_decoration_test.cc +++ b/src/ast/binding_decoration_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/test_helper.h" namespace tint { @@ -30,7 +30,7 @@ TEST_F(BindingDecorationTest, Is) { Decoration* d = create(2); EXPECT_TRUE(d->Is()); EXPECT_FALSE(d->Is()); - EXPECT_FALSE(d->Is()); + EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); } diff --git a/src/ast/builtin_decoration_test.cc b/src/ast/builtin_decoration_test.cc index 90f4670d7b..e11b231292 100644 --- a/src/ast/builtin_decoration_test.cc +++ b/src/ast/builtin_decoration_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/test_helper.h" namespace tint { @@ -30,7 +30,7 @@ TEST_F(BuiltinDecorationTest, Is) { Decoration* d = create(Builtin::kFragDepth); EXPECT_FALSE(d->Is()); EXPECT_TRUE(d->Is()); - EXPECT_FALSE(d->Is()); + EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); } diff --git a/src/ast/group_decoration_test.cc b/src/ast/group_decoration_test.cc index 9dfbdd482b..79999c1dd9 100644 --- a/src/ast/group_decoration_test.cc +++ b/src/ast/group_decoration_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/test_helper.h" namespace tint { @@ -30,7 +30,7 @@ TEST_F(GroupDecorationTest, Is) { Decoration* d = create(2); EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); - EXPECT_FALSE(d->Is()); + EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); EXPECT_TRUE(d->Is()); } diff --git a/src/ast/location_decoration_test.cc b/src/ast/location_decoration_test.cc index fae40f9ba9..3b72d7527e 100644 --- a/src/ast/location_decoration_test.cc +++ b/src/ast/location_decoration_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/test_helper.h" namespace tint { @@ -30,7 +30,7 @@ TEST_F(LocationDecorationTest, Is) { Decoration* d = create(2); EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); - EXPECT_FALSE(d->Is()); + EXPECT_FALSE(d->Is()); EXPECT_TRUE(d->Is()); EXPECT_FALSE(d->Is()); } diff --git a/src/ast/constant_id_decoration.cc b/src/ast/override_decoration.cc similarity index 55% rename from src/ast/constant_id_decoration.cc rename to src/ast/override_decoration.cc index 64f145ea79..c50a993ebb 100644 --- a/src/ast/constant_id_decoration.cc +++ b/src/ast/override_decoration.cc @@ -12,33 +12,33 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/program_builder.h" -TINT_INSTANTIATE_TYPEINFO(tint::ast::ConstantIdDecoration); +TINT_INSTANTIATE_TYPEINFO(tint::ast::OverrideDecoration); namespace tint { namespace ast { -ConstantIdDecoration::ConstantIdDecoration(ProgramID program_id, - const Source& source, - uint32_t val) +OverrideDecoration::OverrideDecoration(ProgramID program_id, + const Source& source, + uint32_t val) : Base(program_id, source), value_(val) {} -ConstantIdDecoration::~ConstantIdDecoration() = default; +OverrideDecoration::~OverrideDecoration() = default; -void ConstantIdDecoration::to_str(const sem::Info&, - std::ostream& out, - size_t indent) const { +void OverrideDecoration::to_str(const sem::Info&, + std::ostream& out, + size_t indent) const { make_indent(out, indent); - out << "ConstantIdDecoration{" << value_ << "}" << std::endl; + out << "OverrideDecoration{" << value_ << "}" << std::endl; } -ConstantIdDecoration* ConstantIdDecoration::Clone(CloneContext* ctx) const { +OverrideDecoration* OverrideDecoration::Clone(CloneContext* ctx) const { // Clone arguments outside of create() call to have deterministic ordering auto src = ctx->Clone(source()); - return ctx->dst->create(src, value_); + return ctx->dst->create(src, value_); } } // namespace ast diff --git a/src/ast/constant_id_decoration.h b/src/ast/override_decoration.h similarity index 72% rename from src/ast/constant_id_decoration.h rename to src/ast/override_decoration.h index 9261e01b71..b2f8b3b70f 100644 --- a/src/ast/constant_id_decoration.h +++ b/src/ast/override_decoration.h @@ -12,27 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef SRC_AST_CONSTANT_ID_DECORATION_H_ -#define SRC_AST_CONSTANT_ID_DECORATION_H_ +#ifndef SRC_AST_OVERRIDE_DECORATION_H_ +#define SRC_AST_OVERRIDE_DECORATION_H_ #include "src/ast/decoration.h" namespace tint { namespace ast { -/// A constant id decoration -class ConstantIdDecoration : public Castable { +/// An override decoration +class OverrideDecoration : public Castable { public: /// constructor /// @param program_id the identifier of the program that owns this node /// @param source the source of this decoration - /// @param val the constant_id value - ConstantIdDecoration(ProgramID program_id, - const Source& source, - uint32_t val); - ~ConstantIdDecoration() override; + /// @param val the override value + OverrideDecoration(ProgramID program_id, const Source& source, uint32_t val); + ~OverrideDecoration() override; - /// @returns the constant id value + /// @returns the override id value uint32_t value() const { return value_; } /// Outputs the decoration to the given stream @@ -47,7 +45,7 @@ class ConstantIdDecoration : public Castable { /// `ctx`. /// @param ctx the clone context /// @return the newly cloned node - ConstantIdDecoration* Clone(CloneContext* ctx) const override; + OverrideDecoration* Clone(CloneContext* ctx) const override; private: uint32_t const value_; @@ -56,4 +54,4 @@ class ConstantIdDecoration : public Castable { } // namespace ast } // namespace tint -#endif // SRC_AST_CONSTANT_ID_DECORATION_H_ +#endif // SRC_AST_OVERRIDE_DECORATION_H_ diff --git a/src/ast/constant_id_decoration_test.cc b/src/ast/override_decoration_test.cc similarity index 67% rename from src/ast/constant_id_decoration_test.cc rename to src/ast/override_decoration_test.cc index 1dd9bf05ec..b5529cfd41 100644 --- a/src/ast/constant_id_decoration_test.cc +++ b/src/ast/override_decoration_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/test_helper.h" @@ -20,25 +20,25 @@ namespace tint { namespace ast { namespace { -using ConstantIdDecorationTest = TestHelper; +using OverrideDecorationTest = TestHelper; -TEST_F(ConstantIdDecorationTest, Creation) { - auto* d = create(12); +TEST_F(OverrideDecorationTest, Creation) { + auto* d = create(12); EXPECT_EQ(12u, d->value()); } -TEST_F(ConstantIdDecorationTest, Is) { - Decoration* d = create(27); +TEST_F(OverrideDecorationTest, Is) { + Decoration* d = create(27); EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); - EXPECT_TRUE(d->Is()); + EXPECT_TRUE(d->Is()); EXPECT_FALSE(d->Is()); EXPECT_FALSE(d->Is()); } -TEST_F(ConstantIdDecorationTest, ToStr) { - auto* d = create(1200); - EXPECT_EQ(str(d), R"(ConstantIdDecoration{1200} +TEST_F(OverrideDecorationTest, ToStr) { + auto* d = create(1200); + EXPECT_EQ(str(d), R"(OverrideDecoration{1200} )"); } diff --git a/src/ast/variable.cc b/src/ast/variable.cc index 69a296423d..9d62164227 100644 --- a/src/ast/variable.cc +++ b/src/ast/variable.cc @@ -14,7 +14,7 @@ #include "src/ast/variable.h" -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/program_builder.h" #include "src/sem/variable.h" @@ -63,7 +63,7 @@ Variable::BindingPoint Variable::binding_point() const { } uint32_t Variable::constant_id() const { - if (auto* cid = GetDecoration(decorations_)) { + if (auto* cid = GetDecoration(decorations_)) { return cid->value(); } TINT_ASSERT(false); diff --git a/src/ast/variable.h b/src/ast/variable.h index 281c8b426f..66c3cd7c0b 100644 --- a/src/ast/variable.h +++ b/src/ast/variable.h @@ -146,8 +146,8 @@ class Variable : public Castable { /// @returns the binding point information for the variable BindingPoint binding_point() const; - /// @returns the constant_id value for the variable. Assumes that this - /// variable has a constant ID decoration. + /// @returns the pipeline constant id value for the variable. Assumes that + /// this variable has an override decoration. uint32_t constant_id() const; /// Clones this node and all transitive child nodes using the `CloneContext` diff --git a/src/ast/variable_test.cc b/src/ast/variable_test.cc index c7bfd5f857..a837701f20 100644 --- a/src/ast/variable_test.cc +++ b/src/ast/variable_test.cc @@ -13,7 +13,7 @@ // limitations under the License. #include "gtest/gtest-spi.h" -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/test_helper.h" namespace tint { @@ -115,13 +115,13 @@ TEST_F(VariableTest, WithDecorations) { DecorationList{ create(1), create(Builtin::kPosition), - create(1200), + create(1200), }); auto& decorations = var->decorations(); EXPECT_TRUE(ast::HasDecoration(decorations)); EXPECT_TRUE(ast::HasDecoration(decorations)); - EXPECT_TRUE(ast::HasDecoration(decorations)); + EXPECT_TRUE(ast::HasDecoration(decorations)); auto* location = ast::GetDecoration(decorations); ASSERT_NE(nullptr, location); @@ -172,7 +172,7 @@ TEST_F(VariableTest, BindingPointMissingBindingDecoration) { TEST_F(VariableTest, ConstantId) { auto* var = Var("my_var", ty.i32(), StorageClass::kFunction, nullptr, DecorationList{ - create(1200), + create(1200), }); EXPECT_EQ(var->constant_id(), 1200u); diff --git a/src/inspector/inspector.cc b/src/inspector/inspector.cc index d1b38e92e4..578c07f200 100644 --- a/src/inspector/inspector.cc +++ b/src/inspector/inspector.cc @@ -17,9 +17,9 @@ #include #include "src/ast/bool_literal.h" -#include "src/ast/constant_id_decoration.h" #include "src/ast/float_literal.h" #include "src/ast/module.h" +#include "src/ast/override_decoration.h" #include "src/ast/scalar_constructor_expression.h" #include "src/ast/sint_literal.h" #include "src/ast/uint_literal.h" @@ -273,7 +273,7 @@ std::string Inspector::GetRemappedNameForEntryPoint( std::map Inspector::GetConstantIDs() { std::map result; for (auto* var : program_->AST().GlobalVariables()) { - if (!ast::HasDecoration(var->decorations())) { + if (!ast::HasDecoration(var->decorations())) { continue; } diff --git a/src/inspector/inspector_test.cc b/src/inspector/inspector_test.cc index 15324a6902..ff4eb84347 100644 --- a/src/inspector/inspector_test.cc +++ b/src/inspector/inspector_test.cc @@ -14,7 +14,7 @@ #include "gtest/gtest.h" #include "src/ast/call_statement.h" -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/stage_decoration.h" #include "src/ast/struct_block_decoration.h" #include "src/ast/workgroup_decoration.h" @@ -151,7 +151,7 @@ class InspectorHelper : public ProgramBuilder { } GlobalConst(name, type, constructor, ast::DecorationList{ - create(id), + create(id), }); } diff --git a/src/reader/spirv/namer.cc b/src/reader/spirv/namer.cc index 67450d1c90..b459712717 100644 --- a/src/reader/spirv/namer.cc +++ b/src/reader/spirv/namer.cc @@ -28,32 +28,32 @@ namespace { const char* kWGSLReservedWords[] = { // Please keep this list sorted - "array", "as", "asm", - "bf16", "binding", "block", - "bool", "break", "builtin", - "case", "cast", "compute", - "const", "constant_id", "continue", - "default", "discard", "do", - "else", "elseif", "entry_point", - "enum", "f16", "f32", - "fallthrough", "false", "fn", - "for", "fragment", "i16", - "i32", "i64", "i8", - "if", "image", "import", - "in", "let", "location", - "loop", "mat2x2", "mat2x3", - "mat2x4", "mat3x2", "mat3x3", - "mat3x4", "mat4x2", "mat4x3", - "mat4x4", "offset", "out", - "premerge", "private", "ptr", - "regardless", "return", "set", - "storage", "struct", "switch", - "true", "type", "typedef", - "u16", "u32", "u64", - "u8", "uniform", "uniform_constant", - "unless", "using", "var", - "vec2", "vec3", "vec4", - "vertex", "void", "while", + "array", "as", "asm", + "bf16", "binding", "block", + "bool", "break", "builtin", + "case", "cast", "compute", + "const", "continue", "default", + "discard", "do", "else", + "elseif", "entry_point", "enum", + "f16", "f32", "fallthrough", + "false", "fn", "for", + "fragment", "i16", "i32", + "i64", "i8", "if", + "image", "import", "in", + "let", "location", "loop", + "mat2x2", "mat2x3", "mat2x4", + "mat3x2", "mat3x3", "mat3x4", + "mat4x2", "mat4x3", "mat4x4", + "offset", "out", "override", + "premerge", "private", "ptr", + "regardless", "return", "set", + "storage", "struct", "switch", + "true", "type", "typedef", + "u16", "u32", "u64", + "u8", "uniform", "uniform_constant", + "unless", "using", "var", + "vec2", "vec3", "vec4", + "vertex", "void", "while", "workgroup", }; diff --git a/src/reader/spirv/namer_test.cc b/src/reader/spirv/namer_test.cc index 2ef9943c9c..28f0b8cb7b 100644 --- a/src/reader/spirv/namer_test.cc +++ b/src/reader/spirv/namer_test.cc @@ -372,32 +372,32 @@ INSTANTIATE_TEST_SUITE_P(SpvParserTest_ReservedWords, SpvNamerReservedWordTest, ::testing::ValuesIn(std::vector{ // Please keep this list sorted. - "array", "as", "asm", - "bf16", "binding", "block", - "bool", "break", "builtin", - "case", "cast", "compute", - "const", "constant_id", "continue", - "default", "discard", "do", - "else", "elseif", "entry_point", - "enum", "f16", "f32", - "fallthrough", "false", "fn", - "for", "fragment", "i16", - "i32", "i64", "i8", - "if", "image", "import", - "in", "let", "location", - "loop", "mat2x2", "mat2x3", - "mat2x4", "mat3x2", "mat3x3", - "mat3x4", "mat4x2", "mat4x3", - "mat4x4", "offset", "out", - "premerge", "private", "ptr", - "regardless", "return", "set", - "storage", "struct", "switch", - "true", "type", "typedef", - "u16", "u32", "u64", - "u8", "uniform", "uniform_constant", - "unless", "using", "var", - "vec2", "vec3", "vec4", - "vertex", "void", "while", + "array", "as", "asm", + "bf16", "binding", "block", + "bool", "break", "builtin", + "case", "cast", "compute", + "const", "continue", "default", + "discard", "do", "else", + "elseif", "entry_point", "enum", + "f16", "f32", "fallthrough", + "false", "fn", "for", + "fragment", "i16", "i32", + "i64", "i8", "if", + "image", "import", "in", + "let", "location", "loop", + "mat2x2", "mat2x3", "mat2x4", + "mat3x2", "mat3x3", "mat3x4", + "mat4x2", "mat4x3", "mat4x4", + "offset", "out", "override", + "premerge", "private", "ptr", + "regardless", "return", "set", + "storage", "struct", "switch", + "true", "type", "typedef", + "u16", "u32", "u64", + "u8", "uniform", "uniform_constant", + "unless", "using", "var", + "vec2", "vec3", "vec4", + "vertex", "void", "while", "workgroup", })); diff --git a/src/reader/spirv/parser_impl.cc b/src/reader/spirv/parser_impl.cc index dd0e0fabc1..fe246baf24 100644 --- a/src/reader/spirv/parser_impl.cc +++ b/src/reader/spirv/parser_impl.cc @@ -21,7 +21,7 @@ #include "source/opt/build_module.h" #include "src/ast/bitcast_expression.h" -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/struct_block_decoration.h" #include "src/reader/spirv/function.h" #include "src/sem/access_control_type.h" @@ -1157,7 +1157,7 @@ bool ParserImpl::EmitScalarSpecConstants() { ast::DecorationList spec_id_decos; for (const auto& deco : GetDecorationsFor(inst.result_id())) { if ((deco.size() == 2) && (deco[0] == SpvDecorationSpecId)) { - auto* cid = create(Source{}, deco[1]); + auto* cid = create(Source{}, deco[1]); spec_id_decos.push_back(cid); break; } diff --git a/src/reader/spirv/parser_impl_module_var_test.cc b/src/reader/spirv/parser_impl_module_var_test.cc index 9279b2b22f..67ca1f6760 100644 --- a/src/reader/spirv/parser_impl_module_var_test.cc +++ b/src/reader/spirv/parser_impl_module_var_test.cc @@ -1851,7 +1851,7 @@ TEST_F(SpvModuleScopeVarParserTest, ScalarSpecConstant_DeclareConst_True) { EXPECT_THAT(module_str, HasSubstr(R"( VariableConst{ Decorations{ - ConstantIdDecoration{12} + OverrideDecoration{12} } myconst none @@ -1876,7 +1876,7 @@ TEST_F(SpvModuleScopeVarParserTest, ScalarSpecConstant_DeclareConst_False) { EXPECT_THAT(module_str, HasSubstr(R"( VariableConst{ Decorations{ - ConstantIdDecoration{12} + OverrideDecoration{12} } myconst none @@ -1901,7 +1901,7 @@ TEST_F(SpvModuleScopeVarParserTest, ScalarSpecConstant_DeclareConst_U32) { EXPECT_THAT(module_str, HasSubstr(R"( VariableConst{ Decorations{ - ConstantIdDecoration{12} + OverrideDecoration{12} } myconst none @@ -1926,7 +1926,7 @@ TEST_F(SpvModuleScopeVarParserTest, ScalarSpecConstant_DeclareConst_I32) { EXPECT_THAT(module_str, HasSubstr(R"( VariableConst{ Decorations{ - ConstantIdDecoration{12} + OverrideDecoration{12} } myconst none @@ -1951,7 +1951,7 @@ TEST_F(SpvModuleScopeVarParserTest, ScalarSpecConstant_DeclareConst_F32) { EXPECT_THAT(module_str, HasSubstr(R"( VariableConst{ Decorations{ - ConstantIdDecoration{12} + OverrideDecoration{12} } myconst none diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc index 99d75486a3..a49f4750de 100644 --- a/src/reader/wgsl/parser_impl.cc +++ b/src/reader/wgsl/parser_impl.cc @@ -20,13 +20,13 @@ #include "src/ast/bitcast_expression.h" #include "src/ast/break_statement.h" #include "src/ast/call_statement.h" -#include "src/ast/constant_id_decoration.h" #include "src/ast/continue_statement.h" #include "src/ast/discard_statement.h" #include "src/ast/external_texture.h" #include "src/ast/fallthrough_statement.h" #include "src/ast/if_statement.h" #include "src/ast/loop_statement.h" +#include "src/ast/override_decoration.h" #include "src/ast/return_statement.h" #include "src/ast/stage_decoration.h" #include "src/ast/struct_block_decoration.h" @@ -121,9 +121,9 @@ const char kAccessDecoration[] = "access"; const char kBindingDecoration[] = "binding"; const char kBlockDecoration[] = "block"; const char kBuiltinDecoration[] = "builtin"; -const char kConstantIdDecoration[] = "constant_id"; const char kGroupDecoration[] = "group"; const char kLocationDecoration[] = "location"; +const char kOverrideDecoration[] = "override"; const char kOffsetDecoration[] = "offset"; // DEPRECATED const char kSizeDecoration[] = "size"; const char kAlignDecoration[] = "align"; @@ -139,8 +139,8 @@ bool is_decoration(Token t) { auto s = t.to_str(); return s == kAccessDecoration || s == kAlignDecoration || s == kBindingDecoration || s == kBlockDecoration || - s == kBuiltinDecoration || s == kConstantIdDecoration || - s == kGroupDecoration || s == kLocationDecoration || + s == kBuiltinDecoration || s == kGroupDecoration || + s == kLocationDecoration || s == kOverrideDecoration || s == kOffsetDecoration || s == kSetDecoration || s == kSizeDecoration || s == kStageDecoration || s == kStrideDecoration || s == kWorkgroupSizeDecoration; @@ -3102,14 +3102,14 @@ Maybe ParserImpl::decoration() { }); } - if (s == kConstantIdDecoration) { - const char* use = "constant_id decoration"; + if (s == kOverrideDecoration) { + const char* use = "override decoration"; return expect_paren_block(use, [&]() -> Result { auto val = expect_positive_sint(use); if (val.errored) return Failure::kErrored; - return create(t.source(), val.value); + return create(t.source(), val.value); }); } 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 0cdfb905c0..f0317b6a7a 100644 --- a/src/reader/wgsl/parser_impl_global_constant_decl_test.cc +++ b/src/reader/wgsl/parser_impl_global_constant_decl_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/reader/wgsl/parser_impl_test_helper.h" namespace tint { @@ -45,7 +45,7 @@ TEST_F(ParserImplTest, GlobalConstantDecl) { EXPECT_TRUE(e->constructor()->Is()); EXPECT_FALSE( - ast::HasDecoration(e.value->decorations())); + ast::HasDecoration(e.value->decorations())); } TEST_F(ParserImplTest, GlobalConstantDecl_MissingEqual) { @@ -100,8 +100,8 @@ TEST_F(ParserImplTest, GlobalConstantDecl_MissingExpression) { EXPECT_EQ(p->error(), "1:14: unable to parse constant literal"); } -TEST_F(ParserImplTest, GlobalConstantDec_ConstantId) { - auto p = parser("[[constant_id(7)]] let a : f32 = 1."); +TEST_F(ParserImplTest, GlobalConstantDec_Override_WithId) { + auto p = parser("[[override(7)]] let a : f32 = 1."); auto decos = p->decoration_list(); EXPECT_FALSE(decos.errored); EXPECT_TRUE(decos.matched); @@ -118,20 +118,20 @@ TEST_F(ParserImplTest, GlobalConstantDec_ConstantId) { EXPECT_TRUE(e->declared_type()->Is()); EXPECT_EQ(e->source().range.begin.line, 1u); - EXPECT_EQ(e->source().range.begin.column, 24u); + EXPECT_EQ(e->source().range.begin.column, 21u); EXPECT_EQ(e->source().range.end.line, 1u); - EXPECT_EQ(e->source().range.end.column, 25u); + EXPECT_EQ(e->source().range.end.column, 22u); ASSERT_NE(e->constructor(), nullptr); EXPECT_TRUE(e->constructor()->Is()); EXPECT_TRUE( - ast::HasDecoration(e.value->decorations())); + ast::HasDecoration(e.value->decorations())); EXPECT_EQ(e.value->constant_id(), 7u); } -TEST_F(ParserImplTest, GlobalConstantDec_ConstantId_Missing) { - auto p = parser("[[constant_id()]] let a : f32 = 1."); +TEST_F(ParserImplTest, GlobalConstantDec_Override_MissingId) { + auto p = parser("[[override()]] let a : f32 = 1."); auto decos = p->decoration_list(); EXPECT_TRUE(decos.errored); EXPECT_FALSE(decos.matched); @@ -143,11 +143,11 @@ TEST_F(ParserImplTest, GlobalConstantDec_ConstantId_Missing) { EXPECT_TRUE(p->has_error()); EXPECT_EQ(p->error(), - "1:15: expected signed integer literal for constant_id decoration"); + "1:12: expected signed integer literal for override decoration"); } -TEST_F(ParserImplTest, GlobalConstantDec_ConstantId_Invalid) { - auto p = parser("[[constant_id(-7)]] let a : f32 = 1."); +TEST_F(ParserImplTest, GlobalConstantDec_Override_InvalidId) { + auto p = parser("[[override(-7)]] let a : f32 = 1."); auto decos = p->decoration_list(); EXPECT_TRUE(decos.errored); EXPECT_FALSE(decos.matched); @@ -158,10 +158,10 @@ TEST_F(ParserImplTest, GlobalConstantDec_ConstantId_Invalid) { ASSERT_NE(e.value, nullptr); EXPECT_TRUE(p->has_error()); - EXPECT_EQ(p->error(), "1:15: constant_id decoration must be positive"); + EXPECT_EQ(p->error(), "1:12: override decoration must be positive"); } -TEST_F(ParserImplTest, GlobalConstantDec_ConstantId_Const) { +TEST_F(ParserImplTest, GlobalConstantDec_Const) { auto p = parser("const a : i32 = 1"); auto decos = p->decoration_list(); EXPECT_FALSE(decos.errored); diff --git a/src/resolver/decoration_validation_test.cc b/src/resolver/decoration_validation_test.cc index a6862a0dbe..a482070753 100644 --- a/src/resolver/decoration_validation_test.cc +++ b/src/resolver/decoration_validation_test.cc @@ -13,7 +13,7 @@ // limitations under the License. #include "src/ast/access_decoration.h" -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/return_statement.h" #include "src/ast/stage_decoration.h" #include "src/ast/struct_block_decoration.h" @@ -64,7 +64,7 @@ static ast::Decoration* createDecoration(const Source& source, case DecorationKind::kBuiltin: return builder.Builtin(source, ast::Builtin::kPosition); case DecorationKind::kConstantId: - return builder.create(source, 0u); + return builder.create(source, 0u); case DecorationKind::kGroup: return builder.create(source, 1u); case DecorationKind::kLocation: diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc index 3e2101457d..471552b9d3 100644 --- a/src/resolver/resolver.cc +++ b/src/resolver/resolver.cc @@ -24,7 +24,6 @@ #include "src/ast/bitcast_expression.h" #include "src/ast/break_statement.h" #include "src/ast/call_statement.h" -#include "src/ast/constant_id_decoration.h" #include "src/ast/continue_statement.h" #include "src/ast/depth_texture.h" #include "src/ast/discard_statement.h" @@ -33,6 +32,7 @@ #include "src/ast/internal_decoration.h" #include "src/ast/loop_statement.h" #include "src/ast/matrix.h" +#include "src/ast/override_decoration.h" #include "src/ast/pointer.h" #include "src/ast/return_statement.h" #include "src/ast/sampled_texture.h" @@ -401,7 +401,7 @@ bool Resolver::GlobalVariable(ast::Variable* var) { Mark(deco); if (!(deco->Is() || deco->Is() || - deco->Is() || + deco->Is() || deco->Is() || deco->Is())) { diagnostics_.add_error("decoration is not valid for variables", diff --git a/src/transform/bound_array_accessors_test.cc b/src/transform/bound_array_accessors_test.cc index bda6258987..c8cb2b49b9 100644 --- a/src/transform/bound_array_accessors_test.cc +++ b/src/transform/bound_array_accessors_test.cc @@ -499,7 +499,7 @@ fn f() { // TODO(dsinclair): Implement when constant_id exists TEST_F(BoundArrayAccessorsTest, DISABLED_Vector_Constant_Id_Clamps) { - // [[constant_id(1300)]] let idx : i32; + // [[override(1300)]] let idx : i32; // var a : vec3 // var b : f32 = a[idx] // @@ -508,7 +508,7 @@ TEST_F(BoundArrayAccessorsTest, DISABLED_Vector_Constant_Id_Clamps) { // TODO(dsinclair): Implement when constant_id exists TEST_F(BoundArrayAccessorsTest, DISABLED_Array_Constant_Id_Clamps) { - // [[constant_id(1300)]] let idx : i32; + // [[override(1300)]] let idx : i32; // var a : array // var b : f32 = a[idx] // @@ -517,7 +517,7 @@ TEST_F(BoundArrayAccessorsTest, DISABLED_Array_Constant_Id_Clamps) { // TODO(dsinclair): Implement when constant_id exists TEST_F(BoundArrayAccessorsTest, DISABLED_Matrix_Column_Constant_Id_Clamps) { - // [[constant_id(1300)]] let idx : i32; + // [[override(1300)]] let idx : i32; // var a : mat3x2 // var b : f32 = a[idx][1] // @@ -526,7 +526,7 @@ TEST_F(BoundArrayAccessorsTest, DISABLED_Matrix_Column_Constant_Id_Clamps) { // TODO(dsinclair): Implement when constant_id exists TEST_F(BoundArrayAccessorsTest, DISABLED_Matrix_Row_Constant_Id_Clamps) { - // [[constant_id(1300)]] let idx : i32; + // [[override(1300)]] let idx : i32; // var a : mat3x2 // var b : f32 = a[1][idx] // diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc index 98e85929b2..ffdef07eca 100644 --- a/src/writer/hlsl/generator_impl.cc +++ b/src/writer/hlsl/generator_impl.cc @@ -18,9 +18,9 @@ #include #include "src/ast/call_statement.h" -#include "src/ast/constant_id_decoration.h" #include "src/ast/fallthrough_statement.h" #include "src/ast/internal_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/variable_decl_statement.h" #include "src/sem/access_control_type.h" #include "src/sem/array.h" @@ -2681,7 +2681,7 @@ bool GeneratorImpl::EmitProgramConstVariable(std::ostream& out, make_indent(out); for (auto* d : var->decorations()) { - if (!d->Is()) { + if (!d->Is()) { diagnostics_.add_error("Decorated const values not valid"); return false; } @@ -2703,7 +2703,7 @@ bool GeneratorImpl::EmitProgramConstVariable(std::ostream& out, auto* sem = builder_.Sem().Get(var); auto* type = sem->Type(); - if (ast::HasDecoration(var->decorations())) { + if (ast::HasDecoration(var->decorations())) { auto const_id = var->constant_id(); out << "#ifndef WGSL_SPEC_CONSTANT_" << const_id << std::endl; diff --git a/src/writer/hlsl/generator_impl_module_constant_test.cc b/src/writer/hlsl/generator_impl_module_constant_test.cc index 405b916bc2..1f9a206737 100644 --- a/src/writer/hlsl/generator_impl_module_constant_test.cc +++ b/src/writer/hlsl/generator_impl_module_constant_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/writer/hlsl/test_helper.h" namespace tint { @@ -35,7 +35,7 @@ TEST_F(HlslGeneratorImplTest_ModuleConstant, Emit_ModuleConstant) { TEST_F(HlslGeneratorImplTest_ModuleConstant, Emit_SpecConstant) { auto* var = Const("pos", ty.f32(), Expr(3.0f), ast::DecorationList{ - create(23), + create(23), }); WrapInFunction(Decl(var)); @@ -53,7 +53,7 @@ static const float pos = WGSL_SPEC_CONSTANT_23; TEST_F(HlslGeneratorImplTest_ModuleConstant, Emit_SpecConstant_NoConstructor) { auto* var = Const("pos", ty.f32(), nullptr, ast::DecorationList{ - create(23), + create(23), }); WrapInFunction(Decl(var)); diff --git a/src/writer/hlsl/generator_impl_workgroup_var_test.cc b/src/writer/hlsl/generator_impl_workgroup_var_test.cc index 9fdd5b4865..ca73fdd49f 100644 --- a/src/writer/hlsl/generator_impl_workgroup_var_test.cc +++ b/src/writer/hlsl/generator_impl_workgroup_var_test.cc @@ -13,7 +13,7 @@ // limitations under the License. #include "gmock/gmock.h" -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/stage_decoration.h" #include "src/writer/hlsl/test_helper.h" diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc index fc31953b78..e0378a0947 100644 --- a/src/writer/msl/generator_impl.cc +++ b/src/writer/msl/generator_impl.cc @@ -21,10 +21,10 @@ #include "src/ast/bool_literal.h" #include "src/ast/call_statement.h" -#include "src/ast/constant_id_decoration.h" #include "src/ast/fallthrough_statement.h" #include "src/ast/float_literal.h" #include "src/ast/module.h" +#include "src/ast/override_decoration.h" #include "src/ast/sint_literal.h" #include "src/ast/uint_literal.h" #include "src/ast/variable_decl_statement.h" @@ -2250,7 +2250,7 @@ bool GeneratorImpl::EmitProgramConstVariable(const ast::Variable* var) { make_indent(); for (auto* d : var->decorations()) { - if (!d->Is()) { + if (!d->Is()) { diagnostics_.add_error("Decorated const values not valid"); return false; } @@ -2269,7 +2269,7 @@ bool GeneratorImpl::EmitProgramConstVariable(const ast::Variable* var) { out_ << " " << program_->Symbols().NameFor(var->symbol()); } - if (ast::HasDecoration(var->decorations())) { + if (ast::HasDecoration(var->decorations())) { out_ << " [[function_constant(" << var->constant_id() << ")]]"; } else if (var->constructor() != nullptr) { out_ << " = "; diff --git a/src/writer/msl/generator_impl_module_constant_test.cc b/src/writer/msl/generator_impl_module_constant_test.cc index c7932146fc..a939ee28eb 100644 --- a/src/writer/msl/generator_impl_module_constant_test.cc +++ b/src/writer/msl/generator_impl_module_constant_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/writer/msl/test_helper.h" namespace tint { @@ -35,7 +35,7 @@ TEST_F(MslGeneratorImplTest, Emit_ModuleConstant) { TEST_F(MslGeneratorImplTest, Emit_SpecConstant) { auto* var = Const("pos", ty.f32(), Expr(3.f), ast::DecorationList{ - create(23), + create(23), }); WrapInFunction(Decl(var)); diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc index b99323ed92..98f10e3d99 100644 --- a/src/writer/spirv/builder.cc +++ b/src/writer/spirv/builder.cc @@ -19,8 +19,8 @@ #include "spirv/unified1/GLSL.std.450.h" #include "src/ast/call_statement.h" -#include "src/ast/constant_id_decoration.h" #include "src/ast/fallthrough_statement.h" +#include "src/ast/override_decoration.h" #include "src/sem/array.h" #include "src/sem/call.h" #include "src/sem/depth_texture_type.h" @@ -745,12 +745,12 @@ bool Builder::GenerateGlobalVariable(ast::Variable* var) { } else if (!type_no_ac->Is()) { // Certain cases require us to generate a constructor value. // - // 1- ConstantId's must be attached to the OpConstant, if we have a - // variable with a constant_id that doesn't have a constructor we make - // one + // 1- Pipeline constant IDs must be attached to the OpConstant, if we have a + // variable with an override attribute that doesn't have a constructor we + // make one // 2- If we don't have a constructor and we're an Output or Private variable // then WGSL requires an initializer. - if (ast::HasDecoration(var->decorations())) { + if (ast::HasDecoration(var->decorations())) { if (type_no_ac->Is()) { ast::FloatLiteral l(ProgramID(), Source{}, 0.0f); init_id = GenerateLiteralIfNeeded(var, &l); @@ -764,7 +764,7 @@ bool Builder::GenerateGlobalVariable(ast::Variable* var) { ast::BoolLiteral l(ProgramID(), Source{}, false); init_id = GenerateLiteralIfNeeded(var, &l); } else { - error_ = "invalid type for constant_id, must be scalar"; + error_ = "invalid type for pipeline constant ID, must be scalar"; return false; } if (init_id == 0) { @@ -802,7 +802,7 @@ bool Builder::GenerateGlobalVariable(ast::Variable* var) { push_annot(spv::Op::OpDecorate, {Operand::Int(var_id), Operand::Int(SpvDecorationDescriptorSet), Operand::Int(group->value())}); - } else if (deco->Is()) { + } else if (deco->Is()) { // Spec constants are handled elsewhere } else { error_ = "unknown decoration"; @@ -1492,8 +1492,7 @@ uint32_t Builder::GenerateLiteralIfNeeded(ast::Variable* var, ast::Literal* lit) { ScalarConstant constant; - if (var && - ast::HasDecoration(var->decorations())) { + if (var && ast::HasDecoration(var->decorations())) { constant.is_spec_op = true; constant.constant_id = var->constant_id(); } diff --git a/src/writer/spirv/builder_global_variable_test.cc b/src/writer/spirv/builder_global_variable_test.cc index 53b0b5a7b0..3551e36d43 100644 --- a/src/writer/spirv/builder_global_variable_test.cc +++ b/src/writer/spirv/builder_global_variable_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/ast/stage_decoration.h" #include "src/ast/struct_block_decoration.h" #include "src/writer/spirv/spv_dump.h" @@ -206,7 +206,7 @@ TEST_F(BuilderTest, GlobalVar_WithBuiltin) { TEST_F(BuilderTest, GlobalVar_ConstantId_Bool) { auto* v = Global("var", ty.bool_(), ast::StorageClass::kInput, Expr(true), ast::DecorationList{ - create(1200), + create(1200), }); spirv::Builder& b = Build(); @@ -226,7 +226,7 @@ TEST_F(BuilderTest, GlobalVar_ConstantId_Bool) { TEST_F(BuilderTest, GlobalVar_ConstantId_Bool_NoConstructor) { auto* v = Global("var", ty.bool_(), ast::StorageClass::kInput, nullptr, ast::DecorationList{ - create(1200), + create(1200), }); spirv::Builder& b = Build(); @@ -246,7 +246,7 @@ TEST_F(BuilderTest, GlobalVar_ConstantId_Bool_NoConstructor) { TEST_F(BuilderTest, GlobalVar_ConstantId_Scalar) { auto* v = Global("var", ty.f32(), ast::StorageClass::kInput, Expr(2.f), ast::DecorationList{ - create(0), + create(0), }); spirv::Builder& b = Build(); @@ -266,7 +266,7 @@ TEST_F(BuilderTest, GlobalVar_ConstantId_Scalar) { TEST_F(BuilderTest, GlobalVar_ConstantId_Scalar_F32_NoConstructor) { auto* v = Global("var", ty.f32(), ast::StorageClass::kInput, nullptr, ast::DecorationList{ - create(0), + create(0), }); spirv::Builder& b = Build(); @@ -286,7 +286,7 @@ TEST_F(BuilderTest, GlobalVar_ConstantId_Scalar_F32_NoConstructor) { TEST_F(BuilderTest, GlobalVar_ConstantId_Scalar_I32_NoConstructor) { auto* v = Global("var", ty.i32(), ast::StorageClass::kInput, nullptr, ast::DecorationList{ - create(0), + create(0), }); spirv::Builder& b = Build(); @@ -306,7 +306,7 @@ TEST_F(BuilderTest, GlobalVar_ConstantId_Scalar_I32_NoConstructor) { TEST_F(BuilderTest, GlobalVar_ConstantId_Scalar_U32_NoConstructor) { auto* v = Global("var", ty.u32(), ast::StorageClass::kInput, nullptr, ast::DecorationList{ - create(0), + create(0), }); spirv::Builder& b = Build(); diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc index 45477d36df..b70484186f 100644 --- a/src/writer/wgsl/generator_impl.cc +++ b/src/writer/wgsl/generator_impl.cc @@ -22,7 +22,6 @@ #include "src/ast/bool.h" #include "src/ast/bool_literal.h" #include "src/ast/call_statement.h" -#include "src/ast/constant_id_decoration.h" #include "src/ast/depth_texture.h" #include "src/ast/f32.h" #include "src/ast/float_literal.h" @@ -31,6 +30,7 @@ #include "src/ast/matrix.h" #include "src/ast/module.h" #include "src/ast/multisampled_texture.h" +#include "src/ast/override_decoration.h" #include "src/ast/pointer.h" #include "src/ast/sampled_texture.h" #include "src/ast/sint_literal.h" @@ -811,8 +811,8 @@ bool GeneratorImpl::EmitDecorations(const ast::DecorationList& decos) { out_ << "location(" << location->value() << ")"; } else if (auto* builtin = deco->As()) { out_ << "builtin(" << builtin->value() << ")"; - } else if (auto* constant = deco->As()) { - out_ << "constant_id(" << constant->value() << ")"; + } else if (auto* override_deco = deco->As()) { + out_ << "override(" << override_deco->value() << ")"; } else if (auto* size = deco->As()) { out_ << "size(" << size->size() << ")"; } else if (auto* align = deco->As()) { diff --git a/src/writer/wgsl/generator_impl_variable_test.cc b/src/writer/wgsl/generator_impl_variable_test.cc index 65ded5408a..055e08530b 100644 --- a/src/writer/wgsl/generator_impl_variable_test.cc +++ b/src/writer/wgsl/generator_impl_variable_test.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/ast/constant_id_decoration.h" +#include "src/ast/override_decoration.h" #include "src/writer/wgsl/test_helper.h" namespace tint { @@ -62,7 +62,7 @@ TEST_F(WgslGeneratorImplTest, EmitVariable_Decorated_Multiple) { create(0), create(1), Location(2), - create(42), + create(42), }); GeneratorImpl& gen = Build(); @@ -70,7 +70,7 @@ TEST_F(WgslGeneratorImplTest, EmitVariable_Decorated_Multiple) { ASSERT_TRUE(gen.EmitVariable(v)) << gen.error(); EXPECT_EQ( gen.result(), - R"([[builtin(position), binding(0), group(1), location(2), constant_id(42)]] var a : f32; + R"([[builtin(position), binding(0), group(1), location(2), override(42)]] var a : f32; )"); } diff --git a/test/BUILD.gn b/test/BUILD.gn index cd3e013be8..e999f6c54d 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -187,7 +187,6 @@ tint_unittests_source_set("tint_unittests_core_src") { "../src/ast/call_expression_test.cc", "../src/ast/call_statement_test.cc", "../src/ast/case_statement_test.cc", - "../src/ast/constant_id_decoration_test.cc", "../src/ast/continue_statement_test.cc", "../src/ast/depth_texture_test.cc", "../src/ast/discard_statement_test.cc", @@ -209,6 +208,7 @@ tint_unittests_source_set("tint_unittests_core_src") { "../src/ast/module_clone_test.cc", "../src/ast/module_test.cc", "../src/ast/multisampled_texture_test.cc", + "../src/ast/override_decoration_test.cc", "../src/ast/pointer_test.cc", "../src/ast/return_statement_test.cc", "../src/ast/sampled_texture_test.cc",