wgsl: Deprecate [[access]] decorations

Handle access control on var declarations instead of via [[access]]
decorations. This change does the minimal work to migrate the WGSL
parser over to the new syntax. Additional changes will be needed
to correctly generate defaulted access qualifiers, as well as
validating access usage.

The [[access]] decorations are still supported by the WGSL parser,
with new deprecated warnings, but not for aliases. Example:
   var x : [[access(x)]] alias_to_struct;

Making this work is far more effort than I want to dedicate to backwards
compatibility, and I do not beleive any real-world usage will be doing
this.

Still TODO:
* Adding access control as the optional, third parameter to ptr<>.
* Calculating default accesses for the various storage types.
* Validating usage of variables against the different accesses.

Bug: tint:846
Change-Id: If8ca82e5d16ec319ecd01f9a2cafffd930963bde
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/53088
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
Reviewed-by: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
Ben Clayton
2021-06-04 20:41:47 +00:00
committed by Tint LUCI CQ
parent b175d91c7e
commit 93e8f527ee
450 changed files with 2651 additions and 2213 deletions

View File

@@ -146,7 +146,6 @@ tint_unittests_source_set("tint_unittests_core_sem_src") {
tint_unittests_source_set("tint_unittests_core_src") {
sources = [
"../src/ast/access_control_test.cc",
"../src/ast/access_decoration_test.cc",
"../src/ast/alias_test.cc",
"../src/ast/array_accessor_expression_test.cc",
@@ -467,7 +466,7 @@ tint_unittests_source_set("tint_unittests_wgsl_reader_src") {
"../src/reader/wgsl/parser_impl_variable_decoration_test.cc",
"../src/reader/wgsl/parser_impl_variable_ident_decl_test.cc",
"../src/reader/wgsl/parser_impl_variable_stmt_test.cc",
"../src/reader/wgsl/parser_impl_variable_storage_decoration_test.cc",
"../src/reader/wgsl/parser_impl_variable_qualifier_test.cc",
"../src/reader/wgsl/parser_test.cc",
"../src/reader/wgsl/token_test.cc",
]

View File

@@ -8,7 +8,7 @@ struct S {
var<private> src_private : ArrayType;
var<workgroup> src_workgroup : ArrayType;
[[group(0), binding(0)]] var<uniform> src_uniform : S;
[[group(0), binding(1)]] var<storage> src_storage : [[access(read_write)]] S;
[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
fn ret_arr() -> ArrayType {
return ArrayType();

View File

@@ -11,7 +11,7 @@ var<workgroup> src_workgroup : ArrayType;
[[group(0), binding(0)]] var<uniform> src_uniform : S;
[[group(0), binding(1)]] var<storage> src_storage : [[access(read_write)]] S;
[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
fn ret_arr() -> ArrayType {
return ArrayType();

View File

@@ -8,7 +8,7 @@ struct S {
var<private> src_private : ArrayType;
var<workgroup> src_workgroup : ArrayType;
[[group(0), binding(0)]] var<uniform> src_uniform : S;
[[group(0), binding(1)]] var<storage> src_storage : [[access(read_write)]] S;
[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
var<private> dst : ArrayType;
var<private> dst_nested : array<array<array<i32, 2>, 3>, 4>;

View File

@@ -11,7 +11,7 @@ var<workgroup> src_workgroup : ArrayType;
[[group(0), binding(0)]] var<uniform> src_uniform : S;
[[group(0), binding(1)]] var<storage> src_storage : [[access(read_write)]] S;
[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
var<private> dst : ArrayType;

View File

@@ -13,10 +13,10 @@ struct S_nested {
var<private> src_private : ArrayType;
var<workgroup> src_workgroup : ArrayType;
[[group(0), binding(0)]] var<uniform> src_uniform : S;
[[group(0), binding(1)]] var<storage> src_storage : [[access(read_write)]] S;
[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
[[group(0), binding(2)]] var<storage> dst : [[access(read_write)]] S;
[[group(0), binding(3)]] var<storage> dst_nested : [[access(read_write)]] S_nested;
[[group(0), binding(2)]] var<storage, read_write> dst : S;
[[group(0), binding(3)]] var<storage, read_write> dst_nested : S_nested;
fn ret_arr() -> ArrayType {
return ArrayType();

View File

@@ -16,11 +16,11 @@ var<workgroup> src_workgroup : ArrayType;
[[group(0), binding(0)]] var<uniform> src_uniform : S;
[[group(0), binding(1)]] var<storage> src_storage : [[access(read_write)]] S;
[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
[[group(0), binding(2)]] var<storage> dst : [[access(read_write)]] S;
[[group(0), binding(2)]] var<storage, read_write> dst : S;
[[group(0), binding(3)]] var<storage> dst_nested : [[access(read_write)]] S_nested;
[[group(0), binding(3)]] var<storage, read_write> dst_nested : S_nested;
fn ret_arr() -> ArrayType {
return ArrayType();

View File

@@ -8,7 +8,7 @@ struct S {
var<private> src_private : ArrayType;
var<workgroup> src_workgroup : ArrayType;
[[group(0), binding(0)]] var<uniform> src_uniform : S;
[[group(0), binding(1)]] var<storage> src_storage : [[access(read_write)]] S;
[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
var<workgroup> dst : ArrayType;
var<workgroup> dst_nested : array<array<array<i32, 2>, 3>, 4>;

View File

@@ -11,7 +11,7 @@ var<workgroup> src_workgroup : ArrayType;
[[group(0), binding(0)]] var<uniform> src_uniform : S;
[[group(0), binding(1)]] var<storage> src_storage : [[access(read_write)]] S;
[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
var<workgroup> dst : ArrayType;

View File

@@ -6,7 +6,7 @@ struct Buf{
data : Arr;
};
[[group(0), binding (0)]] var<storage> b : [[access(read_write)]] Buf;
[[group(0), binding (0)]] var<storage, read_write> b : Buf;
[[stage(compute)]]
fn main() {

View File

@@ -6,7 +6,7 @@ struct Buf {
data : Arr;
};
[[group(0), binding(0)]] var<storage> b : [[access(read_write)]] Buf;
[[group(0), binding(0)]] var<storage, read_write> b : Buf;
[[stage(compute)]]
fn main() {

View File

@@ -1,5 +1,5 @@
[[block]] struct S { a : i32; };
[[group(0), binding(0)]] var<storage> buf : [[access(read_write)]] S;
[[group(0), binding(0)]] var<storage, read_write> buf : S;
[[stage(compute)]] fn main() {
let p : ptr<storage, i32> = &buf.a;

View File

@@ -3,7 +3,7 @@ struct S {
a : i32;
};
[[group(0), binding(0)]] var<storage> buf : [[access(read_write)]] S;
[[group(0), binding(0)]] var<storage, read_write> buf : S;
[[stage(compute)]]
fn main() {

View File

@@ -7,9 +7,9 @@
numbers: array<u32>;
};
[[group(0), binding(0)]] var<storage> firstMatrix : [[access(read)]] Matrix;
[[group(0), binding(1)]] var<storage> secondMatrix : [[access(read)]] Matrix;
[[group(0), binding(2)]] var<storage> resultMatrix : [[access(write)]] Matrix;
[[group(0), binding(0)]] var<storage, read> firstMatrix : Matrix;
[[group(0), binding(1)]] var<storage, read> secondMatrix : Matrix;
[[group(0), binding(2)]] var<storage, write> resultMatrix : Matrix;
[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
[[stage(compute), workgroup_size(2,2,1)]]

View File

@@ -10,11 +10,11 @@ struct Matrix {
numbers : array<u32>;
};
[[group(0), binding(0)]] var<storage> firstMatrix : [[access(read)]] Matrix;
[[group(0), binding(0)]] var<storage, read> firstMatrix : Matrix;
[[group(0), binding(1)]] var<storage> secondMatrix : [[access(read)]] Matrix;
[[group(0), binding(1)]] var<storage, read> secondMatrix : Matrix;
[[group(0), binding(2)]] var<storage> resultMatrix : [[access(write)]] Matrix;
[[group(0), binding(2)]] var<storage, write> resultMatrix : Matrix;
[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;

View File

@@ -0,0 +1,12 @@
[[block]]
struct SB {
a : f32;
};
[[group(0), binding(0)]] var<storage> sb : [[access(read_write)]] SB;
[[stage(compute)]]
fn main() {
var x : f32 = sb.a;
}

View File

@@ -0,0 +1,13 @@
deprecated/access_deco/storage_buffer.wgsl:7:26 warning: use of deprecated language feature: declare access with var<storage, read_write> instead of using [[access]] decoration
[[group(0), binding(0)]] var<storage> sb : [[access(read_write)]] SB;
^^^
RWByteAddressBuffer sb : register(u0, space0);
[numthreads(1, 1, 1)]
void main() {
float x = asfloat(sb.Load(0u));
return;
}

View File

@@ -0,0 +1,16 @@
deprecated/access_deco/storage_buffer.wgsl:7:26 warning: use of deprecated language feature: declare access with var<storage, read_write> instead of using [[access]] decoration
[[group(0), binding(0)]] var<storage> sb : [[access(read_write)]] SB;
^^^
#include <metal_stdlib>
using namespace metal;
struct SB {
/* 0x0000 */ float a;
};
kernel void tint_symbol(device SB& sb [[buffer(0)]]) {
float x = sb.a;
return;
}

View File

@@ -0,0 +1,41 @@
deprecated/access_deco/storage_buffer.wgsl:7:26 warning: use of deprecated language feature: declare access with var<storage, read_write> instead of using [[access]] decoration
[[group(0), binding(0)]] var<storage> sb : [[access(read_write)]] SB;
^^^
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 17
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %SB "SB"
OpMemberName %SB 0 "a"
OpName %sb "sb"
OpName %main "main"
OpName %x "x"
OpDecorate %SB Block
OpMemberDecorate %SB 0 Offset 0
OpDecorate %sb DescriptorSet 0
OpDecorate %sb Binding 0
%float = OpTypeFloat 32
%SB = OpTypeStruct %float
%_ptr_StorageBuffer_SB = OpTypePointer StorageBuffer %SB
%sb = OpVariable %_ptr_StorageBuffer_SB StorageBuffer
%void = OpTypeVoid
%5 = OpTypeFunction %void
%uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%_ptr_Function_float = OpTypePointer Function %float
%16 = OpConstantNull %float
%main = OpFunction %void None %5
%8 = OpLabel
%x = OpVariable %_ptr_Function_float Function %16
%12 = OpAccessChain %_ptr_StorageBuffer_float %sb %uint_0
%13 = OpLoad %float %12
OpStore %x %13
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,15 @@
deprecated/access_deco/storage_buffer.wgsl:7:26 warning: use of deprecated language feature: declare access with var<storage, read_write> instead of using [[access]] decoration
[[group(0), binding(0)]] var<storage> sb : [[access(read_write)]] SB;
^^^
[[block]]
struct SB {
a : f32;
};
[[group(0), binding(0)]] var<storage, read_write> sb : SB;
[[stage(compute)]]
fn main() {
var x : f32 = sb.a;
}

View File

@@ -0,0 +1,6 @@
[[group(0), binding(0)]] var tex : [[access(write)]] texture_storage_2d<rgba32float>;
[[stage(compute)]]
fn main() {
var x : vec2<i32> = textureDimensions(tex);
}

View File

@@ -0,0 +1,14 @@
deprecated/access_deco/storage_texture.wgsl:1:84 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
[[group(0), binding(0)]] var tex : [[access(write)]] texture_storage_2d<rgba32float>;
^
RWTexture2D<float4> tex : register(u0, space0);
[numthreads(1, 1, 1)]
void main() {
int2 tint_tmp;
tex.GetDimensions(tint_tmp.x, tint_tmp.y);
int2 x = tint_tmp;
return;
}

View File

@@ -0,0 +1,12 @@
deprecated/access_deco/storage_texture.wgsl:1:84 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
[[group(0), binding(0)]] var tex : [[access(write)]] texture_storage_2d<rgba32float>;
^
#include <metal_stdlib>
using namespace metal;
kernel void tint_symbol() {
int2 x = int2(tex.get_width(), tex.get_height());
return;
}

View File

@@ -0,0 +1,38 @@
deprecated/access_deco/storage_texture.wgsl:1:84 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
[[group(0), binding(0)]] var tex : [[access(write)]] texture_storage_2d<rgba32float>;
^
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 16
; Schema: 0
OpCapability Shader
OpCapability ImageQuery
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %tex "tex"
OpName %main "main"
OpName %x "x"
OpDecorate %tex NonReadable
OpDecorate %tex DescriptorSet 0
OpDecorate %tex Binding 0
%float = OpTypeFloat 32
%3 = OpTypeImage %float 2D 0 0 0 2 Rgba32f
%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3
%tex = OpVariable %_ptr_UniformConstant_3 UniformConstant
%void = OpTypeVoid
%5 = OpTypeFunction %void
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
%_ptr_Function_v2int = OpTypePointer Function %v2int
%15 = OpConstantNull %v2int
%main = OpFunction %void None %5
%8 = OpLabel
%x = OpVariable %_ptr_Function_v2int Function %15
%12 = OpLoad %3 %tex
%9 = OpImageQuerySize %v2int %12
OpStore %x %9
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,10 @@
deprecated/access_deco/storage_texture.wgsl:1:84 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
[[group(0), binding(0)]] var tex : [[access(write)]] texture_storage_2d<rgba32float>;
^
[[group(0), binding(0)]] var tex : texture_storage_2d<rgba32float, write>;
[[stage(compute)]]
fn main() {
var x : vec2<i32> = textureDimensions(tex);
}

View File

@@ -3,7 +3,7 @@ struct S {
a : array<i32>;
};
[[group(0), binding(0)]] var<storage> G : [[access(read)]] S;
[[group(0), binding(0)]] var<storage, read> G : S;
[[stage(compute)]]
fn main() {

View File

@@ -3,7 +3,7 @@ struct S {
a : array<i32>;
};
[[group(0), binding(0)]] var<storage> G : [[access(read)]] S;
[[group(0), binding(0)]] var<storage, read> G : S;
[[stage(compute)]]
fn main() {

View File

@@ -26,7 +26,7 @@
struct SB {
arg_0: array<u32>;
};
[[group(0), binding(0)]] var<storage> sb : [[access(read)]] SB;
[[group(0), binding(0)]] var<storage, read> sb : SB;
fn arrayLength_647a40() {
var res: u32 = arrayLength(sb.arg_0);
}

View File

@@ -3,7 +3,7 @@ struct SB {
arg_0 : array<u32>;
};
[[group(0), binding(0)]] var<storage> sb : [[access(read)]] SB;
[[group(0), binding(0)]] var<storage, read> sb : SB;
fn arrayLength_647a40() {
var res : u32 = arrayLength(sb.arg_0);

View File

@@ -26,7 +26,7 @@
struct SB {
arg_0: array<i32>;
};
[[group(0), binding(0)]] var<storage> sb : [[access(read)]] SB;
[[group(0), binding(0)]] var<storage, read> sb : SB;
fn arrayLength_721c9d() {
var res: u32 = arrayLength(sb.arg_0);
}

View File

@@ -3,7 +3,7 @@ struct SB {
arg_0 : array<i32>;
};
[[group(0), binding(0)]] var<storage> sb : [[access(read)]] SB;
[[group(0), binding(0)]] var<storage, read> sb : SB;
fn arrayLength_721c9d() {
var res : u32 = arrayLength(sb.arg_0);

View File

@@ -26,7 +26,7 @@
struct SB {
arg_0: array<f32>;
};
[[group(0), binding(0)]] var<storage> sb : [[access(read)]] SB;
[[group(0), binding(0)]] var<storage, read> sb : SB;
fn arrayLength_b083be() {
var res: u32 = arrayLength(sb.arg_0);
}

View File

@@ -3,7 +3,7 @@ struct SB {
arg_0 : array<f32>;
};
[[group(0), binding(0)]] var<storage> sb : [[access(read)]] SB;
[[group(0), binding(0)]] var<storage, read> sb : SB;
fn arrayLength_b083be() {
var res : u32 = arrayLength(sb.arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<r32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32sint, write>;
fn textureDimensions_012b82() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rgba16sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16sint, write>;
fn textureDimensions_08753d() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_1d<rgba32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32sint, read>;
fn textureDimensions_08a62e() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d_array<rgba16float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16float, read>;
fn textureDimensions_0a5fcf() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_3d<rgba16sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16sint, read>;
fn textureDimensions_0bab57() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_3d<rgba16float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16float, write>;
fn textureDimensions_0c4772() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<r32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32sint, write>;
fn textureDimensions_0cce40() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rgba16uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16uint, write>;
fn textureDimensions_0cf2ff() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<r32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32uint, write>;
fn textureDimensions_0d8b7e() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_3d<rgba16uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16uint, write>;
fn textureDimensions_0e32ee() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d_array<rgba16sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16sint, read>;
fn textureDimensions_1147d6() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rg32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32float, write>;
fn textureDimensions_147998() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rgba8sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8sint, write>;
fn textureDimensions_16036c() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d<rgba8unorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8unorm, read>;
fn textureDimensions_168fcc() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d_array<rg32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32uint, read>;
fn textureDimensions_18bd57() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_3d<rg32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32sint, read>;
fn textureDimensions_19bffc() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d_array<rgba8unorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8unorm, read>;
fn textureDimensions_1a58e7() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d_array<rgba32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32sint, read>;
fn textureDimensions_1aa199() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_3d<rgba16sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16sint, write>;
fn textureDimensions_1b71f0() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rgba8unorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
fn textureDimensions_1d6c26() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_3d<r32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32sint, read>;
fn textureDimensions_1e189c() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rgba16float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16float, write>;
fn textureDimensions_1e9e39() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_1d<rg32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32float, read>;
fn textureDimensions_214b7b() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_3d<rgba8sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8sint, write>;
fn textureDimensions_214dd4() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rgba8uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8uint, write>;
fn textureDimensions_26ef6c() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rgba16sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16sint, write>;
fn textureDimensions_2ad087() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_3d<rgba32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba32uint, read>;
fn textureDimensions_2d32ae() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d<rgba8snorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8snorm, read>;
fn textureDimensions_2e0662() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_3d<r32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32sint, write>;
fn textureDimensions_2f289f() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rgba16uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16uint, write>;
fn textureDimensions_318ecc() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_3d<r32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32uint, write>;
fn textureDimensions_340d06() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rgba32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32uint, write>;
fn textureDimensions_398e30() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d_array<r32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32sint, read>;
fn textureDimensions_39a600() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rg32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32uint, write>;
fn textureDimensions_3a94ea() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rgba32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32float, write>;
fn textureDimensions_3aca08() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rgba8sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8sint, write>;
fn textureDimensions_3c5ad8() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_1d<rgba16uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16uint, read>;
fn textureDimensions_3d5817() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_1d<rgba8uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8uint, read>;
fn textureDimensions_40bc10() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rgba32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba32float, write>;
fn textureDimensions_4267ee() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rgba8unorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8unorm, write>;
fn textureDimensions_42d4e6() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_1d<rg32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32uint, read>;
fn textureDimensions_441392() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rgba16float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16float, write>;
fn textureDimensions_48cb89() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d_array<rg32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32float, read>;
fn textureDimensions_48cbb2() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d<rg32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32sint, read>;
fn textureDimensions_48f360() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rg32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32sint, write>;
fn textureDimensions_49d274() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rg32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32uint, write>;
fn textureDimensions_4df9a8() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rg32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32float, write>;
fn textureDimensions_55b23e() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_3d<rgba16float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16float, read>;
fn textureDimensions_56ccfa() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<r32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32uint, write>;
fn textureDimensions_57da0b() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_3d<rgba8snorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8snorm, read>;
fn textureDimensions_57e7b3() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rgba16float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16float, write>;
fn textureDimensions_58a515() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rgba32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32sint, write>;
fn textureDimensions_5985f3() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rgba32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32uint, write>;
fn textureDimensions_5caa5e() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rgba16uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16uint, write>;
fn textureDimensions_5e295d() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_3d<rg32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32sint, write>;
fn textureDimensions_60bf54() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_3d<rg32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32float, write>;
fn textureDimensions_63f3cf() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d_array<rgba8snorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8snorm, read>;
fn textureDimensions_66dc4e() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_3d<rg32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32float, read>;
fn textureDimensions_670d90() {
var res : vec3<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rgba32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba32uint, write>;
fn textureDimensions_68105c() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_1d<rgba32sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32sint, write>;
fn textureDimensions_6adac6() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_1d<rgba32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32float, read>;
fn textureDimensions_6c08ab() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_1d<rgba8sint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8sint, read>;
fn textureDimensions_6e2d12() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d_array<rgba8snorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
fn textureDimensions_6f0d79() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(write)]] texture_storage_2d<rgba8unorm>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8unorm, write>;
fn textureDimensions_702c53() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_1d<r32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32uint, read>;
fn textureDimensions_70e26a() {
var res : i32 = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_2d<r32uint>;
[[group(1), binding(0)]] var arg_0 : texture_storage_2d<r32uint, read>;
fn textureDimensions_71e8f7() {
var res : vec2<i32> = textureDimensions(arg_0);

View File

@@ -1,4 +1,4 @@
[[group(1), binding(0)]] var arg_0 : [[access(read)]] texture_storage_3d<r32float>;
[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32float, read>;
fn textureDimensions_770103() {
var res : vec3<i32> = textureDimensions(arg_0);

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