mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-05 11:45:54 +00:00
In order to avoid declaring too many function parameters, we previously modified this transform to redeclare private variables that are only used inside a single function as function-scope variables. This was broken as it meant that their values did not persist across multiple calls to the same function. Instead, wrap all private variables in a structure and pass it around as a pointer. Fixed: tint:1875 Change-Id: I83f5eb1071d57b9c6af56d6cf21b3a32c6e94260 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/124800 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: James Price <jrprice@google.com>
27 lines
419 B
WebGPU Shading Language
27 lines
419 B
WebGPU Shading Language
struct Outputs {
|
|
data : array<u32>,
|
|
}
|
|
|
|
var<private> count : u32 = 0;
|
|
|
|
@group(0) @binding(1) var<storage, read_write> outputs : Outputs;
|
|
|
|
fn push_output(value : u32) {
|
|
outputs.data[count] = value;
|
|
count += 1;
|
|
}
|
|
|
|
@compute @workgroup_size(1)
|
|
fn main() {
|
|
_ = &(outputs);
|
|
var a : u32 = 0;
|
|
var b : u32 = 10;
|
|
var c : u32 = 4294967294;
|
|
a++;
|
|
b++;
|
|
c++;
|
|
push_output(a);
|
|
push_output(b);
|
|
push_output(c);
|
|
}
|