mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-10 14:08:04 +00:00
Add Source parameter to decoration constructors
Once a `Decoration` has been parsed, it'll be placed into a `DecorationList` and validated later in the parse. In order to create error diagnostics that refer back to the decoration, we need to know its source. Bug: tint:282 Bug: tint:291 Change-Id: I38de708adbd041601b61d7e0a4d0402e9a2fe526 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/31722 Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
35298800a6
commit
34a2eb1999
@@ -143,8 +143,8 @@ void VertexPullingTransform::FindOrInsertVertexIndexIfUsed() {
|
||||
vertex_index_name_, ast::StorageClass::kInput, GetI32Type()));
|
||||
|
||||
ast::VariableDecorationList decorations;
|
||||
decorations.push_back(
|
||||
std::make_unique<ast::BuiltinDecoration>(ast::Builtin::kVertexIdx));
|
||||
decorations.push_back(std::make_unique<ast::BuiltinDecoration>(
|
||||
ast::Builtin::kVertexIdx, Source{}));
|
||||
|
||||
var->set_decorations(std::move(decorations));
|
||||
mod_->AddGlobalVariable(std::move(var));
|
||||
@@ -186,8 +186,8 @@ void VertexPullingTransform::FindOrInsertInstanceIndexIfUsed() {
|
||||
instance_index_name_, ast::StorageClass::kInput, GetI32Type()));
|
||||
|
||||
ast::VariableDecorationList decorations;
|
||||
decorations.push_back(
|
||||
std::make_unique<ast::BuiltinDecoration>(ast::Builtin::kInstanceIdx));
|
||||
decorations.push_back(std::make_unique<ast::BuiltinDecoration>(
|
||||
ast::Builtin::kInstanceIdx, Source{}));
|
||||
|
||||
var->set_decorations(std::move(decorations));
|
||||
mod_->AddGlobalVariable(std::move(var));
|
||||
@@ -221,7 +221,7 @@ void VertexPullingTransform::AddVertexStorageBuffers() {
|
||||
// The array inside the struct definition
|
||||
auto internal_array = std::make_unique<ast::type::ArrayType>(GetU32Type());
|
||||
ast::ArrayDecorationList ary_decos;
|
||||
ary_decos.push_back(std::make_unique<ast::StrideDecoration>(4u));
|
||||
ary_decos.push_back(std::make_unique<ast::StrideDecoration>(4u, Source{}));
|
||||
internal_array->set_decorations(std::move(ary_decos));
|
||||
|
||||
auto* internal_array_type = ctx_->type_mgr().Get(std::move(internal_array));
|
||||
@@ -229,13 +229,14 @@ void VertexPullingTransform::AddVertexStorageBuffers() {
|
||||
// Creating the struct type
|
||||
ast::StructMemberList members;
|
||||
ast::StructMemberDecorationList member_dec;
|
||||
member_dec.push_back(std::make_unique<ast::StructMemberOffsetDecoration>(0u));
|
||||
member_dec.push_back(
|
||||
std::make_unique<ast::StructMemberOffsetDecoration>(0u, Source{}));
|
||||
|
||||
members.push_back(std::make_unique<ast::StructMember>(
|
||||
kStructBufferName, internal_array_type, std::move(member_dec)));
|
||||
|
||||
ast::StructDecorationList decos;
|
||||
decos.push_back(std::make_unique<ast::StructBlockDecoration>());
|
||||
decos.push_back(std::make_unique<ast::StructBlockDecoration>(Source{}));
|
||||
|
||||
auto* struct_type =
|
||||
ctx_->type_mgr().Get(std::make_unique<ast::type::StructType>(
|
||||
@@ -251,8 +252,10 @@ void VertexPullingTransform::AddVertexStorageBuffers() {
|
||||
|
||||
// Add decorations
|
||||
ast::VariableDecorationList decorations;
|
||||
decorations.push_back(std::make_unique<ast::BindingDecoration>(i));
|
||||
decorations.push_back(std::make_unique<ast::SetDecoration>(pulling_set_));
|
||||
decorations.push_back(
|
||||
std::make_unique<ast::BindingDecoration>(i, Source{}));
|
||||
decorations.push_back(
|
||||
std::make_unique<ast::SetDecoration>(pulling_set_, Source{}));
|
||||
var->set_decorations(std::move(decorations));
|
||||
|
||||
mod_->AddGlobalVariable(std::move(var));
|
||||
|
||||
@@ -44,8 +44,8 @@ class VertexPullingTransformHelper {
|
||||
auto func = std::make_unique<ast::Function>(
|
||||
"main", ast::VariableList{},
|
||||
ctx_.type_mgr().Get(std::make_unique<ast::type::VoidType>()));
|
||||
func->add_decoration(
|
||||
std::make_unique<ast::StageDecoration>(ast::PipelineStage ::kVertex));
|
||||
func->add_decoration(std::make_unique<ast::StageDecoration>(
|
||||
ast::PipelineStage ::kVertex, Source{}));
|
||||
mod()->AddFunction(std::move(func));
|
||||
}
|
||||
|
||||
@@ -69,7 +69,8 @@ class VertexPullingTransformHelper {
|
||||
std::make_unique<ast::Variable>(name, ast::StorageClass::kInput, type));
|
||||
|
||||
ast::VariableDecorationList decorations;
|
||||
decorations.push_back(std::make_unique<ast::LocationDecoration>(location));
|
||||
decorations.push_back(
|
||||
std::make_unique<ast::LocationDecoration>(location, Source{}));
|
||||
|
||||
var->set_decorations(std::move(decorations));
|
||||
mod_->AddGlobalVariable(std::move(var));
|
||||
@@ -112,8 +113,8 @@ TEST_F(VertexPullingTransformTest, Error_EntryPointWrongStage) {
|
||||
auto func = std::make_unique<ast::Function>(
|
||||
"main", ast::VariableList{},
|
||||
ctx()->type_mgr().Get(std::make_unique<ast::type::VoidType>()));
|
||||
func->add_decoration(
|
||||
std::make_unique<ast::StageDecoration>(ast::PipelineStage::kFragment));
|
||||
func->add_decoration(std::make_unique<ast::StageDecoration>(
|
||||
ast::PipelineStage::kFragment, Source{}));
|
||||
mod()->AddFunction(std::move(func));
|
||||
|
||||
InitTransform({});
|
||||
@@ -396,8 +397,8 @@ TEST_F(VertexPullingTransformTest, ExistingVertexIndexAndInstanceIndex) {
|
||||
ast::StorageClass::kInput, &i32));
|
||||
|
||||
ast::VariableDecorationList decorations;
|
||||
decorations.push_back(
|
||||
std::make_unique<ast::BuiltinDecoration>(ast::Builtin::kVertexIdx));
|
||||
decorations.push_back(std::make_unique<ast::BuiltinDecoration>(
|
||||
ast::Builtin::kVertexIdx, Source{}));
|
||||
|
||||
vertex_index_var->set_decorations(std::move(decorations));
|
||||
mod()->AddGlobalVariable(std::move(vertex_index_var));
|
||||
@@ -409,8 +410,8 @@ TEST_F(VertexPullingTransformTest, ExistingVertexIndexAndInstanceIndex) {
|
||||
ast::StorageClass::kInput, &i32));
|
||||
|
||||
ast::VariableDecorationList decorations;
|
||||
decorations.push_back(
|
||||
std::make_unique<ast::BuiltinDecoration>(ast::Builtin::kInstanceIdx));
|
||||
decorations.push_back(std::make_unique<ast::BuiltinDecoration>(
|
||||
ast::Builtin::kInstanceIdx, Source{}));
|
||||
|
||||
instance_index_var->set_decorations(std::move(decorations));
|
||||
mod()->AddGlobalVariable(std::move(instance_index_var));
|
||||
|
||||
Reference in New Issue
Block a user