mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-08 06:05:55 +00:00
Rename builtin constant_id to override
There are no downstream usages, so we can skip deprecation. Allowing the ID to be omitted will be done in a separate patch. Fixed: tint:754 Change-Id: I3bd6de4d0f426fc3c66708bfd5b411a4051b375b Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49581 Commit-Queue: James Price <jrprice@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
parent
083b591783
commit
e87ded8567
@ -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",
|
||||
|
@ -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
|
||||
|
@ -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<BindingDecoration>(2);
|
||||
EXPECT_TRUE(d->Is<BindingDecoration>());
|
||||
EXPECT_FALSE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_FALSE(d->Is<OverrideDecoration>());
|
||||
EXPECT_FALSE(d->Is<LocationDecoration>());
|
||||
EXPECT_FALSE(d->Is<GroupDecoration>());
|
||||
}
|
||||
|
@ -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<BuiltinDecoration>(Builtin::kFragDepth);
|
||||
EXPECT_FALSE(d->Is<BindingDecoration>());
|
||||
EXPECT_TRUE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_FALSE(d->Is<OverrideDecoration>());
|
||||
EXPECT_FALSE(d->Is<LocationDecoration>());
|
||||
EXPECT_FALSE(d->Is<GroupDecoration>());
|
||||
}
|
||||
|
@ -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<GroupDecoration>(2);
|
||||
EXPECT_FALSE(d->Is<BindingDecoration>());
|
||||
EXPECT_FALSE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_FALSE(d->Is<OverrideDecoration>());
|
||||
EXPECT_FALSE(d->Is<LocationDecoration>());
|
||||
EXPECT_TRUE(d->Is<GroupDecoration>());
|
||||
}
|
||||
|
@ -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<LocationDecoration>(2);
|
||||
EXPECT_FALSE(d->Is<BindingDecoration>());
|
||||
EXPECT_FALSE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_FALSE(d->Is<OverrideDecoration>());
|
||||
EXPECT_TRUE(d->Is<LocationDecoration>());
|
||||
EXPECT_FALSE(d->Is<GroupDecoration>());
|
||||
}
|
||||
|
@ -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,
|
||||
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&,
|
||||
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<ConstantIdDecoration>(src, value_);
|
||||
return ctx->dst->create<OverrideDecoration>(src, value_);
|
||||
}
|
||||
|
||||
} // namespace ast
|
@ -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<ConstantIdDecoration, Decoration> {
|
||||
/// An override decoration
|
||||
class OverrideDecoration : public Castable<OverrideDecoration, Decoration> {
|
||||
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<ConstantIdDecoration, Decoration> {
|
||||
/// `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<ConstantIdDecoration, Decoration> {
|
||||
} // namespace ast
|
||||
} // namespace tint
|
||||
|
||||
#endif // SRC_AST_CONSTANT_ID_DECORATION_H_
|
||||
#endif // SRC_AST_OVERRIDE_DECORATION_H_
|
@ -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<ConstantIdDecoration>(12);
|
||||
TEST_F(OverrideDecorationTest, Creation) {
|
||||
auto* d = create<OverrideDecoration>(12);
|
||||
EXPECT_EQ(12u, d->value());
|
||||
}
|
||||
|
||||
TEST_F(ConstantIdDecorationTest, Is) {
|
||||
Decoration* d = create<ConstantIdDecoration>(27);
|
||||
TEST_F(OverrideDecorationTest, Is) {
|
||||
Decoration* d = create<OverrideDecoration>(27);
|
||||
EXPECT_FALSE(d->Is<BindingDecoration>());
|
||||
EXPECT_FALSE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_TRUE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_TRUE(d->Is<OverrideDecoration>());
|
||||
EXPECT_FALSE(d->Is<LocationDecoration>());
|
||||
EXPECT_FALSE(d->Is<GroupDecoration>());
|
||||
}
|
||||
|
||||
TEST_F(ConstantIdDecorationTest, ToStr) {
|
||||
auto* d = create<ConstantIdDecoration>(1200);
|
||||
EXPECT_EQ(str(d), R"(ConstantIdDecoration{1200}
|
||||
TEST_F(OverrideDecorationTest, ToStr) {
|
||||
auto* d = create<OverrideDecoration>(1200);
|
||||
EXPECT_EQ(str(d), R"(OverrideDecoration{1200}
|
||||
)");
|
||||
}
|
||||
|
@ -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<ConstantIdDecoration>(decorations_)) {
|
||||
if (auto* cid = GetDecoration<OverrideDecoration>(decorations_)) {
|
||||
return cid->value();
|
||||
}
|
||||
TINT_ASSERT(false);
|
||||
|
@ -146,8 +146,8 @@ class Variable : public Castable<Variable, Node> {
|
||||
/// @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`
|
||||
|
@ -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<LocationDecoration>(1),
|
||||
create<BuiltinDecoration>(Builtin::kPosition),
|
||||
create<ConstantIdDecoration>(1200),
|
||||
create<OverrideDecoration>(1200),
|
||||
});
|
||||
|
||||
auto& decorations = var->decorations();
|
||||
EXPECT_TRUE(ast::HasDecoration<ast::LocationDecoration>(decorations));
|
||||
EXPECT_TRUE(ast::HasDecoration<ast::BuiltinDecoration>(decorations));
|
||||
EXPECT_TRUE(ast::HasDecoration<ast::ConstantIdDecoration>(decorations));
|
||||
EXPECT_TRUE(ast::HasDecoration<ast::OverrideDecoration>(decorations));
|
||||
|
||||
auto* location = ast::GetDecoration<ast::LocationDecoration>(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<ConstantIdDecoration>(1200),
|
||||
create<OverrideDecoration>(1200),
|
||||
});
|
||||
|
||||
EXPECT_EQ(var->constant_id(), 1200u);
|
||||
|
@ -17,9 +17,9 @@
|
||||
#include <utility>
|
||||
|
||||
#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<uint32_t, Scalar> Inspector::GetConstantIDs() {
|
||||
std::map<uint32_t, Scalar> result;
|
||||
for (auto* var : program_->AST().GlobalVariables()) {
|
||||
if (!ast::HasDecoration<ast::ConstantIdDecoration>(var->decorations())) {
|
||||
if (!ast::HasDecoration<ast::OverrideDecoration>(var->decorations())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -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<ast::ConstantIdDecoration>(id),
|
||||
create<ast::OverrideDecoration>(id),
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -32,19 +32,19 @@ const char* kWGSLReservedWords[] = {
|
||||
"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",
|
||||
"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",
|
||||
|
@ -376,19 +376,19 @@ INSTANTIATE_TEST_SUITE_P(SpvParserTest_ReservedWords,
|
||||
"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",
|
||||
"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",
|
||||
|
@ -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<ast::ConstantIdDecoration>(Source{}, deco[1]);
|
||||
auto* cid = create<ast::OverrideDecoration>(Source{}, deco[1]);
|
||||
spec_id_decos.push_back(cid);
|
||||
break;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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<ast::Decoration*> 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<ast::ConstantIdDecoration>(t.source(), val.value);
|
||||
return create<ast::OverrideDecoration>(t.source(), val.value);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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<ast::ConstructorExpression>());
|
||||
|
||||
EXPECT_FALSE(
|
||||
ast::HasDecoration<ast::ConstantIdDecoration>(e.value->decorations()));
|
||||
ast::HasDecoration<ast::OverrideDecoration>(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<sem::F32>());
|
||||
|
||||
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<ast::ConstructorExpression>());
|
||||
|
||||
EXPECT_TRUE(
|
||||
ast::HasDecoration<ast::ConstantIdDecoration>(e.value->decorations()));
|
||||
ast::HasDecoration<ast::OverrideDecoration>(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);
|
||||
|
@ -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<ast::ConstantIdDecoration>(source, 0u);
|
||||
return builder.create<ast::OverrideDecoration>(source, 0u);
|
||||
case DecorationKind::kGroup:
|
||||
return builder.create<ast::GroupDecoration>(source, 1u);
|
||||
case DecorationKind::kLocation:
|
||||
|
@ -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<ast::BindingDecoration>() ||
|
||||
deco->Is<ast::BuiltinDecoration>() ||
|
||||
deco->Is<ast::ConstantIdDecoration>() ||
|
||||
deco->Is<ast::OverrideDecoration>() ||
|
||||
deco->Is<ast::GroupDecoration>() ||
|
||||
deco->Is<ast::LocationDecoration>())) {
|
||||
diagnostics_.add_error("decoration is not valid for variables",
|
||||
|
@ -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<f32>
|
||||
// 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<f32, 4>
|
||||
// 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<f32>
|
||||
// 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<f32>
|
||||
// var b : f32 = a[1][idx]
|
||||
//
|
||||
|
@ -18,9 +18,9 @@
|
||||
#include <vector>
|
||||
|
||||
#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<ast::ConstantIdDecoration>()) {
|
||||
if (!d->Is<ast::OverrideDecoration>()) {
|
||||
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<ast::ConstantIdDecoration>(var->decorations())) {
|
||||
if (ast::HasDecoration<ast::OverrideDecoration>(var->decorations())) {
|
||||
auto const_id = var->constant_id();
|
||||
|
||||
out << "#ifndef WGSL_SPEC_CONSTANT_" << const_id << std::endl;
|
||||
|
@ -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<ast::ConstantIdDecoration>(23),
|
||||
create<ast::OverrideDecoration>(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<ast::ConstantIdDecoration>(23),
|
||||
create<ast::OverrideDecoration>(23),
|
||||
});
|
||||
WrapInFunction(Decl(var));
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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<ast::ConstantIdDecoration>()) {
|
||||
if (!d->Is<ast::OverrideDecoration>()) {
|
||||
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<ast::ConstantIdDecoration>(var->decorations())) {
|
||||
if (ast::HasDecoration<ast::OverrideDecoration>(var->decorations())) {
|
||||
out_ << " [[function_constant(" << var->constant_id() << ")]]";
|
||||
} else if (var->constructor() != nullptr) {
|
||||
out_ << " = ";
|
||||
|
@ -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<ast::ConstantIdDecoration>(23),
|
||||
create<ast::OverrideDecoration>(23),
|
||||
});
|
||||
WrapInFunction(Decl(var));
|
||||
|
||||
|
@ -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<sem::Sampler>()) {
|
||||
// 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<ast::ConstantIdDecoration>(var->decorations())) {
|
||||
if (ast::HasDecoration<ast::OverrideDecoration>(var->decorations())) {
|
||||
if (type_no_ac->Is<sem::F32>()) {
|
||||
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<ast::ConstantIdDecoration>()) {
|
||||
} else if (deco->Is<ast::OverrideDecoration>()) {
|
||||
// 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<ast::ConstantIdDecoration>(var->decorations())) {
|
||||
if (var && ast::HasDecoration<ast::OverrideDecoration>(var->decorations())) {
|
||||
constant.is_spec_op = true;
|
||||
constant.constant_id = var->constant_id();
|
||||
}
|
||||
|
@ -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<ast::ConstantIdDecoration>(1200),
|
||||
create<ast::OverrideDecoration>(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<ast::ConstantIdDecoration>(1200),
|
||||
create<ast::OverrideDecoration>(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<ast::ConstantIdDecoration>(0),
|
||||
create<ast::OverrideDecoration>(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<ast::ConstantIdDecoration>(0),
|
||||
create<ast::OverrideDecoration>(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<ast::ConstantIdDecoration>(0),
|
||||
create<ast::OverrideDecoration>(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<ast::ConstantIdDecoration>(0),
|
||||
create<ast::OverrideDecoration>(0),
|
||||
});
|
||||
|
||||
spirv::Builder& b = Build();
|
||||
|
@ -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<ast::BuiltinDecoration>()) {
|
||||
out_ << "builtin(" << builtin->value() << ")";
|
||||
} else if (auto* constant = deco->As<ast::ConstantIdDecoration>()) {
|
||||
out_ << "constant_id(" << constant->value() << ")";
|
||||
} else if (auto* override_deco = deco->As<ast::OverrideDecoration>()) {
|
||||
out_ << "override(" << override_deco->value() << ")";
|
||||
} else if (auto* size = deco->As<ast::StructMemberSizeDecoration>()) {
|
||||
out_ << "size(" << size->size() << ")";
|
||||
} else if (auto* align = deco->As<ast::StructMemberAlignDecoration>()) {
|
||||
|
@ -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<ast::BindingDecoration>(0),
|
||||
create<ast::GroupDecoration>(1),
|
||||
Location(2),
|
||||
create<ast::ConstantIdDecoration>(42),
|
||||
create<ast::OverrideDecoration>(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<private> a : f32;
|
||||
R"([[builtin(position), binding(0), group(1), location(2), override(42)]] var<private> a : f32;
|
||||
)");
|
||||
}
|
||||
|
||||
|
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user