Support the group decoration.
This CL changes the set decoration to a group decoration. We still parse
`set` until downstream users can be updated.
Bug: tint:338
Change-Id: I610d1ed769b3a26c117ad6d875f8a99a3d5b7754
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/37920
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index d51ecb4..d93cb69 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -282,6 +282,8 @@
"src/ast/function.h",
"src/ast/function_decoration.cc",
"src/ast/function_decoration.h",
+ "src/ast/group_decoration.cc",
+ "src/ast/group_decoration.h",
"src/ast/identifier_expression.cc",
"src/ast/identifier_expression.h",
"src/ast/if_statement.cc",
@@ -310,8 +312,6 @@
"src/ast/return_statement.h",
"src/ast/scalar_constructor_expression.cc",
"src/ast/scalar_constructor_expression.h",
- "src/ast/set_decoration.cc",
- "src/ast/set_decoration.h",
"src/ast/sint_literal.cc",
"src/ast/sint_literal.h",
"src/ast/stage_decoration.cc",
@@ -780,6 +780,7 @@
"src/ast/fallthrough_statement_test.cc",
"src/ast/float_literal_test.cc",
"src/ast/function_test.cc",
+ "src/ast/group_decoration_test.cc",
"src/ast/identifier_expression_test.cc",
"src/ast/if_statement_test.cc",
"src/ast/int_literal_test.cc",
@@ -793,7 +794,6 @@
"src/ast/null_literal_test.cc",
"src/ast/return_statement_test.cc",
"src/ast/scalar_constructor_expression_test.cc",
- "src/ast/set_decoration_test.cc",
"src/ast/sint_literal_test.cc",
"src/ast/stage_decoration_test.cc",
"src/ast/stride_decoration_test.cc",
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index adc89af..d23d6bf 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -96,6 +96,8 @@
ast/function.h
ast/function_decoration.cc
ast/function_decoration.h
+ ast/group_decoration.cc
+ ast/group_decoration.h
ast/identifier_expression.cc
ast/identifier_expression.h
ast/if_statement.cc
@@ -124,8 +126,6 @@
ast/return_statement.h
ast/scalar_constructor_expression.cc
ast/scalar_constructor_expression.h
- ast/set_decoration.cc
- ast/set_decoration.h
ast/sint_literal.cc
ast/sint_literal.h
ast/stage_decoration.cc
@@ -409,6 +409,7 @@
ast/fallthrough_statement_test.cc
ast/float_literal_test.cc
ast/function_test.cc
+ ast/group_decoration_test.cc
ast/identifier_expression_test.cc
ast/if_statement_test.cc
ast/intrinsic_texture_helper_test.cc
@@ -423,7 +424,6 @@
ast/binary_expression_test.cc
ast/return_statement_test.cc
ast/scalar_constructor_expression_test.cc
- ast/set_decoration_test.cc
ast/sint_literal_test.cc
ast/stage_decoration_test.cc
ast/stride_decoration_test.cc
diff --git a/src/ast/binding_decoration_test.cc b/src/ast/binding_decoration_test.cc
index 08cde4c..ddeff33 100644
--- a/src/ast/binding_decoration_test.cc
+++ b/src/ast/binding_decoration_test.cc
@@ -34,7 +34,7 @@
EXPECT_FALSE(d->Is<BuiltinDecoration>());
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
EXPECT_FALSE(d->Is<LocationDecoration>());
- EXPECT_FALSE(d->Is<SetDecoration>());
+ EXPECT_FALSE(d->Is<GroupDecoration>());
}
TEST_F(BindingDecorationTest, ToStr) {
diff --git a/src/ast/builtin_decoration_test.cc b/src/ast/builtin_decoration_test.cc
index bee20b4..df10ec7 100644
--- a/src/ast/builtin_decoration_test.cc
+++ b/src/ast/builtin_decoration_test.cc
@@ -34,7 +34,7 @@
EXPECT_TRUE(d->Is<BuiltinDecoration>());
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
EXPECT_FALSE(d->Is<LocationDecoration>());
- EXPECT_FALSE(d->Is<SetDecoration>());
+ EXPECT_FALSE(d->Is<GroupDecoration>());
}
TEST_F(BuiltinDecorationTest, ToStr) {
diff --git a/src/ast/constant_id_decoration_test.cc b/src/ast/constant_id_decoration_test.cc
index 2da917a..ea38af3 100644
--- a/src/ast/constant_id_decoration_test.cc
+++ b/src/ast/constant_id_decoration_test.cc
@@ -33,7 +33,7 @@
EXPECT_FALSE(d->Is<BuiltinDecoration>());
EXPECT_TRUE(d->Is<ConstantIdDecoration>());
EXPECT_FALSE(d->Is<LocationDecoration>());
- EXPECT_FALSE(d->Is<SetDecoration>());
+ EXPECT_FALSE(d->Is<GroupDecoration>());
}
TEST_F(ConstantIdDecorationTest, ToStr) {
diff --git a/src/ast/function.cc b/src/ast/function.cc
index 723cb85..ebd21d1 100644
--- a/src/ast/function.cc
+++ b/src/ast/function.cc
@@ -108,19 +108,19 @@
}
BindingDecoration* binding = nullptr;
- SetDecoration* set = nullptr;
+ GroupDecoration* group = nullptr;
for (auto* deco : var->decorations()) {
if (auto* b = deco->As<BindingDecoration>()) {
binding = b;
- } else if (auto* s = deco->As<SetDecoration>()) {
- set = s;
+ } else if (auto* g = deco->As<GroupDecoration>()) {
+ group = g;
}
}
- if (binding == nullptr || set == nullptr) {
+ if (binding == nullptr || group == nullptr) {
continue;
}
- ret.push_back({var, BindingInfo{binding, set}});
+ ret.push_back({var, BindingInfo{binding, group}});
}
return ret;
}
@@ -135,19 +135,19 @@
}
BindingDecoration* binding = nullptr;
- SetDecoration* set = nullptr;
+ GroupDecoration* group = nullptr;
for (auto* deco : var->decorations()) {
if (auto* b = deco->As<BindingDecoration>()) {
binding = b;
- } else if (auto* s = deco->As<SetDecoration>()) {
- set = s;
+ } else if (auto* s = deco->As<GroupDecoration>()) {
+ group = s;
}
}
- if (binding == nullptr || set == nullptr) {
+ if (binding == nullptr || group == nullptr) {
continue;
}
- ret.push_back({var, BindingInfo{binding, set}});
+ ret.push_back({var, BindingInfo{binding, group}});
}
return ret;
}
@@ -305,20 +305,20 @@
}
BindingDecoration* binding = nullptr;
- SetDecoration* set = nullptr;
+ GroupDecoration* group = nullptr;
for (auto* deco : var->decorations()) {
if (auto* b = deco->As<BindingDecoration>()) {
binding = b;
}
- if (auto* s = deco->As<SetDecoration>()) {
- set = s;
+ if (auto* s = deco->As<GroupDecoration>()) {
+ group = s;
}
}
- if (binding == nullptr || set == nullptr) {
+ if (binding == nullptr || group == nullptr) {
continue;
}
- ret.push_back({var, BindingInfo{binding, set}});
+ ret.push_back({var, BindingInfo{binding, group}});
}
return ret;
}
@@ -342,19 +342,19 @@
}
BindingDecoration* binding = nullptr;
- SetDecoration* set = nullptr;
+ GroupDecoration* group = nullptr;
for (auto* deco : var->decorations()) {
if (auto* b = deco->As<BindingDecoration>()) {
binding = b;
- } else if (auto* s = deco->As<SetDecoration>()) {
- set = s;
+ } else if (auto* s = deco->As<GroupDecoration>()) {
+ group = s;
}
}
- if (binding == nullptr || set == nullptr) {
+ if (binding == nullptr || group == nullptr) {
continue;
}
- ret.push_back({var, BindingInfo{binding, set}});
+ ret.push_back({var, BindingInfo{binding, group}});
}
return ret;
diff --git a/src/ast/function.h b/src/ast/function.h
index 7dbda87..19fb034 100644
--- a/src/ast/function.h
+++ b/src/ast/function.h
@@ -27,10 +27,10 @@
#include "src/ast/builtin_decoration.h"
#include "src/ast/expression.h"
#include "src/ast/function_decoration.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/location_decoration.h"
#include "src/ast/node.h"
#include "src/ast/pipeline_stage.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/statement.h"
#include "src/ast/type/sampler_type.h"
#include "src/ast/type/type.h"
@@ -47,8 +47,8 @@
struct BindingInfo {
/// The binding decoration
BindingDecoration* binding = nullptr;
- /// The set decoration
- SetDecoration* set = nullptr;
+ /// The group decoration
+ GroupDecoration* group = nullptr;
};
/// Create a function
@@ -114,32 +114,32 @@
const std::vector<std::pair<Variable*, BuiltinDecoration*>>
referenced_builtin_variables() const;
/// Retrieves any referenced uniform variables. Note, the variables must be
- /// decorated with both binding and set decorations.
+ /// decorated with both binding and group decorations.
/// @returns the referenced uniforms
const std::vector<std::pair<Variable*, Function::BindingInfo>>
referenced_uniform_variables() const;
/// Retrieves any referenced storagebuffer variables. Note, the variables
- /// must be decorated with both binding and set decorations.
+ /// must be decorated with both binding and group decorations.
/// @returns the referenced storagebuffers
const std::vector<std::pair<Variable*, Function::BindingInfo>>
referenced_storagebuffer_variables() const;
/// Retrieves any referenced regular Sampler variables. Note, the
- /// variables must be decorated with both binding and set decorations.
+ /// variables must be decorated with both binding and group decorations.
/// @returns the referenced storagebuffers
const std::vector<std::pair<Variable*, Function::BindingInfo>>
referenced_sampler_variables() const;
/// Retrieves any referenced comparison Sampler variables. Note, the
- /// variables must be decorated with both binding and set decorations.
+ /// variables must be decorated with both binding and group decorations.
/// @returns the referenced storagebuffers
const std::vector<std::pair<Variable*, Function::BindingInfo>>
referenced_comparison_sampler_variables() const;
/// Retrieves any referenced sampled textures variables. Note, the
- /// variables must be decorated with both binding and set decorations.
+ /// variables must be decorated with both binding and group decorations.
/// @returns the referenced sampled textures
const std::vector<std::pair<Variable*, Function::BindingInfo>>
referenced_sampled_texture_variables() const;
/// Retrieves any referenced multisampled textures variables. Note, the
- /// variables must be decorated with both binding and set decorations.
+ /// variables must be decorated with both binding and group decorations.
/// @returns the referenced sampled textures
const std::vector<std::pair<Variable*, Function::BindingInfo>>
referenced_multisampled_texture_variables() const;
diff --git a/src/ast/set_decoration.cc b/src/ast/group_decoration.cc
similarity index 62%
rename from src/ast/set_decoration.cc
rename to src/ast/group_decoration.cc
index 3f6607c..3bbd372 100644
--- a/src/ast/set_decoration.cc
+++ b/src/ast/group_decoration.cc
@@ -12,28 +12,28 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "src/ast/set_decoration.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/clone_context.h"
#include "src/ast/module.h"
-TINT_INSTANTIATE_CLASS_ID(tint::ast::SetDecoration);
+TINT_INSTANTIATE_CLASS_ID(tint::ast::GroupDecoration);
namespace tint {
namespace ast {
-SetDecoration::SetDecoration(const Source& source, uint32_t val)
+GroupDecoration::GroupDecoration(const Source& source, uint32_t val)
: Base(source), value_(val) {}
-SetDecoration::~SetDecoration() = default;
+GroupDecoration::~GroupDecoration() = default;
-void SetDecoration::to_str(std::ostream& out, size_t indent) const {
+void GroupDecoration::to_str(std::ostream& out, size_t indent) const {
make_indent(out, indent);
- out << "SetDecoration{" << value_ << "}" << std::endl;
+ out << "GroupDecoration{" << value_ << "}" << std::endl;
}
-SetDecoration* SetDecoration::Clone(CloneContext* ctx) const {
- return ctx->mod->create<SetDecoration>(ctx->Clone(source()), value_);
+GroupDecoration* GroupDecoration::Clone(CloneContext* ctx) const {
+ return ctx->mod->create<GroupDecoration>(ctx->Clone(source()), value_);
}
} // namespace ast
diff --git a/src/ast/set_decoration.h b/src/ast/group_decoration.h
similarity index 76%
rename from src/ast/set_decoration.h
rename to src/ast/group_decoration.h
index ec97a32..323012d 100644
--- a/src/ast/set_decoration.h
+++ b/src/ast/group_decoration.h
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef SRC_AST_SET_DECORATION_H_
-#define SRC_AST_SET_DECORATION_H_
+#ifndef SRC_AST_GROUP_DECORATION_H_
+#define SRC_AST_GROUP_DECORATION_H_
#include <stddef.h>
@@ -22,16 +22,16 @@
namespace tint {
namespace ast {
-/// A set decoration
-class SetDecoration : public Castable<SetDecoration, VariableDecoration> {
+/// A group decoration
+class GroupDecoration : public Castable<GroupDecoration, VariableDecoration> {
public:
/// constructor
- /// @param value the set value
+ /// @param value the group value
/// @param source the source of this decoration
- SetDecoration(const Source& source, uint32_t value);
- ~SetDecoration() override;
+ GroupDecoration(const Source& source, uint32_t value);
+ ~GroupDecoration() override;
- /// @returns the set value
+ /// @returns the group value
uint32_t value() const { return value_; }
/// Outputs the decoration to the given stream
@@ -45,7 +45,7 @@
/// information is not cloned.
/// @param ctx the clone context
/// @return the newly cloned node
- SetDecoration* Clone(CloneContext* ctx) const override;
+ GroupDecoration* Clone(CloneContext* ctx) const override;
private:
uint32_t const value_;
@@ -54,4 +54,4 @@
} // namespace ast
} // namespace tint
-#endif // SRC_AST_SET_DECORATION_H_
+#endif // SRC_AST_GROUP_DECORATION_H_
diff --git a/src/ast/set_decoration_test.cc b/src/ast/group_decoration_test.cc
similarity index 72%
rename from src/ast/set_decoration_test.cc
rename to src/ast/group_decoration_test.cc
index b5ae138..95625d3 100644
--- a/src/ast/set_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/set_decoration.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/constant_id_decoration.h"
#include "src/ast/test_helper.h"
@@ -21,27 +21,27 @@
namespace ast {
namespace {
-using SetDecorationTest = TestHelper;
+using GroupDecorationTest = TestHelper;
-TEST_F(SetDecorationTest, Creation) {
- auto* d = create<SetDecoration>(2);
+TEST_F(GroupDecorationTest, Creation) {
+ auto* d = create<GroupDecoration>(2);
EXPECT_EQ(2u, d->value());
}
-TEST_F(SetDecorationTest, Is) {
- Decoration* d = create<SetDecoration>(2);
+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<LocationDecoration>());
- EXPECT_TRUE(d->Is<SetDecoration>());
+ EXPECT_TRUE(d->Is<GroupDecoration>());
}
-TEST_F(SetDecorationTest, ToStr) {
- auto* d = create<SetDecoration>(2);
+TEST_F(GroupDecorationTest, ToStr) {
+ auto* d = create<GroupDecoration>(2);
std::ostringstream out;
d->to_str(out, 0);
- EXPECT_EQ(out.str(), R"(SetDecoration{2}
+ EXPECT_EQ(out.str(), R"(GroupDecoration{2}
)");
}
diff --git a/src/ast/intrinsic_texture_helper_test.cc b/src/ast/intrinsic_texture_helper_test.cc
index 00a2d05..256de22 100644
--- a/src/ast/intrinsic_texture_helper_test.cc
+++ b/src/ast/intrinsic_texture_helper_test.cc
@@ -155,7 +155,7 @@
auto* datatype = resultVectorComponentType(b);
VariableDecorationList decos = {
- b->create<ast::SetDecoration>(0),
+ b->create<ast::GroupDecoration>(0),
b->create<ast::BindingDecoration>(0),
};
switch (texture_kind) {
@@ -194,7 +194,7 @@
ast::Variable* TextureOverloadCase::buildSamplerVariable(
ast::Builder* b) const {
VariableDecorationList decos = {
- b->create<ast::SetDecoration>(0),
+ b->create<ast::GroupDecoration>(0),
b->create<ast::BindingDecoration>(1),
};
return b->Var("sampler", ast::StorageClass::kUniformConstant,
diff --git a/src/ast/location_decoration_test.cc b/src/ast/location_decoration_test.cc
index fef2647..b8084e3 100644
--- a/src/ast/location_decoration_test.cc
+++ b/src/ast/location_decoration_test.cc
@@ -36,7 +36,7 @@
EXPECT_FALSE(d->Is<BuiltinDecoration>());
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
EXPECT_TRUE(d->Is<LocationDecoration>());
- EXPECT_FALSE(d->Is<SetDecoration>());
+ EXPECT_FALSE(d->Is<GroupDecoration>());
}
TEST_F(LocationDecorationTest, ToStr) {
diff --git a/src/ast/module_clone_test.cc b/src/ast/module_clone_test.cc
index a434f93..4e61aca 100644
--- a/src/ast/module_clone_test.cc
+++ b/src/ast/module_clone_test.cc
@@ -51,10 +51,10 @@
var<uniform> g6 : [[access(write)]] texture_storage_2d<rg32float>;
[[builtin(position)]] var<uniform> g7 : vec3<f32>;
-[[set(10), binding(20)]] var<storage_buffer> g7 : S;
-[[set(10), binding(20)]] var<storage_buffer> g8 : [[access(read)]]
+[[group(10), binding(20)]] var<storage_buffer> g7 : S;
+[[group(10), binding(20)]] var<storage_buffer> g8 : [[access(read)]]
S;
-[[set(10), binding(20)]] var<storage_buffer> g9 : [[access(read_write)]]
+[[group(10), binding(20)]] var<storage_buffer> g9 : [[access(read_write)]]
S;
fn f0(p0 : bool) -> f32 {
diff --git a/src/ast/variable_test.cc b/src/ast/variable_test.cc
index 925415d..e6475c1 100644
--- a/src/ast/variable_test.cc
+++ b/src/ast/variable_test.cc
@@ -138,7 +138,7 @@
auto* var = Var("my_var", StorageClass::kFunction, ty.f32, Expr("expr"),
VariableDecorationList{
create<BindingDecoration>(2),
- create<SetDecoration>(1),
+ create<GroupDecoration>(1),
});
std::ostringstream out;
@@ -146,7 +146,7 @@
EXPECT_EQ(demangle(out.str()), R"( Variable{
Decorations{
BindingDecoration{2}
- SetDecoration{1}
+ GroupDecoration{1}
}
my_var
function
diff --git a/src/inspector/inspector.cc b/src/inspector/inspector.cc
index 67fbc7a6..eca911d 100644
--- a/src/inspector/inspector.cc
+++ b/src/inspector/inspector.cc
@@ -187,7 +187,7 @@
continue;
}
- entry.bind_group = binding_info.set->value();
+ entry.bind_group = binding_info.group->value();
entry.binding = binding_info.binding->value();
entry.min_buffer_binding_size = var->type()->MinBufferBindingSize(
ast::type::MemoryLayout::kUniformBuffer);
@@ -224,7 +224,7 @@
ast::Function::BindingInfo binding_info;
std::tie(var, binding_info) = rs;
- entry.bind_group = binding_info.set->value();
+ entry.bind_group = binding_info.group->value();
entry.binding = binding_info.binding->value();
result.push_back(entry);
@@ -248,7 +248,7 @@
ast::Function::BindingInfo binding_info;
std::tie(var, binding_info) = rcs;
- entry.bind_group = binding_info.set->value();
+ entry.bind_group = binding_info.group->value();
entry.binding = binding_info.binding->value();
result.push_back(entry);
@@ -310,7 +310,7 @@
continue;
}
- entry.bind_group = binding_info.set->value();
+ entry.bind_group = binding_info.group->value();
entry.binding = binding_info.binding->value();
entry.min_buffer_binding_size = var->type()->MinBufferBindingSize(
ast::type::MemoryLayout::kStorageBuffer);
@@ -339,7 +339,7 @@
ast::Function::BindingInfo binding_info;
std::tie(var, binding_info) = ref;
- entry.bind_group = binding_info.set->value();
+ entry.bind_group = binding_info.group->value();
entry.binding = binding_info.binding->value();
auto* texture_type =
diff --git a/src/inspector/inspector_test.cc b/src/inspector/inspector_test.cc
index 4de2319..8be535e 100644
--- a/src/inspector/inspector_test.cc
+++ b/src/inspector/inspector_test.cc
@@ -319,17 +319,17 @@
/// @param name the name of the variable
/// @param type the type to use
/// @param storage_class the storage class to use
- /// @param set the binding group/set to use for the uniform buffer
+ /// @param group the binding and group to use for the uniform buffer
/// @param binding the binding number to use for the uniform buffer
void AddBinding(const std::string& name,
ast::type::Type* type,
ast::StorageClass storage_class,
- uint32_t set,
+ uint32_t group,
uint32_t binding) {
auto* var = Var(name, storage_class, type, nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(binding),
- create<ast::SetDecoration>(set),
+ create<ast::GroupDecoration>(group),
});
mod->AddGlobalVariable(var);
@@ -338,25 +338,25 @@
/// Adds an uniform buffer variable to the module
/// @param name the name of the variable
/// @param type the type to use
- /// @param set the binding group/set to use for the uniform buffer
+ /// @param group the binding/group/ to use for the uniform buffer
/// @param binding the binding number to use for the uniform buffer
void AddUniformBuffer(const std::string& name,
ast::type::Type* type,
- uint32_t set,
+ uint32_t group,
uint32_t binding) {
- AddBinding(name, type, ast::StorageClass::kUniform, set, binding);
+ AddBinding(name, type, ast::StorageClass::kUniform, group, binding);
}
/// Adds a storage buffer variable to the module
/// @param name the name of the variable
/// @param type the type to use
- /// @param set the binding group/set to use for the storage buffer
+ /// @param group the binding/group to use for the storage buffer
/// @param binding the binding number to use for the storage buffer
void AddStorageBuffer(const std::string& name,
ast::type::Type* type,
- uint32_t set,
+ uint32_t group,
uint32_t binding) {
- AddBinding(name, type, ast::StorageClass::kStorageBuffer, set, binding);
+ AddBinding(name, type, ast::StorageClass::kStorageBuffer, group, binding);
}
/// Generates a function that references a specific struct variable
@@ -398,22 +398,22 @@
/// Adds a regular sampler variable to the module
/// @param name the name of the variable
- /// @param set the binding group/set to use for the storage buffer
+ /// @param group the binding/group to use for the storage buffer
/// @param binding the binding number to use for the storage buffer
- void AddSampler(const std::string& name, uint32_t set, uint32_t binding) {
- AddBinding(name, sampler_type(), ast::StorageClass::kUniformConstant, set,
+ void AddSampler(const std::string& name, uint32_t group, uint32_t binding) {
+ AddBinding(name, sampler_type(), ast::StorageClass::kUniformConstant, group,
binding);
}
/// Adds a comparison sampler variable to the module
/// @param name the name of the variable
- /// @param set the binding group/set to use for the storage buffer
+ /// @param group the binding/group to use for the storage buffer
/// @param binding the binding number to use for the storage buffer
void AddComparisonSampler(const std::string& name,
- uint32_t set,
+ uint32_t group,
uint32_t binding) {
AddBinding(name, comparison_sampler_type(),
- ast::StorageClass::kUniformConstant, set, binding);
+ ast::StorageClass::kUniformConstant, group, binding);
}
/// Generates a SampledTexture appropriate for the params
@@ -447,25 +447,25 @@
/// Adds a sampled texture variable to the module
/// @param name the name of the variable
/// @param type the type to use
- /// @param set the binding group/set to use for the sampled texture
+ /// @param group the binding/group to use for the sampled texture
/// @param binding the binding number to use for the sampled texture
void AddSampledTexture(const std::string& name,
ast::type::Type* type,
- uint32_t set,
+ uint32_t group,
uint32_t binding) {
- AddBinding(name, type, ast::StorageClass::kUniformConstant, set, binding);
+ AddBinding(name, type, ast::StorageClass::kUniformConstant, group, binding);
}
/// Adds a multi-sampled texture variable to the module
/// @param name the name of the variable
/// @param type the type to use
- /// @param set the binding group/set to use for the multi-sampled texture
+ /// @param group the binding/group to use for the multi-sampled texture
/// @param binding the binding number to use for the multi-sampled texture
void AddMultisampledTexture(const std::string& name,
ast::type::Type* type,
- uint32_t set,
+ uint32_t group,
uint32_t binding) {
- AddBinding(name, type, ast::StorageClass::kUniformConstant, set, binding);
+ AddBinding(name, type, ast::StorageClass::kUniformConstant, group, binding);
}
void AddGlobalVariable(const std::string& name, ast::type::Type* type) {
diff --git a/src/reader/spirv/parser_impl.cc b/src/reader/spirv/parser_impl.cc
index 54af127..93c685e 100644
--- a/src/reader/spirv/parser_impl.cc
+++ b/src/reader/spirv/parser_impl.cc
@@ -42,8 +42,8 @@
#include "src/ast/builtin_decoration.h"
#include "src/ast/constant_id_decoration.h"
#include "src/ast/float_literal.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/scalar_constructor_expression.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/sint_literal.h"
#include "src/ast/stride_decoration.h"
#include "src/ast/struct.h"
@@ -1295,7 +1295,7 @@
<< ": has no operand";
return nullptr;
}
- decorations.emplace_back(create<ast::SetDecoration>(Source{}, deco[1]));
+ decorations.emplace_back(create<ast::GroupDecoration>(Source{}, deco[1]));
}
if (deco[0] == SpvDecorationBinding) {
if (deco.size() == 1) {
diff --git a/src/reader/spirv/parser_impl_handle_test.cc b/src/reader/spirv/parser_impl_handle_test.cc
index 281380c..8c4d6da 100644
--- a/src/reader/spirv/parser_impl_handle_test.cc
+++ b/src/reader/spirv/parser_impl_handle_test.cc
@@ -1145,7 +1145,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1163,7 +1163,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1179,7 +1179,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1195,7 +1195,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1352,7 +1352,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1361,7 +1361,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1385,7 +1385,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1394,7 +1394,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1429,7 +1429,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1438,7 +1438,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1464,7 +1464,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1473,7 +1473,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1508,7 +1508,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1517,7 +1517,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1542,7 +1542,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1551,7 +1551,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1587,7 +1587,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1596,7 +1596,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1624,7 +1624,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1633,7 +1633,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1662,7 +1662,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1671,7 +1671,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1719,7 +1719,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1728,7 +1728,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1737,7 +1737,7 @@
}
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{1}
}
x_30
@@ -1798,7 +1798,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1807,7 +1807,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1831,7 +1831,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1840,7 +1840,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1875,7 +1875,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1884,7 +1884,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1910,7 +1910,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1919,7 +1919,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1960,7 +1960,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -1969,7 +1969,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -1994,7 +1994,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2003,7 +2003,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2039,7 +2039,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2048,7 +2048,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2076,7 +2076,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2085,7 +2085,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2115,7 +2115,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2124,7 +2124,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2161,7 +2161,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2170,7 +2170,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2197,7 +2197,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2206,7 +2206,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2243,7 +2243,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2252,7 +2252,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2280,7 +2280,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2289,7 +2289,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2320,7 +2320,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2329,7 +2329,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2368,7 +2368,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2377,7 +2377,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2427,7 +2427,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2436,7 +2436,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2460,7 +2460,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -2469,7 +2469,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2573,7 +2573,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2601,7 +2601,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2621,7 +2621,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2644,7 +2644,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2667,7 +2667,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2690,7 +2690,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2710,7 +2710,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2733,7 +2733,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2757,7 +2757,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2923,7 +2923,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2943,7 +2943,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2965,7 +2965,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -2987,7 +2987,7 @@
R"(
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3011,7 +3011,7 @@
"%99 = OpImageRead %v4float %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3043,7 +3043,7 @@
{"%float 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4float %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3071,7 +3071,7 @@
"%99 = OpImageFetch %v4float %im %vi12 Lod %int_3",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3108,7 +3108,7 @@
"%99 = OpImageFetch %v4float %im %vi12 ",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3150,7 +3150,7 @@
"%99 = OpImageFetch %v4float %im %vi12 Sample %i1",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3179,7 +3179,7 @@
"%99 = OpImageFetch %v4float %im %vi123 Sample %i1",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3219,7 +3219,7 @@
"%99 = OpImageFetch %v4float %im %vi12 Sample %u1",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3269,7 +3269,7 @@
{"%float 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4float %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3296,7 +3296,7 @@
{"%uint 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4uint %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3323,7 +3323,7 @@
{"%uint 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4int %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3352,7 +3352,7 @@
{"%int 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4int %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3379,7 +3379,7 @@
{"%int 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4uint %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3413,7 +3413,7 @@
{"%float 2D 0 0 0 1 Rgba32f", "%99 = OpImageRead %v4float %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3440,7 +3440,7 @@
{"%uint 2D 0 0 0 1 Rgba32ui", "%99 = OpImageRead %v4uint %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3467,7 +3467,7 @@
{"%uint 2D 0 0 0 1 Rgba32ui", "%99 = OpImageRead %v4int %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3496,7 +3496,7 @@
{"%int 2D 0 0 0 1 Rgba32i", "%99 = OpImageRead %v4int %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3523,7 +3523,7 @@
{"%int 2D 0 0 0 1 Rgba32i", "%99 = OpImageRead %v4uint %im %vi12",
R"(Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
@@ -3561,7 +3561,7 @@
R"(
Variable{
Decorations{
- SetDecoration{0}
+ GroupDecoration{0}
BindingDecoration{0}
}
x_10
@@ -3570,7 +3570,7 @@
}
Variable{
Decorations{
- SetDecoration{2}
+ GroupDecoration{2}
BindingDecoration{1}
}
x_20
diff --git a/src/reader/spirv/parser_impl_module_var_test.cc b/src/reader/spirv/parser_impl_module_var_test.cc
index b39f219..f4ce510 100644
--- a/src/reader/spirv/parser_impl_module_var_test.cc
+++ b/src/reader/spirv/parser_impl_module_var_test.cc
@@ -1571,7 +1571,7 @@
"instruction, found '4'."));
}
-TEST_F(SpvModuleScopeVarParserTest, DescriptorSetDecoration_Valid) {
+TEST_F(SpvModuleScopeVarParserTest, DescriptorGroupDecoration_Valid) {
auto p = parser(test::Assemble(R"(
OpName %myvar "myvar"
OpDecorate %myvar DescriptorSet 3
@@ -1587,7 +1587,7 @@
EXPECT_THAT(module_str, HasSubstr(R"(
Variable{
Decorations{
- SetDecoration{3}
+ GroupDecoration{3}
}
myvar
storage_buffer
@@ -1597,7 +1597,7 @@
}
TEST_F(SpvModuleScopeVarParserTest,
- DescriptorSetDecoration_MissingOperandWontAssemble) {
+ DescriptorGroupDecoration_MissingOperandWontAssemble) {
const auto assembly = R"(
OpName %myvar "myvar"
OpDecorate %myvar DescriptorSet
@@ -1611,7 +1611,7 @@
}
TEST_F(SpvModuleScopeVarParserTest,
- DescriptorSetDecoration_TwoOperandsWontAssemble) {
+ DescriptorGroupDecoration_TwoOperandsWontAssemble) {
const auto assembly = R"(
OpName %myvar "myvar"
OpDecorate %myvar DescriptorSet 3 4
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index 50d6f17..6900f23 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -32,13 +32,13 @@
#include "src/ast/else_statement.h"
#include "src/ast/fallthrough_statement.h"
#include "src/ast/float_literal.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/identifier_expression.h"
#include "src/ast/if_statement.h"
#include "src/ast/location_decoration.h"
#include "src/ast/member_accessor_expression.h"
#include "src/ast/return_statement.h"
#include "src/ast/scalar_constructor_expression.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/sint_literal.h"
#include "src/ast/stage_decoration.h"
#include "src/ast/stride_decoration.h"
@@ -134,6 +134,7 @@
const char kBindingDecoration[] = "binding";
const char kBlockDecoration[] = "block";
const char kBuiltinDecoration[] = "builtin";
+const char kGroupDecoration[] = "group";
const char kLocationDecoration[] = "location";
const char kOffsetDecoration[] = "offset";
const char kSetDecoration[] = "set";
@@ -149,8 +150,9 @@
return s == kAccessDecoration || s == kBindingDecoration ||
s == kBlockDecoration || s == kBuiltinDecoration ||
s == kLocationDecoration || s == kOffsetDecoration ||
- s == kSetDecoration || s == kStageDecoration ||
- s == kStrideDecoration || s == kWorkgroupSizeDecoration;
+ s == kSetDecoration || s == kGroupDecoration ||
+ s == kStageDecoration || s == kStrideDecoration ||
+ s == kWorkgroupSizeDecoration;
}
/// Enter-exit counters for block token types.
@@ -2863,7 +2865,7 @@
if (is_decoration(peek())) {
// We have two decorations in a bracket without a separating comma.
- // e.g. [[location(1) set(2)]]
+ // e.g. [[location(1) group(2)]]
// ^^^ expected comma
expect(use, Token::Type::kComma);
return Failure::kErrored;
@@ -2934,14 +2936,14 @@
});
}
- if (s == kSetDecoration) {
- const char* use = "set decoration";
+ if (s == kSetDecoration || s == kGroupDecoration) {
+ const char* use = "group decoration";
return expect_paren_block(use, [&]() -> Result {
auto val = expect_positive_sint(use);
if (val.errored)
return Failure::kErrored;
- return create<ast::SetDecoration>(val.source, val.value);
+ return create<ast::GroupDecoration>(val.source, val.value);
});
}
diff --git a/src/reader/wgsl/parser_impl_error_msg_test.cc b/src/reader/wgsl/parser_impl_error_msg_test.cc
index f24eed4..ae6890c 100644
--- a/src/reader/wgsl/parser_impl_error_msg_test.cc
+++ b/src/reader/wgsl/parser_impl_error_msg_test.cc
@@ -941,10 +941,10 @@
}
TEST_F(ParserImplErrorTest, GlobalDeclVarDecoListMissingComma) {
- EXPECT("[[location(1) set(2)]] var i : i32;",
+ EXPECT("[[location(1) group(2)]] var i : i32;",
"test.wgsl:1:15 error: expected ',' for decoration list\n"
- "[[location(1) set(2)]] var i : i32;\n"
- " ^^^\n");
+ "[[location(1) group(2)]] var i : i32;\n"
+ " ^^^^^\n");
}
TEST_F(ParserImplErrorTest, GlobalDeclVarDecoListMissingEnd) {
@@ -1026,26 +1026,26 @@
" ^\n");
}
-TEST_F(ParserImplErrorTest, GlobalDeclVarDecoSetMissingLParen) {
- EXPECT("[[set 1]] var i : i32;",
- "test.wgsl:1:7 error: expected '(' for set decoration\n"
- "[[set 1]] var i : i32;\n"
- " ^\n");
+TEST_F(ParserImplErrorTest, GlobalDeclVarDecoGroupMissingLParen) {
+ EXPECT("[[group 1]] var i : i32;",
+ "test.wgsl:1:9 error: expected '(' for group decoration\n"
+ "[[group 1]] var i : i32;\n"
+ " ^\n");
}
-TEST_F(ParserImplErrorTest, GlobalDeclVarDecoSetMissingRParen) {
- EXPECT("[[set(1]] var i : i32;",
- "test.wgsl:1:8 error: expected ')' for set decoration\n"
- "[[set(1]] var i : i32;\n"
- " ^^\n");
+TEST_F(ParserImplErrorTest, GlobalDeclVarDecoGroupMissingRParen) {
+ EXPECT("[[group(1]] var i : i32;",
+ "test.wgsl:1:10 error: expected ')' for group decoration\n"
+ "[[group(1]] var i : i32;\n"
+ " ^^\n");
}
-TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBindingSetValue) {
- EXPECT("[[set(x)]] var i : i32;",
- "test.wgsl:1:7 error: expected signed integer literal for set "
+TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBindingGroupValue) {
+ EXPECT("[[group(x)]] var i : i32;",
+ "test.wgsl:1:9 error: expected signed integer literal for group "
"decoration\n"
- "[[set(x)]] var i : i32;\n"
- " ^\n");
+ "[[group(x)]] var i : i32;\n"
+ " ^\n");
}
TEST_F(ParserImplErrorTest, GlobalDeclVarInvalidIdentifier) {
diff --git a/src/reader/wgsl/parser_impl_global_variable_decl_test.cc b/src/reader/wgsl/parser_impl_global_variable_decl_test.cc
index be1199a..f17ceca 100644
--- a/src/reader/wgsl/parser_impl_global_variable_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_global_variable_decl_test.cc
@@ -74,7 +74,7 @@
}
TEST_F(ParserImplTest, GlobalVariableDecl_WithDecoration) {
- auto p = parser("[[binding(2), set(1)]] var<out> a : f32");
+ auto p = parser("[[binding(2), group(1)]] var<out> a : f32");
auto decos = p->decoration_list();
EXPECT_FALSE(decos.errored);
EXPECT_TRUE(decos.matched);
@@ -90,20 +90,20 @@
EXPECT_EQ(e->storage_class(), ast::StorageClass::kOutput);
EXPECT_EQ(e->source().range.begin.line, 1u);
- EXPECT_EQ(e->source().range.begin.column, 33u);
+ EXPECT_EQ(e->source().range.begin.column, 35u);
EXPECT_EQ(e->source().range.end.line, 1u);
- EXPECT_EQ(e->source().range.end.column, 34u);
+ EXPECT_EQ(e->source().range.end.column, 36u);
ASSERT_EQ(e->constructor(), nullptr);
auto& decorations = e->decorations();
ASSERT_EQ(decorations.size(), 2u);
ASSERT_TRUE(decorations[0]->Is<ast::BindingDecoration>());
- ASSERT_TRUE(decorations[1]->Is<ast::SetDecoration>());
+ ASSERT_TRUE(decorations[1]->Is<ast::GroupDecoration>());
}
TEST_F(ParserImplTest, GlobalVariableDecl_WithDecoration_MulitpleGroups) {
- auto p = parser("[[binding(2)]] [[set(1)]] var<out> a : f32");
+ auto p = parser("[[binding(2)]] [[group(1)]] var<out> a : f32");
auto decos = p->decoration_list();
EXPECT_FALSE(decos.errored);
EXPECT_TRUE(decos.matched);
@@ -120,16 +120,16 @@
EXPECT_EQ(e->storage_class(), ast::StorageClass::kOutput);
EXPECT_EQ(e->source().range.begin.line, 1u);
- EXPECT_EQ(e->source().range.begin.column, 36u);
+ EXPECT_EQ(e->source().range.begin.column, 38u);
EXPECT_EQ(e->source().range.end.line, 1u);
- EXPECT_EQ(e->source().range.end.column, 37u);
+ EXPECT_EQ(e->source().range.end.column, 39u);
ASSERT_EQ(e->constructor(), nullptr);
auto& decorations = e->decorations();
ASSERT_EQ(decorations.size(), 2u);
ASSERT_TRUE(decorations[0]->Is<ast::BindingDecoration>());
- ASSERT_TRUE(decorations[1]->Is<ast::SetDecoration>());
+ ASSERT_TRUE(decorations[1]->Is<ast::GroupDecoration>());
}
TEST_F(ParserImplTest, GlobalVariableDecl_InvalidDecoration) {
diff --git a/src/reader/wgsl/parser_impl_variable_decoration_test.cc b/src/reader/wgsl/parser_impl_variable_decoration_test.cc
index d6b9ac5..aedded4 100644
--- a/src/reader/wgsl/parser_impl_variable_decoration_test.cc
+++ b/src/reader/wgsl/parser_impl_variable_decoration_test.cc
@@ -15,8 +15,8 @@
#include "gtest/gtest.h"
#include "src/ast/binding_decoration.h"
#include "src/ast/builtin_decoration.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/location_decoration.h"
-#include "src/ast/set_decoration.h"
#include "src/reader/wgsl/parser_impl.h"
#include "src/reader/wgsl/parser_impl_test_helper.h"
@@ -231,6 +231,7 @@
"1:9: expected signed integer literal for binding decoration");
}
+// DEPRECATED
TEST_F(ParserImplTest, VariableDecoration_set) {
auto p = parser("set(4)");
auto deco = p->decoration();
@@ -240,52 +241,67 @@
auto* var_deco = deco.value->As<ast::VariableDecoration>();
ASSERT_FALSE(p->has_error());
ASSERT_NE(var_deco, nullptr);
- ASSERT_TRUE(var_deco->Is<ast::SetDecoration>());
+ ASSERT_TRUE(var_deco->Is<ast::GroupDecoration>());
- auto* set = var_deco->As<ast::SetDecoration>();
- EXPECT_EQ(set->value(), 4u);
+ auto* group = var_deco->As<ast::GroupDecoration>();
+ EXPECT_EQ(group->value(), 4u);
}
-TEST_F(ParserImplTest, VariableDecoration_Set_MissingLeftParen) {
- auto p = parser("set 2)");
+TEST_F(ParserImplTest, VariableDecoration_group) {
+ auto p = parser("group(4)");
+ auto deco = p->decoration();
+ EXPECT_TRUE(deco.matched);
+ EXPECT_FALSE(deco.errored);
+ ASSERT_NE(deco.value, nullptr);
+ auto* var_deco = deco.value->As<ast::VariableDecoration>();
+ ASSERT_FALSE(p->has_error());
+ ASSERT_NE(var_deco, nullptr);
+ ASSERT_TRUE(var_deco->Is<ast::GroupDecoration>());
+
+ auto* group = var_deco->As<ast::GroupDecoration>();
+ EXPECT_EQ(group->value(), 4u);
+}
+
+TEST_F(ParserImplTest, VariableDecoration_Group_MissingLeftParen) {
+ auto p = parser("group 2)");
auto deco = p->decoration();
EXPECT_FALSE(deco.matched);
EXPECT_TRUE(deco.errored);
EXPECT_EQ(deco.value, nullptr);
EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:5: expected '(' for set decoration");
+ EXPECT_EQ(p->error(), "1:7: expected '(' for group decoration");
}
-TEST_F(ParserImplTest, VariableDecoration_Set_MissingRightParen) {
- auto p = parser("set(2");
+TEST_F(ParserImplTest, VariableDecoration_Group_MissingRightParen) {
+ auto p = parser("group(2");
auto deco = p->decoration();
EXPECT_FALSE(deco.matched);
EXPECT_TRUE(deco.errored);
EXPECT_EQ(deco.value, nullptr);
EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:6: expected ')' for set decoration");
+ EXPECT_EQ(p->error(), "1:8: expected ')' for group decoration");
}
-TEST_F(ParserImplTest, VariableDecoration_Set_MissingValue) {
- auto p = parser("set()");
+TEST_F(ParserImplTest, VariableDecoration_Group_MissingValue) {
+ auto p = parser("group()");
auto deco = p->decoration();
EXPECT_FALSE(deco.matched);
EXPECT_TRUE(deco.errored);
EXPECT_EQ(deco.value, nullptr);
EXPECT_TRUE(p->has_error());
EXPECT_EQ(p->error(),
- "1:5: expected signed integer literal for set decoration");
+ "1:7: expected signed integer literal for group decoration");
}
-TEST_F(ParserImplTest, VariableDecoration_Set_MissingInvalid) {
- auto p = parser("set(nan)");
+TEST_F(ParserImplTest, VariableDecoration_Group_MissingInvalid) {
+ auto p = parser("group(nan)");
auto deco = p->decoration();
EXPECT_FALSE(deco.matched);
EXPECT_TRUE(deco.errored);
EXPECT_EQ(deco.value, nullptr);
EXPECT_TRUE(p->has_error());
EXPECT_EQ(p->error(),
- "1:5: expected signed integer literal for set decoration");
+ "1:7: expected signed integer literal for group decoration");
}
} // namespace
diff --git a/src/transform/first_index_offset.cc b/src/transform/first_index_offset.cc
index 8158857..adc4680 100644
--- a/src/transform/first_index_offset.cc
+++ b/src/transform/first_index_offset.cc
@@ -76,8 +76,8 @@
} // namespace
-FirstIndexOffset::FirstIndexOffset(uint32_t binding, uint32_t set)
- : binding_(binding), set_(set) {}
+FirstIndexOffset::FirstIndexOffset(uint32_t binding, uint32_t group)
+ : binding_(binding), group_(group) {}
FirstIndexOffset::~FirstIndexOffset() = default;
@@ -237,7 +237,7 @@
nullptr, // constructor
ast::VariableDecorationList{
mod->create<ast::BindingDecoration>(Source{}, binding_),
- mod->create<ast::SetDecoration>(Source{}, set_),
+ mod->create<ast::GroupDecoration>(Source{}, group_),
}); // decorations
mod->AddGlobalVariable(idx_var);
diff --git a/src/transform/first_index_offset.h b/src/transform/first_index_offset.h
index 64ad7a3..587412b 100644
--- a/src/transform/first_index_offset.h
+++ b/src/transform/first_index_offset.h
@@ -52,7 +52,7 @@
/// [[offset(4)]] tint_first_instance_index : u32;
/// };
/// [[builtin(vertex_index)]] var<in> tint_first_index_offset_vert_idx : u32;
-/// [[binding(N), set(M)]] var<uniform> tint_first_index_data :
+/// [[binding(N), group(M)]] var<uniform> tint_first_index_data :
/// TintFirstIndexOffsetData;
/// fn func() -> u32 {
/// const vert_idx = (tint_first_index_offset_vert_idx +
@@ -64,8 +64,8 @@
public:
/// Constructor
/// @param binding the binding() for firstVertex/Instance uniform
- /// @param set the set() for firstVertex/Instance uniform
- FirstIndexOffset(uint32_t binding, uint32_t set);
+ /// @param group the group() for firstVertex/Instance uniform
+ FirstIndexOffset(uint32_t binding, uint32_t group);
~FirstIndexOffset() override;
/// Runs the transform on `module`, returning the transformation result.
@@ -104,7 +104,7 @@
ast::Module* module);
uint32_t binding_;
- uint32_t set_;
+ uint32_t group_;
bool has_vertex_index_ = false;
bool has_instance_index_ = false;
diff --git a/src/transform/first_index_offset_test.cc b/src/transform/first_index_offset_test.cc
index c739810..91726c4 100644
--- a/src/transform/first_index_offset_test.cc
+++ b/src/transform/first_index_offset_test.cc
@@ -83,7 +83,7 @@
};
[[builtin(vertex_idx)]] var<in> tint_first_index_offset_vert_idx : u32;
-[[binding(1), set(2)]] var<uniform> tint_first_index_data : TintFirstIndexOffsetData;
+[[binding(1), group(2)]] var<uniform> tint_first_index_data : TintFirstIndexOffsetData;
fn test() -> u32 {
const vert_idx : u32 = (tint_first_index_offset_vert_idx + tint_first_index_data.tint_first_vertex_index);
@@ -123,7 +123,7 @@
};
[[builtin(instance_idx)]] var<in> tint_first_index_offset_inst_idx : u32;
-[[binding(1), set(7)]] var<uniform> tint_first_index_data : TintFirstIndexOffsetData;
+[[binding(1), group(7)]] var<uniform> tint_first_index_data : TintFirstIndexOffsetData;
fn test() -> u32 {
const inst_idx : u32 = (tint_first_index_offset_inst_idx + tint_first_index_data.tint_first_instance_index);
@@ -167,7 +167,7 @@
[[builtin(instance_idx)]] var<in> tint_first_index_offset_instance_idx : u32;
[[builtin(vertex_idx)]] var<in> tint_first_index_offset_vert_idx : u32;
-[[binding(1), set(2)]] var<uniform> tint_first_index_data : TintFirstIndexOffsetData;
+[[binding(1), group(2)]] var<uniform> tint_first_index_data : TintFirstIndexOffsetData;
fn test() -> u32 {
const instance_idx : u32 = (tint_first_index_offset_instance_idx + tint_first_index_data.tint_first_instance_index);
@@ -212,7 +212,7 @@
};
[[builtin(vertex_idx)]] var<in> tint_first_index_offset_vert_idx : u32;
-[[binding(1), set(2)]] var<uniform> tint_first_index_data : TintFirstIndexOffsetData;
+[[binding(1), group(2)]] var<uniform> tint_first_index_data : TintFirstIndexOffsetData;
fn func1() -> u32 {
const vert_idx : u32 = (tint_first_index_offset_vert_idx + tint_first_index_data.tint_first_vertex_index);
diff --git a/src/transform/vertex_pulling.cc b/src/transform/vertex_pulling.cc
index a0d9a7e..a06fe5d 100644
--- a/src/transform/vertex_pulling.cc
+++ b/src/transform/vertex_pulling.cc
@@ -65,8 +65,12 @@
cfg.entry_point_name = std::move(entry_point);
}
+void VertexPulling::SetPullingBufferBindingGroup(uint32_t number) {
+ cfg.pulling_group = number;
+}
+
void VertexPulling::SetPullingBufferBindingSet(uint32_t number) {
- cfg.pulling_set = number;
+ cfg.pulling_group = number;
}
Transform::Output VertexPulling::Run(ast::Module* in) {
@@ -293,7 +297,7 @@
ast::VariableDecorationList{
// decorations
out->create<ast::BindingDecoration>(Source{}, i),
- out->create<ast::SetDecoration>(Source{}, cfg.pulling_set),
+ out->create<ast::GroupDecoration>(Source{}, cfg.pulling_group),
});
out->AddGlobalVariable(var);
}
diff --git a/src/transform/vertex_pulling.h b/src/transform/vertex_pulling.h
index 6d4f23c..2233678 100644
--- a/src/transform/vertex_pulling.h
+++ b/src/transform/vertex_pulling.h
@@ -151,8 +151,13 @@
/// Sets the "set" we will put all our vertex buffers into (as storage
/// buffers)
+ /// DEPRECATED
/// @param number the set number we will use
void SetPullingBufferBindingSet(uint32_t number);
+ /// Sets the "group" we will put all our vertex buffers into (as storage
+ /// buffers)
+ /// @param number the group number we will use
+ void SetPullingBufferBindingGroup(uint32_t number);
/// Runs the transform on `module`, returning the transformation result.
/// @note Users of Tint should register the transform with transform manager
@@ -171,8 +176,8 @@
std::string entry_point_name;
VertexStateDescriptor vertex_state;
bool vertex_state_set = false;
- // Default to 4 as it is past the limits of user-accessible sets
- uint32_t pulling_set = 4u;
+ // Default to 4 as it is past the limits of user-accessible groups
+ uint32_t pulling_group = 4u;
};
Config cfg;
diff --git a/src/transform/vertex_pulling_test.cc b/src/transform/vertex_pulling_test.cc
index 87e9a0c..88594cc 100644
--- a/src/transform/vertex_pulling_test.cc
+++ b/src/transform/vertex_pulling_test.cc
@@ -134,7 +134,7 @@
};
[[builtin(vertex_idx)]] var<in> _tint_pulling_vertex_index : i32;
-[[binding(0), set(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
+[[binding(0), group(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
var<private> var_a : f32;
[[stage(vertex)]]
@@ -173,7 +173,7 @@
};
[[builtin(instance_idx)]] var<in> _tint_pulling_instance_index : i32;
-[[binding(0), set(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
+[[binding(0), group(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
var<private> var_a : f32;
[[stage(vertex)]]
@@ -212,7 +212,7 @@
};
[[builtin(vertex_idx)]] var<in> _tint_pulling_vertex_index : i32;
-[[binding(0), set(5)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
+[[binding(0), group(5)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
var<private> var_a : f32;
[[stage(vertex)]]
@@ -255,8 +255,8 @@
_tint_vertex_data : [[stride(4)]] array<u32>;
};
-[[binding(0), set(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
-[[binding(1), set(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_1 : TintVertexData;
+[[binding(0), group(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
+[[binding(1), group(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_1 : TintVertexData;
var<private> var_a : f32;
var<private> var_b : f32;
[[builtin(vertex_idx)]] var<in> custom_vertex_index : i32;
@@ -302,7 +302,7 @@
};
[[builtin(vertex_idx)]] var<in> _tint_pulling_vertex_index : i32;
-[[binding(0), set(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
+[[binding(0), group(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
var<private> var_a : f32;
var<private> var_b : array<f32, 4>;
@@ -348,9 +348,9 @@
};
[[builtin(vertex_idx)]] var<in> _tint_pulling_vertex_index : i32;
-[[binding(0), set(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
-[[binding(1), set(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_1 : TintVertexData;
-[[binding(2), set(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_2 : TintVertexData;
+[[binding(0), group(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_0 : TintVertexData;
+[[binding(1), group(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_1 : TintVertexData;
+[[binding(2), group(4)]] var<storage_buffer> _tint_pulling_vertex_buffer_2 : TintVertexData;
var<private> var_a : array<f32, 2>;
var<private> var_b : array<f32, 3>;
var<private> var_c : array<f32, 4>;
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index af20ff1..557a35b 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -18,6 +18,7 @@
#include "src/ast/call_expression.h"
#include "src/ast/float_literal.h"
#include "src/ast/function.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/identifier_expression.h"
#include "src/ast/if_statement.h"
#include "src/ast/location_decoration.h"
@@ -26,7 +27,6 @@
#include "src/ast/pipeline_stage.h"
#include "src/ast/return_statement.h"
#include "src/ast/scalar_constructor_expression.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/sint_literal.h"
#include "src/ast/stage_decoration.h"
#include "src/ast/struct.h"
@@ -285,7 +285,7 @@
Var("coord", ast::StorageClass::kUniform, ty.vec4<f32>(), nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1),
+ create<ast::GroupDecoration>(1),
});
td.RegisterVariableForTesting(coord_var);
@@ -331,7 +331,7 @@
auto* coord_var = Var("uniforms", ast::StorageClass::kUniform, s, nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1),
+ create<ast::GroupDecoration>(1),
});
mod->AddConstructedType(s);
@@ -386,7 +386,7 @@
Var("coord", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1),
+ create<ast::GroupDecoration>(1),
});
td.RegisterVariableForTesting(coord_var);
@@ -434,7 +434,7 @@
ast::VariableDecorationList{
// decorations
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1),
+ create<ast::GroupDecoration>(1),
});
td.RegisterVariableForTesting(coord_var);
@@ -481,7 +481,7 @@
Var("coord", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1),
+ create<ast::GroupDecoration>(1),
});
td.RegisterVariableForTesting(coord_var);
@@ -723,7 +723,7 @@
Var("coord", ast::StorageClass::kUniform, ty.vec4<f32>(), nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1),
+ create<ast::GroupDecoration>(1),
});
td.RegisterVariableForTesting(coord_var);
@@ -781,7 +781,7 @@
Var("coord", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1),
+ create<ast::GroupDecoration>(1),
});
td.RegisterVariableForTesting(coord_var);
@@ -969,7 +969,7 @@
// [[block]] struct Data {
// [[offset(0)]] d : f32;
// };
- // [[binding(0), set(0)]] var<storage_buffer> data : Data;
+ // [[binding(0), group(0)]] var<storage_buffer> data : Data;
//
// [[stage(compute)]]
// fn a() -> void {
@@ -991,7 +991,7 @@
auto* data_var = Var("data", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(0),
+ create<ast::GroupDecoration>(0),
});
mod->AddConstructedType(s);
diff --git a/src/writer/msl/generator_impl_function_test.cc b/src/writer/msl/generator_impl_function_test.cc
index 210d202..0c3cd3b 100644
--- a/src/writer/msl/generator_impl_function_test.cc
+++ b/src/writer/msl/generator_impl_function_test.cc
@@ -19,6 +19,7 @@
#include "src/ast/call_expression.h"
#include "src/ast/float_literal.h"
#include "src/ast/function.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/identifier_expression.h"
#include "src/ast/if_statement.h"
#include "src/ast/location_decoration.h"
@@ -27,7 +28,6 @@
#include "src/ast/pipeline_stage.h"
#include "src/ast/return_statement.h"
#include "src/ast/scalar_constructor_expression.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/sint_literal.h"
#include "src/ast/stage_decoration.h"
#include "src/ast/struct.h"
@@ -287,7 +287,7 @@
auto* coord_var =
Var("coord", ast::StorageClass::kUniform, ty.vec4<f32>(), nullptr,
ast::VariableDecorationList{create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1)});
+ create<ast::GroupDecoration>(1)});
td.RegisterVariableForTesting(coord_var);
@@ -336,7 +336,7 @@
auto* coord_var =
Var("coord", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1)});
+ create<ast::GroupDecoration>(1)});
td.RegisterVariableForTesting(coord_var);
@@ -388,7 +388,7 @@
auto* coord_var =
Var("coord", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1)});
+ create<ast::GroupDecoration>(1)});
td.RegisterVariableForTesting(coord_var);
mod->AddGlobalVariable(coord_var);
@@ -629,7 +629,7 @@
auto* coord_var =
Var("coord", ast::StorageClass::kUniform, ty.vec4<f32>(), nullptr,
ast::VariableDecorationList{create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1)});
+ create<ast::GroupDecoration>(1)});
td.RegisterVariableForTesting(coord_var);
mod->AddGlobalVariable(coord_var);
@@ -693,7 +693,7 @@
auto* coord_var =
Var("coord", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1)});
+ create<ast::GroupDecoration>(1)});
td.RegisterVariableForTesting(coord_var);
mod->AddGlobalVariable(coord_var);
@@ -760,7 +760,7 @@
auto* coord_var =
Var("coord", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1)});
+ create<ast::GroupDecoration>(1)});
td.RegisterVariableForTesting(coord_var);
mod->AddGlobalVariable(coord_var);
@@ -914,7 +914,7 @@
// [[block]] struct Data {
// [[offset(0)]] d : f32;
// };
- // [[binding(0), set(0)]] var<storage_buffer> data : Data;
+ // [[binding(0), group(0)]] var<storage_buffer> data : Data;
//
// [[stage(compute)]]
// fn a() -> void {
@@ -938,7 +938,7 @@
auto* data_var =
Var("data", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(0)});
+ create<ast::GroupDecoration>(0)});
mod->AddConstructedType(s);
td.RegisterVariableForTesting(data_var);
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index e6d11fd..a37daf1 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -37,6 +37,7 @@
#include "src/ast/else_statement.h"
#include "src/ast/fallthrough_statement.h"
#include "src/ast/float_literal.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/identifier_expression.h"
#include "src/ast/if_statement.h"
#include "src/ast/intrinsic.h"
@@ -46,7 +47,6 @@
#include "src/ast/null_literal.h"
#include "src/ast/return_statement.h"
#include "src/ast/scalar_constructor_expression.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/sint_literal.h"
#include "src/ast/struct.h"
#include "src/ast/struct_member.h"
@@ -816,10 +816,10 @@
push_annot(spv::Op::OpDecorate,
{Operand::Int(var_id), Operand::Int(SpvDecorationBinding),
Operand::Int(binding->value())});
- } else if (auto* set = deco->As<ast::SetDecoration>()) {
+ } else if (auto* group = deco->As<ast::GroupDecoration>()) {
push_annot(spv::Op::OpDecorate, {Operand::Int(var_id),
Operand::Int(SpvDecorationDescriptorSet),
- Operand::Int(set->value())});
+ Operand::Int(group->value())});
} else if (deco->Is<ast::ConstantIdDecoration>()) {
// Spec constants are handled elsewhere
} else {
diff --git a/src/writer/spirv/builder_function_test.cc b/src/writer/spirv/builder_function_test.cc
index a50017b..8c19bb3 100644
--- a/src/writer/spirv/builder_function_test.cc
+++ b/src/writer/spirv/builder_function_test.cc
@@ -198,7 +198,7 @@
// [[block]] struct Data {
// [[offset(0)]] d : f32;
// };
- // [[binding(0), set(0)]] var<storage_buffer> data : Data;
+ // [[binding(0), group(0)]] var<storage_buffer> data : Data;
//
// [[stage(compute)]]
// fn a() -> void {
@@ -222,7 +222,7 @@
auto* data_var = Var("data", ast::StorageClass::kStorageBuffer, &ac, nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(0),
+ create<ast::GroupDecoration>(0),
});
mod->AddConstructedType(s);
diff --git a/src/writer/spirv/builder_function_variable_test.cc b/src/writer/spirv/builder_function_variable_test.cc
index fef4b90..a113faa 100644
--- a/src/writer/spirv/builder_function_variable_test.cc
+++ b/src/writer/spirv/builder_function_variable_test.cc
@@ -20,9 +20,9 @@
#include "src/ast/builtin.h"
#include "src/ast/builtin_decoration.h"
#include "src/ast/float_literal.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/location_decoration.h"
#include "src/ast/scalar_constructor_expression.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/storage_class.h"
#include "src/ast/struct.h"
#include "src/ast/type/access_control_type.h"
diff --git a/src/writer/spirv/builder_global_variable_test.cc b/src/writer/spirv/builder_global_variable_test.cc
index 8d3585b..d05beb2 100644
--- a/src/writer/spirv/builder_global_variable_test.cc
+++ b/src/writer/spirv/builder_global_variable_test.cc
@@ -21,10 +21,10 @@
#include "src/ast/builtin_decoration.h"
#include "src/ast/constant_id_decoration.h"
#include "src/ast/float_literal.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/location_decoration.h"
#include "src/ast/module.h"
#include "src/ast/scalar_constructor_expression.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/storage_class.h"
#include "src/ast/struct.h"
#include "src/ast/type/access_control_type.h"
@@ -194,11 +194,11 @@
)");
}
-TEST_F(BuilderTest, GlobalVar_WithBindingAndSet) {
+TEST_F(BuilderTest, GlobalVar_WithBindingAndGroup) {
auto* v = Var("var", ast::StorageClass::kOutput, ty.f32, nullptr,
ast::VariableDecorationList{
create<ast::BindingDecoration>(2),
- create<ast::SetDecoration>(3),
+ create<ast::GroupDecoration>(3),
});
EXPECT_TRUE(b.GenerateGlobalVariable(v)) << b.error();
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc
index aabb8fd..a0f2c6c 100644
--- a/src/writer/wgsl/generator_impl.cc
+++ b/src/writer/wgsl/generator_impl.cc
@@ -34,6 +34,7 @@
#include "src/ast/continue_statement.h"
#include "src/ast/else_statement.h"
#include "src/ast/float_literal.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/identifier_expression.h"
#include "src/ast/if_statement.h"
#include "src/ast/location_decoration.h"
@@ -41,7 +42,6 @@
#include "src/ast/member_accessor_expression.h"
#include "src/ast/return_statement.h"
#include "src/ast/scalar_constructor_expression.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/sint_literal.h"
#include "src/ast/stage_decoration.h"
#include "src/ast/statement.h"
@@ -620,8 +620,8 @@
if (auto* binding = deco->As<ast::BindingDecoration>()) {
out_ << "binding(" << binding->value() << ")";
- } else if (auto* set = deco->As<ast::SetDecoration>()) {
- out_ << "set(" << set->value() << ")";
+ } else if (auto* group = deco->As<ast::GroupDecoration>()) {
+ out_ << "group(" << group->value() << ")";
} else if (auto* location = deco->As<ast::LocationDecoration>()) {
out_ << "location(" << location->value() << ")";
} else if (auto* builtin = deco->As<ast::BuiltinDecoration>()) {
diff --git a/src/writer/wgsl/generator_impl_function_test.cc b/src/writer/wgsl/generator_impl_function_test.cc
index 37d61cb..e3cf06e 100644
--- a/src/writer/wgsl/generator_impl_function_test.cc
+++ b/src/writer/wgsl/generator_impl_function_test.cc
@@ -153,7 +153,7 @@
// [[block]] struct Data {
// [[offset(0)]] d : f32;
// };
- // [[binding(0), set(0)]] var<storage_buffer> data : Data;
+ // [[binding(0), group(0)]] var<storage_buffer> data : Data;
//
// [[stage(compute)]]
// fn a() -> void {
@@ -178,7 +178,7 @@
ast::VariableDecorationList{
// decorations
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(0),
+ create<ast::GroupDecoration>(0),
});
mod->AddConstructedType(s);
@@ -233,7 +233,7 @@
d : f32;
};
-[[binding(0), set(0)]] var<storage_buffer> data : [[access(read_write)]]
+[[binding(0), group(0)]] var<storage_buffer> data : [[access(read_write)]]
Data;
[[stage(compute)]]
diff --git a/src/writer/wgsl/generator_impl_variable_test.cc b/src/writer/wgsl/generator_impl_variable_test.cc
index 52a7542..501c880 100644
--- a/src/writer/wgsl/generator_impl_variable_test.cc
+++ b/src/writer/wgsl/generator_impl_variable_test.cc
@@ -18,8 +18,8 @@
#include "src/ast/binding_decoration.h"
#include "src/ast/builtin_decoration.h"
#include "src/ast/constant_id_decoration.h"
+#include "src/ast/group_decoration.h"
#include "src/ast/location_decoration.h"
-#include "src/ast/set_decoration.h"
#include "src/ast/type/f32_type.h"
#include "src/ast/variable.h"
#include "src/ast/variable_decoration.h"
@@ -65,7 +65,7 @@
ast::VariableDecorationList{
create<ast::BuiltinDecoration>(ast::Builtin::kPosition),
create<ast::BindingDecoration>(0),
- create<ast::SetDecoration>(1),
+ create<ast::GroupDecoration>(1),
create<ast::LocationDecoration>(2),
create<ast::ConstantIdDecoration>(42),
});
@@ -73,7 +73,7 @@
ASSERT_TRUE(gen.EmitVariable(v)) << gen.error();
EXPECT_EQ(
gen.result(),
- R"([[builtin(position), binding(0), set(1), location(2), constant_id(42)]] var a : f32;
+ R"([[builtin(position), binding(0), group(1), location(2), constant_id(42)]] var a : f32;
)");
}
diff --git a/test/compute_boids.wgsl b/test/compute_boids.wgsl
index 9b0059e..db76200 100644
--- a/test/compute_boids.wgsl
+++ b/test/compute_boids.wgsl
@@ -56,9 +56,9 @@
[[offset(0)]] particles : [[stride(16)]] array<Particle, 5>;
};
-[[binding(0), set(0)]] var<uniform> params : [[access(read)]] SimParams;
-[[binding(1), set(0)]] var<storage_buffer> particlesA : [[access(read_write)]] Particles;
-[[binding(2), set(0)]] var<storage_buffer> particlesB : [[access(read_write)]] Particles;
+[[binding(0), group(0)]] var<uniform> params : [[access(read)]] SimParams;
+[[binding(1), group(0)]] var<storage_buffer> particlesA : [[access(read_write)]] Particles;
+[[binding(2), group(0)]] var<storage_buffer> particlesB : [[access(read_write)]] Particles;
[[builtin(global_invocation_id)]] var<in> gl_GlobalInvocationID : vec3<u32>;
diff --git a/test/cube.wgsl b/test/cube.wgsl
index 0e0377b..908756c 100644
--- a/test/cube.wgsl
+++ b/test/cube.wgsl
@@ -17,7 +17,7 @@
[[offset(0)]] modelViewProjectionMatrix : mat4x4<f32>;
};
-[[binding(0), set(0)]] var<uniform> uniforms : [[access(read)]] Uniforms;
+[[binding(0), group(0)]] var<uniform> uniforms : [[access(read)]] Uniforms;
[[location(0)]] var<in> cur_position : vec4<f32>;
[[location(1)]] var<in> color : vec4<f32>;