wgsl: Replace [[decoration]] with @decoration

Deprecate the old syntax. Migrate everything to the new syntax.

Bug: tint:1382
Change-Id: Ide12b2e927b17dc93b9714c7049090864cc568d3
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/77260
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: David Neto <dneto@google.com>
This commit is contained in:
Ben Clayton
2022-01-19 22:46:57 +00:00
committed by Tint LUCI CQ
parent 8f1d5224ee
commit 01e4b6fc18
3200 changed files with 15906 additions and 15215 deletions

View File

@@ -1,19 +1,19 @@
struct VertexInputs0 {
[[builtin(vertex_index)]] vertex_index : u32;
[[location(0)]] loc0 : i32;
@builtin(vertex_index) vertex_index : u32;
@location(0) loc0 : i32;
};
struct VertexInputs1 {
[[location(2)]] loc1 : u32;
[[location(3)]] loc3 : vec4<f32>;
@location(2) loc1 : u32;
@location(3) loc3 : vec4<f32>;
};
[[stage(vertex)]]
@stage(vertex)
fn main(
inputs0 : VertexInputs0,
[[location(1)]] loc1 : u32,
[[builtin(instance_index)]] instance_index : u32,
@location(1) loc1 : u32,
@builtin(instance_index) instance_index : u32,
inputs1 : VertexInputs1,
) -> [[builtin(position)]] vec4<f32> {
) -> @builtin(position) vec4<f32> {
let foo : u32 = inputs0.vertex_index + instance_index;
return vec4<f32>();
}

View File

@@ -1,19 +1,19 @@
struct VertexInputs0 {
[[builtin(vertex_index)]]
@builtin(vertex_index)
vertex_index : u32;
[[location(0)]]
@location(0)
loc0 : i32;
}
struct VertexInputs1 {
[[location(2)]]
@location(2)
loc1 : u32;
[[location(3)]]
@location(3)
loc3 : vec4<f32>;
}
[[stage(vertex)]]
fn main(inputs0 : VertexInputs0, [[location(1)]] loc1 : u32, [[builtin(instance_index)]] instance_index : u32, inputs1 : VertexInputs1) -> [[builtin(position)]] vec4<f32> {
@stage(vertex)
fn main(inputs0 : VertexInputs0, @location(1) loc1 : u32, @builtin(instance_index) instance_index : u32, inputs1 : VertexInputs1) -> @builtin(position) vec4<f32> {
let foo : u32 = (inputs0.vertex_index + instance_index);
return vec4<f32>();
}

View File

@@ -1,6 +1,6 @@
// /fallthroUgh]
fn marg8uintin() {
_ = (0 );
_ = (0 );
_ = isNormal(4.);
_ = (vec4<f32>( 2.));
@@ -37,36 +37,36 @@ struct Dbg {
};
struct F32s {
values : [[stride(4)]] array<f32>;
values : @stride(4) array<f32>;
};
struct U32s {
values : [[stride(4)]] array<u32>;
values : @stride(4) array<u32>;
};
struct I32s {
values : [[stride(4)]] array<i32>;
values : @stride(4) array<i32>;
};
struct AU32s {
values : [[stride(4)]] array<atomic<u32>>;
values : @stride(4) array<atomic<u32>>;
};
struct AI32s {
values : [[stride(4)]] array<atomic<i32>>;
values : @stride(4) array<atomic<i32>>;
};
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
@binding(10) @group(0) var<storage, read_write> indices : U32s;
[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
@binding(11) @group(0) var<storage, read_write> positions : F32s;
[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
@binding(20) @group(0) var<storage, read_write> counters : AU32s;
[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
@@ -106,8 +106,8 @@ fn doIgnore() {
var g55 = atomicLoad(&(LUT.values[0]));
}
[[stage(compute), workgroup_size(128)]]
fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(128)
fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var triangleIndex = GlobalInvocationID.x;
if ((triangleIndex >= uniforms.numTriangles)) {
return;

View File

@@ -54,36 +54,36 @@ struct Dbg {
}
struct F32s {
values : [[stride(4)]] array<f32>;
values : @stride(4) array<f32>;
}
struct U32s {
values : [[stride(4)]] array<u32>;
values : @stride(4) array<u32>;
}
struct I32s {
values : [[stride(4)]] array<i32>;
values : @stride(4) array<i32>;
}
struct AU32s {
values : [[stride(4)]] array<atomic<u32>>;
values : @stride(4) array<atomic<u32>>;
}
struct AI32s {
values : [[stride(4)]] array<atomic<i32>>;
values : @stride(4) array<atomic<i32>>;
}
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
@binding(10) @group(0) var<storage, read_write> indices : U32s;
[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
@binding(11) @group(0) var<storage, read_write> positions : F32s;
[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
@binding(20) @group(0) var<storage, read_write> counters : AU32s;
[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
@@ -123,8 +123,8 @@ fn doIgnore() {
var g55 = atomicLoad(&(LUT.values[0]));
}
[[stage(compute), workgroup_size(128)]]
fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(128)
fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var triangleIndex = GlobalInvocationID.x;
if ((triangleIndex >= uniforms.numTriangles)) {
return;

View File

@@ -2,15 +2,15 @@
u_scale : vec2<f32>;
u_offset : vec2<f32>;
};
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
struct VertexOutputs {
[[location(0)]] texcoords : vec2<f32>;
[[builtin(position)]] position : vec4<f32>;
@location(0) texcoords : vec2<f32>;
@builtin(position) position : vec4<f32>;
};
[[stage(vertex)]] fn vs_main(
[[builtin(vertex_index)]] VertexIndex : u32
@stage(vertex) fn vs_main(
@builtin(vertex_index) VertexIndex : u32
) -> VertexOutputs {
var texcoord = array<vec2<f32>, 3>(
vec2<f32>(-0.5, 0.0),
@@ -43,12 +43,12 @@ struct VertexOutputs {
return output;
}
[[binding(1), group(0)]] var mySampler: sampler;
[[binding(2), group(0)]] var myTexture: texture_2d<f32>;
@binding(1) @group(0) var mySampler: sampler;
@binding(2) @group(0) var myTexture: texture_2d<f32>;
[[stage(fragment)]] fn fs_main(
[[location(0)]] texcoord : vec2<f32>
) -> [[location(0)]] vec4<f32> {
@stage(fragment) fn fs_main(
@location(0) texcoord : vec2<f32>
) -> @location(0) vec4<f32> {
// Clamp the texcoord and discard the out-of-bound pixels.
var clampedTexcoord =
clamp(texcoord, vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 1.0));

View File

@@ -3,17 +3,17 @@ struct Uniforms {
u_offset : vec2<f32>;
}
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
struct VertexOutputs {
[[location(0)]]
@location(0)
texcoords : vec2<f32>;
[[builtin(position)]]
@builtin(position)
position : vec4<f32>;
}
[[stage(vertex)]]
fn vs_main([[builtin(vertex_index)]] VertexIndex : u32) -> VertexOutputs {
@stage(vertex)
fn vs_main(@builtin(vertex_index) VertexIndex : u32) -> VertexOutputs {
var texcoord = array<vec2<f32>, 3>(vec2<f32>(-0.5, 0.0), vec2<f32>(1.5, 0.0), vec2<f32>(0.5, 2.0));
var output : VertexOutputs;
output.position = vec4<f32>(((texcoord[VertexIndex] * 2.0) - vec2<f32>(1.0, 1.0)), 0.0, 1.0);
@@ -26,12 +26,12 @@ fn vs_main([[builtin(vertex_index)]] VertexIndex : u32) -> VertexOutputs {
return output;
}
[[binding(1), group(0)]] var mySampler : sampler;
@binding(1) @group(0) var mySampler : sampler;
[[binding(2), group(0)]] var myTexture : texture_2d<f32>;
@binding(2) @group(0) var myTexture : texture_2d<f32>;
[[stage(fragment)]]
fn fs_main([[location(0)]] texcoord : vec2<f32>) -> [[location(0)]] vec4<f32> {
@stage(fragment)
fn fs_main(@location(0) texcoord : vec2<f32>) -> @location(0) vec4<f32> {
var clampedTexcoord = clamp(texcoord, vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 1.0));
if (!(all((clampedTexcoord == texcoord)))) {
discard;

View File

@@ -1,16 +1,16 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct S {
data: array<i32, 64>;
};
struct Result {
out: i32;
};
[[group(0), binding(1)]] var<storage, read_write> result: Result;
@group(0) @binding(1) var<storage, read_write> result: Result;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
var s : S;
result.out = s.data[ubo.dynamic_idx];

View File

@@ -2,7 +2,7 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct S {
data : array<i32, 64>;
@@ -12,9 +12,9 @@ struct Result {
out : i32;
}
[[group(0), binding(1)]] var<storage, read_write> result : Result;
@group(0) @binding(1) var<storage, read_write> result : Result;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
var s : S;
result.out = s.data[ubo.dynamic_idx];

View File

@@ -1,18 +1,18 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct S {
data: array<i32, 64>;
};
struct Result {
out: i32;
};
[[group(0), binding(1)]] var<storage, read_write> result: Result;
@group(0) @binding(1) var<storage, read_write> result: Result;
var<private> s : S;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
result.out = s.data[ubo.dynamic_idx];
}

View File

@@ -2,7 +2,7 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct S {
data : array<i32, 64>;
@@ -12,11 +12,11 @@ struct Result {
out : i32;
}
[[group(0), binding(1)]] var<storage, read_write> result : Result;
@group(0) @binding(1) var<storage, read_write> result : Result;
var<private> s : S;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
result.out = s.data[ubo.dynamic_idx];
}

View File

@@ -1,18 +1,18 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct Result {
out: i32;
};
[[group(0), binding(2)]] var<storage, read_write> result: Result;
@group(0) @binding(2) var<storage, read_write> result: Result;
struct SSBO {
data: array<i32, 4>;
};
[[group(0), binding(1)]] var<storage, read_write> ssbo: SSBO;
@group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
result.out = ssbo.data[ubo.dynamic_idx];
}

View File

@@ -2,21 +2,21 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct Result {
out : i32;
}
[[group(0), binding(2)]] var<storage, read_write> result : Result;
@group(0) @binding(2) var<storage, read_write> result : Result;
struct SSBO {
data : array<i32, 4>;
}
[[group(0), binding(1)]] var<storage, read_write> ssbo : SSBO;
@group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
result.out = ssbo.data[ubo.dynamic_idx];
}

View File

@@ -1,14 +1,14 @@
struct UBO {
data: [[stride(16)]] array<i32, 4>;
data: @stride(16) array<i32, 4>;
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct Result {
out: i32;
};
[[group(0), binding(2)]] var<storage, read_write> result: Result;
@group(0) @binding(2) var<storage, read_write> result: Result;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
result.out = ubo.data[ubo.dynamic_idx];
}

View File

@@ -1,17 +1,17 @@
struct UBO {
data : [[stride(16)]] array<i32, 4>;
data : @stride(16) array<i32, 4>;
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct Result {
out : i32;
}
[[group(0), binding(2)]] var<storage, read_write> result : Result;
@group(0) @binding(2) var<storage, read_write> result : Result;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
result.out = ubo.data[ubo.dynamic_idx];
}

View File

@@ -1,18 +1,18 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct S {
data: array<i32, 64>;
};
struct Result {
out: i32;
};
[[group(0), binding(1)]] var<storage, read_write> result: Result;
@group(0) @binding(1) var<storage, read_write> result: Result;
var<workgroup> s : S;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
result.out = s.data[ubo.dynamic_idx];
}

View File

@@ -2,7 +2,7 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct S {
data : array<i32, 64>;
@@ -12,11 +12,11 @@ struct Result {
out : i32;
}
[[group(0), binding(1)]] var<storage, read_write> result : Result;
@group(0) @binding(1) var<storage, read_write> result : Result;
var<workgroup> s : S;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
result.out = s.data[ubo.dynamic_idx];
}

View File

@@ -1,16 +1,16 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct S {
data: array<i32, 64>;
};
struct Result {
out: i32;
};
[[group(0), binding(1)]] var<storage, read_write> result: Result;
@group(0) @binding(1) var<storage, read_write> result: Result;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
var s : S;
s.data[ubo.dynamic_idx] = 1;

View File

@@ -2,7 +2,7 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct S {
data : array<i32, 64>;
@@ -12,9 +12,9 @@ struct Result {
out : i32;
}
[[group(0), binding(1)]] var<storage, read_write> result : Result;
@group(0) @binding(1) var<storage, read_write> result : Result;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
var s : S;
s.data[ubo.dynamic_idx] = 1;

View File

@@ -1,20 +1,20 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct S {
data: array<i32, 64>;
};
struct Result {
out: i32;
};
[[group(0), binding(1)]] var<storage, read_write> result: Result;
@group(0) @binding(1) var<storage, read_write> result: Result;
fn x(p : ptr<function, S>) {
(*p).data[ubo.dynamic_idx] = 1;
}
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
var s : S;
x(&s);

View File

@@ -2,7 +2,7 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct S {
data : array<i32, 64>;
@@ -12,13 +12,13 @@ struct Result {
out : i32;
}
[[group(0), binding(1)]] var<storage, read_write> result : Result;
@group(0) @binding(1) var<storage, read_write> result : Result;
fn x(p : ptr<function, S>) {
(*(p)).data[ubo.dynamic_idx] = 1;
}
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
var s : S;
x(&(s));

View File

@@ -1,18 +1,18 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct S {
data: array<i32, 64>;
};
struct Result {
out: i32;
};
[[group(0), binding(1)]] var<storage, read_write> result: Result;
@group(0) @binding(1) var<storage, read_write> result: Result;
var<private> s : S;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
s.data[ubo.dynamic_idx] = 1;
result.out = s.data[3];

View File

@@ -2,7 +2,7 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct S {
data : array<i32, 64>;
@@ -12,11 +12,11 @@ struct Result {
out : i32;
}
[[group(0), binding(1)]] var<storage, read_write> result : Result;
@group(0) @binding(1) var<storage, read_write> result : Result;
var<private> s : S;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
s.data[ubo.dynamic_idx] = 1;
result.out = s.data[3];

View File

@@ -1,14 +1,14 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct S {
data: array<i32, 64>;
};
struct Result {
out: i32;
};
[[group(0), binding(1)]] var<storage, read_write> result: Result;
@group(0) @binding(1) var<storage, read_write> result: Result;
var<private> s : S;
@@ -16,7 +16,7 @@ fn x(p : ptr<private, S>) {
(*p).data[ubo.dynamic_idx] = 1;
}
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
x(&s);
result.out = s.data[3];

View File

@@ -2,7 +2,7 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct S {
data : array<i32, 64>;
@@ -12,7 +12,7 @@ struct Result {
out : i32;
}
[[group(0), binding(1)]] var<storage, read_write> result : Result;
@group(0) @binding(1) var<storage, read_write> result : Result;
var<private> s : S;
@@ -20,7 +20,7 @@ fn x(p : ptr<private, S>) {
(*(p)).data[ubo.dynamic_idx] = 1;
}
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
x(&(s));
result.out = s.data[3];

View File

@@ -1,18 +1,18 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct Result {
out: i32;
};
[[group(0), binding(2)]] var<storage, read_write> result: Result;
@group(0) @binding(2) var<storage, read_write> result: Result;
struct SSBO {
data: array<i32, 4>;
};
[[group(0), binding(1)]] var<storage, read_write> ssbo: SSBO;
@group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
ssbo.data[ubo.dynamic_idx] = 1;
result.out = ssbo.data[3];

View File

@@ -2,21 +2,21 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct Result {
out : i32;
}
[[group(0), binding(2)]] var<storage, read_write> result : Result;
@group(0) @binding(2) var<storage, read_write> result : Result;
struct SSBO {
data : array<i32, 4>;
}
[[group(0), binding(1)]] var<storage, read_write> ssbo : SSBO;
@group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
ssbo.data[ubo.dynamic_idx] = 1;
result.out = ssbo.data[3];

View File

@@ -1,18 +1,18 @@
struct UBO {
dynamic_idx: i32;
};
[[group(0), binding(0)]] var<uniform> ubo: UBO;
@group(0) @binding(0) var<uniform> ubo: UBO;
struct S {
data: array<i32, 64>;
};
struct Result {
out: i32;
};
[[group(0), binding(1)]] var<storage, read_write> result: Result;
@group(0) @binding(1) var<storage, read_write> result: Result;
var<workgroup> s : S;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
s.data[ubo.dynamic_idx] = 1;
result.out = s.data[3];

View File

@@ -2,7 +2,7 @@ struct UBO {
dynamic_idx : i32;
}
[[group(0), binding(0)]] var<uniform> ubo : UBO;
@group(0) @binding(0) var<uniform> ubo : UBO;
struct S {
data : array<i32, 64>;
@@ -12,11 +12,11 @@ struct Result {
out : i32;
}
[[group(0), binding(1)]] var<storage, read_write> result : Result;
@group(0) @binding(1) var<storage, read_write> result : Result;
var<workgroup> s : S;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
s.data[ubo.dynamic_idx] = 1;
result.out = s.data[3];

View File

@@ -1,10 +1,10 @@
// 1112.wgsl
[[group(0), binding(0)]] var Sampler: sampler;
[[group(0), binding(1)]] var randomTexture: texture_2d<f32>;
[[group(0), binding(2)]] var depthTexture: texture_2d<f32>;
@group(0) @binding(0) var Sampler: sampler;
@group(0) @binding(1) var randomTexture: texture_2d<f32>;
@group(0) @binding(2) var depthTexture: texture_2d<f32>;
[[stage(fragment)]]
fn main([[location(0)]] vUV : vec2<f32>) -> [[location(0)]] vec4<f32> {
@stage(fragment)
fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
let random: vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
var i = 0;

View File

@@ -1,11 +1,11 @@
[[group(0), binding(0)]] var Sampler : sampler;
@group(0) @binding(0) var Sampler : sampler;
[[group(0), binding(1)]] var randomTexture : texture_2d<f32>;
@group(0) @binding(1) var randomTexture : texture_2d<f32>;
[[group(0), binding(2)]] var depthTexture : texture_2d<f32>;
@group(0) @binding(2) var depthTexture : texture_2d<f32>;
[[stage(fragment)]]
fn main([[location(0)]] vUV : vec2<f32>) -> [[location(0)]] vec4<f32> {
@stage(fragment)
fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
let random : vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
var i = 0;
loop {

View File

@@ -13,10 +13,10 @@ struct Particles {
p : array<Particle>;
};
[[group(1), binding(3)]] var<storage, read> particles : Particles;
[[group(1), binding(4)]] var<uniform> sim : Simulation;
@group(1) @binding(3) var<storage, read> particles : Particles;
@group(1) @binding(4) var<uniform> sim : Simulation;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var particle = particles.p[0];
particle.position[sim.i] = particle.position[sim.i];

View File

@@ -13,11 +13,11 @@ struct Particles {
p : array<Particle>;
}
[[group(1), binding(3)]] var<storage, read> particles : Particles;
@group(1) @binding(3) var<storage, read> particles : Particles;
[[group(1), binding(4)]] var<uniform> sim : Simulation;
@group(1) @binding(4) var<uniform> sim : Simulation;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var particle = particles.p[0];
particle.position[sim.i] = particle.position[sim.i];

View File

@@ -3,9 +3,9 @@
j : u32;
};
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var m1 : mat2x4<f32>;
m1[uniforms.i][0] = 1.0;

View File

@@ -3,9 +3,9 @@ struct Uniforms {
j : u32;
}
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var m1 : mat2x4<f32>;
m1[uniforms.i][0] = 1.0;

View File

@@ -3,9 +3,9 @@
j : u32;
};
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var m1 : mat2x4<f32>;
m1[uniforms.i][uniforms.j] = 1.0;

View File

@@ -3,9 +3,9 @@ struct Uniforms {
j : u32;
}
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var m1 : mat2x4<f32>;
m1[uniforms.i][uniforms.j] = 1.0;

View File

@@ -3,11 +3,11 @@
j : u32;
};
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[0][uniforms.j] = 1.0;
}

View File

@@ -3,11 +3,11 @@ struct Uniforms {
j : u32;
}
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[0][uniforms.j] = 1.0;
}

View File

@@ -3,9 +3,9 @@
j : u32;
};
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var m1 : mat2x4<f32>;
m1[uniforms.i] = vec4<f32>(1.0);

View File

@@ -3,9 +3,9 @@ struct Uniforms {
j : u32;
}
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var m1 : mat2x4<f32>;
m1[uniforms.i] = vec4<f32>(1.0);

View File

@@ -3,11 +3,11 @@
j : u32;
};
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[uniforms.i][0] = 1.0;
}

View File

@@ -3,11 +3,11 @@ struct Uniforms {
j : u32;
}
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[uniforms.i][0] = 1.0;
}

View File

@@ -3,11 +3,11 @@
j : u32;
};
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[uniforms.i][uniforms.j] = 1.0;
}

View File

@@ -3,11 +3,11 @@ struct Uniforms {
j : u32;
}
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[uniforms.i][uniforms.j] = 1.0;
}

View File

@@ -3,11 +3,11 @@
j : u32;
};
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[0][uniforms.j] = 1.0;
}

View File

@@ -3,11 +3,11 @@ struct Uniforms {
j : u32;
}
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[0][uniforms.j] = 1.0;
}

View File

@@ -3,11 +3,11 @@
j : u32;
};
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[uniforms.i] = vec4<f32>(1.0);
}

View File

@@ -3,11 +3,11 @@ struct Uniforms {
j : u32;
}
[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
var<private> m1 : mat2x4<f32>;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
m1[uniforms.i] = vec4<f32>(1.0);
}

View File

@@ -12,7 +12,7 @@ fn foo() {
}
}
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
for (var i : i32 = 0; i < 2; i = i + 1) {

View File

@@ -15,7 +15,7 @@ fn foo() {
}
}
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
foo();

View File

@@ -11,7 +11,7 @@ fn foo() {
v2b[i] = true;
}
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
for (var i : i32 = 0; i < 2; i = i + 1) {

View File

@@ -14,7 +14,7 @@ fn foo() {
v2b[i] = true;
}
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
foo();

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
var v2f : vec2<f32>;
var v3f : vec3<f32>;

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
var v2f : vec2<f32>;
var v3f : vec3<f32>;

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
var v2f : vec2<f32>;
var v2f_2 : vec2<f32>;

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
var v2f : vec2<f32>;
var v2f_2 : vec2<f32>;

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
var v2f : vec2<f32>;
var v3f : vec3<f32>;

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
var v2f : vec2<f32>;
var v3f : vec3<f32>;

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
var v2f : vec2<f32>;
var v3f : vec3<f32>;

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
var v2f : vec2<f32>;
var v3f : vec3<f32>;

View File

@@ -4,7 +4,7 @@ struct PointLight {
};
struct PointLights {
values : [[stride(16)]] array<PointLight>;
values : @stride(16) array<PointLight>;
};
struct Uniforms {
@@ -15,21 +15,21 @@ struct PointLight {
color : vec4<f32>;
};
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
[[binding(1), group(0)]] var<storage_buffer, read> pointLights : PointLights;
[[binding(2), group(0)]] var mySampler: sampler;
[[binding(3), group(0)]] var myTexture: texture_2d<f32>;
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
@binding(1) @group(0) var<storage_buffer, read> pointLights : PointLights;
@binding(2) @group(0) var mySampler: sampler;
@binding(3) @group(0) var myTexture: texture_2d<f32>;
struct FragmentInput {
[[builtin(position)]] position : vec4<f32>;
[[location(0)]] view_position : vec4<f32>;
[[location(1)]] normal : vec4<f32>;
[[location(2)]] uv : vec2<f32>;
[[location(3)]] color : vec4<f32>;
@builtin(position) position : vec4<f32>;
@location(0) view_position : vec4<f32>;
@location(1) normal : vec4<f32>;
@location(2) uv : vec2<f32>;
@location(3) color : vec4<f32>;
};
struct FragmentOutput {
[[location(0)]] color : vec4<f32>;
@location(0) color : vec4<f32>;
};
fn getColor(fragment : FragmentInput) -> vec4<f32>{
@@ -63,7 +63,7 @@ fn getColor(fragment : FragmentInput) -> vec4<f32>{
return color;
};
[[stage(fragment)]]
@stage(fragment)
fn main(fragment : FragmentInput) -> FragmentOutput {
var output : FragmentOutput;

View File

@@ -3,7 +3,7 @@ struct PointLight {
}
struct PointLights {
values : [[stride(16)]] array<PointLight>;
values : @stride(16) array<PointLight>;
}
struct Uniforms {
@@ -14,29 +14,29 @@ struct Uniforms {
color : vec4<f32>;
}
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
[[binding(1), group(0)]] var<storage, read> pointLights : PointLights;
@binding(1) @group(0) var<storage, read> pointLights : PointLights;
[[binding(2), group(0)]] var mySampler : sampler;
@binding(2) @group(0) var mySampler : sampler;
[[binding(3), group(0)]] var myTexture : texture_2d<f32>;
@binding(3) @group(0) var myTexture : texture_2d<f32>;
struct FragmentInput {
[[builtin(position)]]
@builtin(position)
position : vec4<f32>;
[[location(0)]]
@location(0)
view_position : vec4<f32>;
[[location(1)]]
@location(1)
normal : vec4<f32>;
[[location(2)]]
@location(2)
uv : vec2<f32>;
[[location(3)]]
@location(3)
color : vec4<f32>;
}
struct FragmentOutput {
[[location(0)]]
@location(0)
color : vec4<f32>;
}
@@ -55,7 +55,7 @@ fn getColor(fragment : FragmentInput) -> vec4<f32> {
return color;
}
[[stage(fragment)]]
@stage(fragment)
fn main(fragment : FragmentInput) -> FragmentOutput {
var output : FragmentOutput;
output.color = vec4<f32>(1.0, 0.0, 0.0, 1.0);

View File

@@ -1,4 +1,4 @@
[[stage(fragment)]]
@stage(fragment)
fn main() {
loop {
if (false) {

View File

@@ -1,4 +1,4 @@
[[stage(fragment)]]
@stage(fragment)
fn main() {
loop {
if (false) {

View File

@@ -1,10 +1,10 @@
struct FragIn {
[[location(0)]] a : f32;
[[builtin(sample_mask)]] mask : u32;
@location(0) a : f32;
@builtin(sample_mask) mask : u32;
};
[[stage(fragment)]]
fn main(in : FragIn, [[location(1)]] b : f32) -> FragIn {
@stage(fragment)
fn main(in : FragIn, @location(1) b : f32) -> FragIn {
if (in.mask == 0u) {
return in;
}

View File

@@ -1,12 +1,12 @@
struct FragIn {
[[location(0)]]
@location(0)
a : f32;
[[builtin(sample_mask)]]
@builtin(sample_mask)
mask : u32;
}
[[stage(fragment)]]
fn main(in : FragIn, [[location(1)]] b : f32) -> FragIn {
@stage(fragment)
fn main(in : FragIn, @location(1) b : f32) -> FragIn {
if ((in.mask == 0u)) {
return in;
}

View File

@@ -5,8 +5,8 @@ fn f(x : i32) -> i32 {
return x;
}
[[stage(fragment)]]
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
@stage(fragment)
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
var y = x.x;
loop {
let r = f(y);

View File

@@ -1,7 +1,7 @@
SKIP: FAILED
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
^
#version 310 es
@@ -51,7 +51,7 @@ void main() {
Error parsing GLSL shader:
ERROR: 0:35: 'int' : must be qualified as flat in
ERROR: 0:35: '' : compilation terminated
ERROR: 0:35: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.

View File

@@ -1,6 +1,6 @@
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
^
bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
^
int f(int x) {
if (true) {

View File

@@ -1,6 +1,6 @@
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
^
bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
^
#include <metal_stdlib>

View File

@@ -1,6 +1,6 @@
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
^
bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
^
; SPIR-V
; Version: 1.3

View File

@@ -1,6 +1,6 @@
bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
^
bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
^
fn f(x : i32) -> i32 {
if ((x == 10)) {
@@ -9,8 +9,8 @@ fn f(x : i32) -> i32 {
return x;
}
[[stage(fragment)]]
fn main([[location(1)]] x : vec3<i32>) -> [[location(2)]] i32 {
@stage(fragment)
fn main(@location(1) x : vec3<i32>) -> @location(2) i32 {
var y = x.x;
loop {
let r = f(y);

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
let a = 1;
let b = 0;

View File

@@ -1,4 +1,4 @@
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn f() {
let a = 1;
let b = 0;

View File

@@ -8,7 +8,7 @@ fn g() {
x(&v);
}
[[stage(fragment)]]
@stage(fragment)
fn f() {
g();
}

View File

@@ -8,7 +8,7 @@ fn g() {
x(&(v));
}
[[stage(fragment)]]
@stage(fragment)
fn f() {
g();
}

View File

@@ -1,11 +1,11 @@
type Arr = [[stride(64)]] array<mat4x4<f32>, 2u>;
type Arr = @stride(64) array<mat4x4<f32>, 2u>;
type Arr_1 = [[stride(16)]] array<f32, 4u>;
type Arr_1 = @stride(16) array<f32, 4u>;
struct LeftOver {
worldViewProjection : mat4x4<f32>;
time : f32;
[[size(12)]]
@size(12)
padding : u32;
test2 : Arr;
test : Arr_1;
@@ -13,7 +13,7 @@ struct LeftOver {
var<private> position : vec3<f32>;
[[group(2), binding(2)]] var<uniform> x_14 : LeftOver;
@group(2) @binding(2) var<uniform> x_14 : LeftOver;
var<private> vUV : vec2<f32>;
@@ -49,14 +49,14 @@ fn main_1() {
}
struct main_out {
[[builtin(position)]]
@builtin(position)
gl_Position : vec4<f32>;
[[location(0)]]
@location(0)
vUV_1 : vec2<f32>;
}
[[stage(vertex)]]
fn main([[location(0)]] position_param : vec3<f32>, [[location(2)]] uv_param : vec2<f32>, [[location(1)]] normal_param : vec3<f32>) -> main_out {
@stage(vertex)
fn main(@location(0) position_param : vec3<f32>, @location(2) uv_param : vec2<f32>, @location(1) normal_param : vec3<f32>) -> main_out {
position = position_param;
uv = uv_param;
normal = normal_param;

View File

@@ -23,23 +23,23 @@
value_f32_3 : f32;
};
struct F32s { values : [[stride(4)]] array<f32>; };
struct U32s { values : [[stride(4)]] array<u32>; };
struct I32s { values : [[stride(4)]] array<i32>; };
struct AU32s { values : [[stride(4)]] array<atomic<u32>>; };
struct AI32s { values : [[stride(4)]] array<atomic<i32>>; };
struct F32s { values : @stride(4) array<f32>; };
struct U32s { values : @stride(4) array<u32>; };
struct I32s { values : @stride(4) array<i32>; };
struct AU32s { values : @stride(4) array<atomic<u32>>; };
struct AI32s { values : @stride(4) array<atomic<i32>>; };
// IN
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
@binding(10) @group(0) var<storage, read_write> indices : U32s;
@binding(11) @group(0) var<storage, read_write> positions : F32s;
// OUT
[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
@binding(20) @group(0) var<storage, read_write> counters : AU32s;
@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
// DEBUG
[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
fn toVoxelPos(position : vec3<f32>) -> vec3<f32>{
@@ -95,8 +95,8 @@ fn doIgnore(){
}
[[stage(compute), workgroup_size(128)]]
fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(128)
fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var triangleIndex = GlobalInvocationID.x;
@@ -132,8 +132,8 @@ fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>)
}
[[stage(compute), workgroup_size(128)]]
fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(128)
fn main_create_lut(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var voxelIndex = GlobalInvocationID.x;
@@ -155,8 +155,8 @@ fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u
}
[[stage(compute), workgroup_size(128)]]
fn main_sort_triangles([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(128)
fn main_sort_triangles(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var triangleIndex = GlobalInvocationID.x;

View File

@@ -23,36 +23,36 @@ struct Dbg {
}
struct F32s {
values : [[stride(4)]] array<f32>;
values : @stride(4) array<f32>;
}
struct U32s {
values : [[stride(4)]] array<u32>;
values : @stride(4) array<u32>;
}
struct I32s {
values : [[stride(4)]] array<i32>;
values : @stride(4) array<i32>;
}
struct AU32s {
values : [[stride(4)]] array<atomic<u32>>;
values : @stride(4) array<atomic<u32>>;
}
struct AI32s {
values : [[stride(4)]] array<atomic<i32>>;
values : @stride(4) array<atomic<i32>>;
}
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
@binding(10) @group(0) var<storage, read_write> indices : U32s;
[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
@binding(11) @group(0) var<storage, read_write> positions : F32s;
[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
@binding(20) @group(0) var<storage, read_write> counters : AU32s;
[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
@@ -92,8 +92,8 @@ fn doIgnore() {
var g55 = atomicLoad(&(LUT.values[0]));
}
[[stage(compute), workgroup_size(128)]]
fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(128)
fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var triangleIndex = GlobalInvocationID.x;
if ((triangleIndex >= uniforms.numTriangles)) {
return;
@@ -117,8 +117,8 @@ fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>)
}
}
[[stage(compute), workgroup_size(128)]]
fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(128)
fn main_create_lut(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var voxelIndex = GlobalInvocationID.x;
doIgnore();
var maxVoxels = ((uniforms.gridSize * uniforms.gridSize) * uniforms.gridSize);
@@ -133,8 +133,8 @@ fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u
atomicStore(&(LUT.values[voxelIndex]), offset);
}
[[stage(compute), workgroup_size(128)]]
fn main_sort_triangles([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(128)
fn main_sort_triangles(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var triangleIndex = GlobalInvocationID.x;
doIgnore();
if ((triangleIndex >= uniforms.numTriangles)) {

View File

@@ -15,7 +15,7 @@ struct LightData {
struct LightsBuffer {
lights: array<LightData>;
};
[[group(0), binding(0)]] var<storage, read_write> lightsBuffer: LightsBuffer;
@group(0) @binding(0) var<storage, read_write> lightsBuffer: LightsBuffer;
struct TileLightIdData {
count: atomic<u32>;
lightId: array<u32, 64>;
@@ -23,8 +23,8 @@ struct TileLightIdData {
struct Tiles {
data: array<TileLightIdData, 4>;
};
[[group(1), binding(0)]] var<storage, read_write> tileLightId: Tiles;
@group(1) @binding(0) var<storage, read_write> tileLightId: Tiles;
struct Config {
numLights : u32;
numTiles : u32;
@@ -33,7 +33,7 @@ struct TileLightIdData {
numTileLightSlot : u32;
tileSize : u32;
};
[[group(2), binding(0)]] var<uniform> config: Config;
@group(2) @binding(0) var<uniform> config: Config;
struct Uniforms {
min : vec4<f32>;
max : vec4<f32>;
@@ -43,16 +43,16 @@ struct TileLightIdData {
// Tile info
fullScreenSize : vec4<f32>; // width, height
};
[[group(3), binding(0)]] var<uniform> uniforms: Uniforms;
[[stage(compute), workgroup_size(64, 1, 1)]]
fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@group(3) @binding(0) var<uniform> uniforms: Uniforms;
@stage(compute) @workgroup_size(64, 1, 1)
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var index = GlobalInvocationID.x;
if (index >= config.numLights) {
return;
}
// Light position updating
lightsBuffer.lights[index].position.y = lightsBuffer.lights[index].position.y - 0.1 + 0.001 * (f32(index) - 64.0 * floor(f32(index) / 64.0));
if (lightsBuffer.lights[index].position.y < uniforms.min.y) {
lightsBuffer.lights[index].position.y = uniforms.max.y;
}

View File

@@ -8,7 +8,7 @@ struct LightsBuffer {
lights : array<LightData>;
}
[[group(0), binding(0)]] var<storage, read_write> lightsBuffer : LightsBuffer;
@group(0) @binding(0) var<storage, read_write> lightsBuffer : LightsBuffer;
struct TileLightIdData {
count : atomic<u32>;
@@ -19,7 +19,7 @@ struct Tiles {
data : array<TileLightIdData, 4>;
}
[[group(1), binding(0)]] var<storage, read_write> tileLightId : Tiles;
@group(1) @binding(0) var<storage, read_write> tileLightId : Tiles;
struct Config {
numLights : u32;
@@ -30,7 +30,7 @@ struct Config {
tileSize : u32;
}
[[group(2), binding(0)]] var<uniform> config : Config;
@group(2) @binding(0) var<uniform> config : Config;
struct Uniforms {
min : vec4<f32>;
@@ -40,10 +40,10 @@ struct Uniforms {
fullScreenSize : vec4<f32>;
}
[[group(3), binding(0)]] var<uniform> uniforms : Uniforms;
@group(3) @binding(0) var<uniform> uniforms : Uniforms;
[[stage(compute), workgroup_size(64, 1, 1)]]
fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
@stage(compute) @workgroup_size(64, 1, 1)
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
var index = GlobalInvocationID.x;
if ((index >= config.numLights)) {
return;

View File

@@ -1,3 +1,3 @@
struct Buffer { data: u32; };
[[group(0), binding(0)]] var<storage, read_write> buffer: Buffer;
@group(0) @binding(0) var<storage, read_write> buffer: Buffer;
fn main() { buffer.data = buffer.data + 1u; }

View File

@@ -2,7 +2,7 @@ struct Buffer {
data : u32;
}
[[group(0), binding(0)]] var<storage, read_write> buffer : Buffer;
@group(0) @binding(0) var<storage, read_write> buffer : Buffer;
fn main() {
buffer.data = (buffer.data + 1u);

View File

@@ -2,7 +2,7 @@ fn foo() -> i32 {
return 1;
}
[[stage(fragment)]]
@stage(fragment)
fn main() {
var arr = array<f32, 4>();
for (let a = &arr[foo()]; ;) {

View File

@@ -2,7 +2,7 @@ fn foo() -> i32 {
return 1;
}
[[stage(fragment)]]
@stage(fragment)
fn main() {
var arr = array<f32, 4>();
for(let a = &(arr[foo()]); ; ) {

View File

@@ -3,7 +3,7 @@ fn call_discard() -> bool {
return true;
}
[[stage(fragment)]]
@stage(fragment)
fn f() {
var v = call_discard();
var also_unreachable : bool;

View File

@@ -11,7 +11,7 @@ fn call_discard() -> bool {
return true;
}
[[stage(fragment)]]
@stage(fragment)
fn f() {
var v = call_discard();
var also_unreachable : bool;

View File

@@ -1,11 +1,11 @@
[[group(0), binding(1)]]
@group(0) @binding(1)
var<storage, read> data : array<i32>;
fn foo() -> i32 {
return data[0];
}
[[stage(compute), workgroup_size(16, 16, 1)]]
@stage(compute) @workgroup_size(16, 16, 1)
fn main() {
foo();
}

View File

@@ -1,10 +1,10 @@
[[group(0), binding(1)]] var<storage, read> data : array<i32>;
@group(0) @binding(1) var<storage, read> data : array<i32>;
fn foo() -> i32 {
return data[0];
}
[[stage(compute), workgroup_size(16, 16, 1)]]
@stage(compute) @workgroup_size(16, 16, 1)
fn main() {
foo();
}

View File

@@ -9,7 +9,7 @@ fn main_1() {
return;
}
[[stage(compute), workgroup_size(1, 1, 1)]]
@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
main_1();
}

View File

@@ -5,9 +5,9 @@ struct Buf{
data : Arr;
};
[[group(0), binding (0)]] var<storage, read_write> b : Buf;
@group(0) @binding(0) var<storage, read_write> b : Buf;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var i : u32 = 0u;
loop {

View File

@@ -5,9 +5,9 @@ struct Buf {
data : Arr;
}
[[group(0), binding(0)]] var<storage, read_write> b : Buf;
@group(0) @binding(0) var<storage, read_write> b : Buf;
[[stage(compute), workgroup_size(1)]]
@stage(compute) @workgroup_size(1)
fn main() {
var i : u32 = 0u;
loop {

View File

@@ -1,5 +1,5 @@
[[stage(vertex)]]
fn main() -> [[builtin(position)]] vec4<f32> {
@stage(vertex)
fn main() -> @builtin(position) vec4<f32> {
var light : vec3<f32> = vec3<f32>(1.2, 1., 2.);
var negative_light : vec3<f32> = -light;
return vec4<f32>();

View File

@@ -1,5 +1,5 @@
[[stage(vertex)]]
fn main() -> [[builtin(position)]] vec4<f32> {
@stage(vertex)
fn main() -> @builtin(position) vec4<f32> {
var light : vec3<f32> = vec3<f32>(1.200000048, 1.0, 2.0);
var negative_light : vec3<f32> = -(light);
return vec4<f32>();

View File

@@ -3,6 +3,6 @@ struct Light {
colour : vec3<f32>;
};
struct Lights {
light : [[stride(32)]] array<Light>;
light : @stride(32) array<Light>;
};
[[group(0), binding(1)]] var<storage, read> lights : Lights;
@group(0) @binding(1) var<storage, read> lights : Lights;

View File

@@ -4,7 +4,7 @@ struct Light {
}
struct Lights {
light : [[stride(32)]] array<Light>;
light : @stride(32) array<Light>;
}
[[group(0), binding(1)]] var<storage, read> lights : Lights;
@group(0) @binding(1) var<storage, read> lights : Lights;

View File

@@ -2,5 +2,5 @@
m : mat2x2<f32>;
};
[[group(0), binding(0)]] var<storage> SSBO : S;
[[group(0), binding(0)]] var<uniform> UBO : S;
@group(0) @binding(0) var<storage> SSBO : S;
@group(0) @binding(0) var<uniform> UBO : S;

View File

@@ -2,6 +2,6 @@ struct S {
m : mat2x2<f32>;
}
[[group(0), binding(0)]] var<storage> SSBO : S;
@group(0) @binding(0) var<storage> SSBO : S;
[[group(0), binding(0)]] var<uniform> UBO : S;
@group(0) @binding(0) var<uniform> UBO : S;

View File

@@ -6,12 +6,12 @@ struct vertexUniformBuffer2 {
transform2 : mat2x2<f32>;
};
[[group(0), binding(0)]] var<uniform> x_20 : vertexUniformBuffer1;
[[group(1), binding(0)]] var<uniform> x_26 : vertexUniformBuffer2;
@group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
@group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;
[[stage(vertex)]]
fn main([[builtin(vertex_index)]] gl_VertexIndex : u32) -> [[builtin(position)]] vec4<f32> {
@stage(vertex)
fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
var indexable : array<vec2<f32>, 3>;
let x_23 : mat2x2<f32> = x_20.transform1;
let x_28 : mat2x2<f32> = x_26.transform2;

View File

@@ -6,12 +6,12 @@ struct vertexUniformBuffer2 {
transform2 : mat2x2<f32>;
}
[[group(0), binding(0)]] var<uniform> x_20 : vertexUniformBuffer1;
@group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
[[group(1), binding(0)]] var<uniform> x_26 : vertexUniformBuffer2;
@group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;
[[stage(vertex)]]
fn main([[builtin(vertex_index)]] gl_VertexIndex : u32) -> [[builtin(position)]] vec4<f32> {
@stage(vertex)
fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
var indexable : array<vec2<f32>, 3>;
let x_23 : mat2x2<f32> = x_20.transform1;
let x_28 : mat2x2<f32> = x_26.transform2;

Some files were not shown because too many files have changed in this diff Show More