mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-10 22:17:51 +00:00
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>
This commit is contained in:
committed by
Commit Bot service account
parent
0e17caa361
commit
c068cfc139
@@ -76,8 +76,8 @@ ast::Variable* clone_variable_with_new_name(ast::CloneContext* ctx,
|
||||
|
||||
} // 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 @@ ast::Variable* FirstIndexOffset::AddUniformBuffer(ast::Module* mod) {
|
||||
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);
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace transform {
|
||||
/// [[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 @@ class FirstIndexOffset : public Transform {
|
||||
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 @@ class FirstIndexOffset : public Transform {
|
||||
ast::Module* module);
|
||||
|
||||
uint32_t binding_;
|
||||
uint32_t set_;
|
||||
uint32_t group_;
|
||||
|
||||
bool has_vertex_index_ = false;
|
||||
bool has_instance_index_ = false;
|
||||
|
||||
@@ -83,7 +83,7 @@ struct TintFirstIndexOffsetData {
|
||||
};
|
||||
|
||||
[[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 @@ struct TintFirstIndexOffsetData {
|
||||
};
|
||||
|
||||
[[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 @@ struct TintFirstIndexOffsetData {
|
||||
|
||||
[[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 @@ struct TintFirstIndexOffsetData {
|
||||
};
|
||||
|
||||
[[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);
|
||||
|
||||
@@ -65,8 +65,12 @@ void VertexPulling::SetEntryPoint(std::string entry_point) {
|
||||
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 @@ void VertexPulling::State::AddVertexStorageBuffers() {
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -151,8 +151,13 @@ class VertexPulling : public Transform {
|
||||
|
||||
/// 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 @@ class VertexPulling : public Transform {
|
||||
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;
|
||||
|
||||
@@ -134,7 +134,7 @@ struct TintVertexData {
|
||||
};
|
||||
|
||||
[[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 @@ struct TintVertexData {
|
||||
};
|
||||
|
||||
[[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 @@ struct TintVertexData {
|
||||
};
|
||||
|
||||
[[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 @@ struct TintVertexData {
|
||||
_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 @@ struct TintVertexData {
|
||||
};
|
||||
|
||||
[[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 @@ struct TintVertexData {
|
||||
};
|
||||
|
||||
[[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>;
|
||||
|
||||
Reference in New Issue
Block a user