Add resource_binding tests Add some examples of resource binding usage. Bug: 439626491 Change-Id: I1480dc573b92b2f2819ec9a7d6d4402d13df270b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/259474 Reviewed-by: James Price <jrprice@google.com> Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/cmd/common/helper.cc b/src/tint/cmd/common/helper.cc index d64c6d3..aa5857d 100644 --- a/src/tint/cmd/common/helper.cc +++ b/src/tint/cmd/common/helper.cc
@@ -258,10 +258,6 @@ fflush(stderr); } - if (!info.program.IsValid()) { - exit(1); - } - return info; }
diff --git a/src/tint/cmd/fuzz/ir/as/main.cc b/src/tint/cmd/fuzz/ir/as/main.cc index 5e21e74..51e1b1e 100644 --- a/src/tint/cmd/fuzz/ir/as/main.cc +++ b/src/tint/cmd/fuzz/ir/as/main.cc
@@ -263,6 +263,11 @@ opts.printer = options.printer.get(); auto info = tint::cmd::LoadProgramInfo(opts); + if (!info.program.IsValid()) { + // If the program just fails to load, ignore it as it's probably just a test file added in + // anticipation of a new feature. + return true; + } if (options.dump_ir) { DumpIR(info.program, options);
diff --git a/src/tint/cmd/info/main.cc b/src/tint/cmd/info/main.cc index c6fc1eb..2e563f3 100644 --- a/src/tint/cmd/info/main.cc +++ b/src/tint/cmd/info/main.cc
@@ -313,6 +313,9 @@ #endif auto info = tint::cmd::LoadProgramInfo(opts); + if (!info.program.IsValid()) { + return 1; + } if (options.emit_json) { EmitJson(info.program);
diff --git a/src/tint/cmd/tint/main.cc b/src/tint/cmd/tint/main.cc index 96edc8e..7f549f3 100644 --- a/src/tint/cmd/tint/main.cc +++ b/src/tint/cmd/tint/main.cc
@@ -1444,6 +1444,9 @@ #endif auto info = tint::cmd::LoadProgramInfo(opts); + if (!info.program.IsValid()) { + return 1; + } if (options.parse_only) { return 1;
diff --git a/test/tint/binding_array/runtime_array_access_as_constant.wgsl b/test/tint/binding_array/runtime_array_access_as_constant.wgsl deleted file mode 100644 index 5e0395f..0000000 --- a/test/tint/binding_array/runtime_array_access_as_constant.wgsl +++ /dev/null
@@ -1,7 +0,0 @@ -enable chromium_experimental_dynamic_binding; - -@group(0) @binding(0) var sampled_textures : binding_array<texture_2d<f32>>; - -@fragment fn fs() { - let texture_load = textureLoad(sampled_textures[0], vec2(0, 0), 0); -}
diff --git a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.dxc.hlsl b/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.dxc.hlsl deleted file mode 100644 index 93b3662..0000000 --- a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.dxc.hlsl +++ /dev/null
@@ -1,6 +0,0 @@ - -Texture2D<float4> sampled_textures[] : register(t0); -void fs() { - float4 texture_load = sampled_textures[int(0)].Load(int3((int(0)).xx, int(0))); -} -
diff --git a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.fxc.hlsl b/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.fxc.hlsl deleted file mode 100644 index b12a39a..0000000 --- a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.fxc.hlsl +++ /dev/null
@@ -1,5 +0,0 @@ -SKIP: INVALID - -runtime binding array not supported by the HLSL FXC backend - -tint executable returned error: exit status 1
diff --git a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.glsl b/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.glsl deleted file mode 100644 index d682685..0000000 --- a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.glsl +++ /dev/null
@@ -1,5 +0,0 @@ -SKIP: INVALID - -runtime binding array not supported by the GLSL backend - -tint executable returned error: exit status 1
diff --git a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.msl b/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.msl deleted file mode 100644 index 9ac25c6..0000000 --- a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.msl +++ /dev/null
@@ -1,13 +0,0 @@ -#include <metal_stdlib> -using namespace metal; - -struct tint_module_vars_struct { - array<texture2d<float, access::sample>, 1> sampled_textures; -}; - -fragment void fs(array<texture2d<float, access::sample>, 1> sampled_textures [[texture(0)]]) { - tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sampled_textures=sampled_textures}; - uint const v = min(uint(0), (tint_module_vars.sampled_textures[0].get_num_mip_levels() - 1u)); - uint2 const v_1 = (uint2(tint_module_vars.sampled_textures[0].get_width(v), tint_module_vars.sampled_textures[0].get_height(v)) - uint2(1u)); - float4 const texture_load = tint_module_vars.sampled_textures[0].read(min(uint2(int2(0)), v_1), v); -}
diff --git a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.spvasm b/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.spvasm deleted file mode 100644 index b6b79d8..0000000 --- a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.spvasm +++ /dev/null
@@ -1,50 +0,0 @@ -; SPIR-V -; Version: 1.3 -; Generator: Google Tint Compiler; 1 -; Bound: 32 -; Schema: 0 - OpCapability Shader - OpCapability RuntimeDescriptorArray - OpCapability ImageQuery - OpExtension "SPV_EXT_descriptor_indexing" - %21 = OpExtInstImport "GLSL.std.450" - OpMemoryModel Logical GLSL450 - OpEntryPoint Fragment %fs "fs" - OpExecutionMode %fs OriginUpperLeft - OpName %sampled_textures "sampled_textures" - OpName %fs "fs" - OpName %texture_load "texture_load" - OpDecorate %sampled_textures DescriptorSet 0 - OpDecorate %sampled_textures Binding 0 - %float = OpTypeFloat 32 - %4 = OpTypeImage %float 2D 0 0 0 1 Unknown -%_runtimearr_4 = OpTypeRuntimeArray %4 -%_ptr_UniformConstant__runtimearr_4 = OpTypePointer UniformConstant %_runtimearr_4 -%sampled_textures = OpVariable %_ptr_UniformConstant__runtimearr_4 UniformConstant - %void = OpTypeVoid - %8 = OpTypeFunction %void -%_ptr_UniformConstant_4 = OpTypePointer UniformConstant %4 - %int = OpTypeInt 32 1 - %int_0 = OpConstant %int 0 - %uint = OpTypeInt 32 0 - %uint_1 = OpConstant %uint 1 - %v2uint = OpTypeVector %uint 2 - %25 = OpConstantComposite %v2uint %uint_1 %uint_1 - %v2int = OpTypeVector %int 2 - %27 = OpConstantNull %v2int - %v4float = OpTypeVector %float 4 - %fs = OpFunction %void None %8 - %9 = OpLabel - %10 = OpAccessChain %_ptr_UniformConstant_4 %sampled_textures %int_0 - %14 = OpLoad %4 %10 None - %15 = OpImageQueryLevels %uint %14 - %17 = OpISub %uint %15 %uint_1 - %19 = OpBitcast %uint %int_0 - %20 = OpExtInst %uint %21 UMin %19 %17 - %22 = OpImageQuerySizeLod %v2uint %14 %20 - %24 = OpISub %v2uint %22 %25 - %26 = OpBitcast %v2uint %27 - %29 = OpExtInst %v2uint %21 UMin %26 %24 -%texture_load = OpImageFetch %v4float %14 %29 Lod %20 - OpReturn - OpFunctionEnd
diff --git a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.wgsl b/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.wgsl deleted file mode 100644 index bc324a8..0000000 --- a/test/tint/binding_array/runtime_array_access_as_constant.wgsl.expected.wgsl +++ /dev/null
@@ -1,8 +0,0 @@ -enable chromium_experimental_dynamic_binding; - -@group(0) @binding(0) var sampled_textures : binding_array<texture_2d<f32>>; - -@fragment -fn fs() { - let texture_load = textureLoad(sampled_textures[0], vec2(0, 0), 0); -}
diff --git a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl b/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl deleted file mode 100644 index c5a04fe..0000000 --- a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl +++ /dev/null
@@ -1,11 +0,0 @@ -enable chromium_experimental_dynamic_binding; - -@group(0) @binding(0) var sampled_textures : binding_array<texture_2d<f32>>; - -@fragment fn fs() { - do_texture_load(sampled_textures[0]); -} - -fn do_texture_load(t : texture_2d<f32>) { - let texture_load = textureLoad(t, vec2(0, 0), 0); -}
diff --git a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.dxc.hlsl b/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.dxc.hlsl deleted file mode 100644 index b7bf3ff..0000000 --- a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.dxc.hlsl +++ /dev/null
@@ -1,10 +0,0 @@ - -Texture2D<float4> sampled_textures[] : register(t0); -void do_texture_load(Texture2D<float4> t) { - float4 texture_load = t.Load(int3((int(0)).xx, int(0))); -} - -void fs() { - do_texture_load(sampled_textures[int(0)]); -} -
diff --git a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.fxc.hlsl b/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.fxc.hlsl deleted file mode 100644 index b12a39a..0000000 --- a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.fxc.hlsl +++ /dev/null
@@ -1,5 +0,0 @@ -SKIP: INVALID - -runtime binding array not supported by the HLSL FXC backend - -tint executable returned error: exit status 1
diff --git a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.glsl b/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.glsl deleted file mode 100644 index d682685..0000000 --- a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.glsl +++ /dev/null
@@ -1,5 +0,0 @@ -SKIP: INVALID - -runtime binding array not supported by the GLSL backend - -tint executable returned error: exit status 1
diff --git a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.msl b/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.msl deleted file mode 100644 index 873c048..0000000 --- a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.msl +++ /dev/null
@@ -1,17 +0,0 @@ -#include <metal_stdlib> -using namespace metal; - -struct tint_module_vars_struct { - array<texture2d<float, access::sample>, 1> sampled_textures; -}; - -void do_texture_load(texture2d<float, access::sample> t) { - uint const v = min(uint(0), (t.get_num_mip_levels() - 1u)); - uint2 const v_1 = (uint2(t.get_width(v), t.get_height(v)) - uint2(1u)); - float4 const texture_load = t.read(min(uint2(int2(0)), v_1), v); -} - -fragment void fs(array<texture2d<float, access::sample>, 1> sampled_textures [[texture(0)]]) { - tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sampled_textures=sampled_textures}; - do_texture_load(tint_module_vars.sampled_textures[0]); -}
diff --git a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.spvasm b/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.spvasm deleted file mode 100644 index c0f3646..0000000 --- a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.spvasm +++ /dev/null
@@ -1,59 +0,0 @@ -; SPIR-V -; Version: 1.3 -; Generator: Google Tint Compiler; 1 -; Bound: 37 -; Schema: 0 - OpCapability Shader - OpCapability RuntimeDescriptorArray - OpCapability ImageQuery - OpExtension "SPV_EXT_descriptor_indexing" - %19 = OpExtInstImport "GLSL.std.450" - OpMemoryModel Logical GLSL450 - OpEntryPoint Fragment %fs "fs" - OpExecutionMode %fs OriginUpperLeft - OpName %sampled_textures "sampled_textures" - OpName %do_texture_load "do_texture_load" - OpName %t "t" - OpName %texture_load "texture_load" - OpName %fs "fs" - OpDecorate %sampled_textures DescriptorSet 0 - OpDecorate %sampled_textures Binding 0 - %float = OpTypeFloat 32 - %4 = OpTypeImage %float 2D 0 0 0 1 Unknown -%_runtimearr_4 = OpTypeRuntimeArray %4 -%_ptr_UniformConstant__runtimearr_4 = OpTypePointer UniformConstant %_runtimearr_4 -%sampled_textures = OpVariable %_ptr_UniformConstant__runtimearr_4 UniformConstant - %void = OpTypeVoid - %9 = OpTypeFunction %void %4 - %uint = OpTypeInt 32 0 - %uint_1 = OpConstant %uint 1 - %int = OpTypeInt 32 1 - %int_0 = OpConstant %int 0 - %v2uint = OpTypeVector %uint 2 - %23 = OpConstantComposite %v2uint %uint_1 %uint_1 - %v2int = OpTypeVector %int 2 - %25 = OpConstantNull %v2int - %v4float = OpTypeVector %float 4 - %31 = OpTypeFunction %void -%_ptr_UniformConstant_4 = OpTypePointer UniformConstant %4 -%do_texture_load = OpFunction %void None %9 - %t = OpFunctionParameter %4 - %10 = OpLabel - %11 = OpImageQueryLevels %uint %t - %13 = OpISub %uint %11 %uint_1 - %15 = OpBitcast %uint %int_0 - %18 = OpExtInst %uint %19 UMin %15 %13 - %20 = OpImageQuerySizeLod %v2uint %t %18 - %22 = OpISub %v2uint %20 %23 - %24 = OpBitcast %v2uint %25 - %27 = OpExtInst %v2uint %19 UMin %24 %22 -%texture_load = OpImageFetch %v4float %t %27 Lod %18 - OpReturn - OpFunctionEnd - %fs = OpFunction %void None %31 - %32 = OpLabel - %33 = OpAccessChain %_ptr_UniformConstant_4 %sampled_textures %int_0 - %35 = OpLoad %4 %33 None - %36 = OpFunctionCall %void %do_texture_load %35 - OpReturn - OpFunctionEnd
diff --git a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.wgsl b/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.wgsl deleted file mode 100644 index d5fd235..0000000 --- a/test/tint/binding_array/runtime_array_access_as_function_argument.wgsl.expected.wgsl +++ /dev/null
@@ -1,12 +0,0 @@ -enable chromium_experimental_dynamic_binding; - -@group(0) @binding(0) var sampled_textures : binding_array<texture_2d<f32>>; - -@fragment -fn fs() { - do_texture_load(sampled_textures[0]); -} - -fn do_texture_load(t : texture_2d<f32>) { - let texture_load = textureLoad(t, vec2(0, 0), 0); -}
diff --git a/test/tint/binding_array/runtime_array_access_uniform.wgsl b/test/tint/binding_array/runtime_array_access_uniform.wgsl deleted file mode 100644 index 4b4a372..0000000 --- a/test/tint/binding_array/runtime_array_access_uniform.wgsl +++ /dev/null
@@ -1,8 +0,0 @@ -enable chromium_experimental_dynamic_binding; - -@group(1) @binding(0) var<uniform> index : u32; -@group(0) @binding(0) var sampled_textures : binding_array<texture_2d<f32>>; - -@fragment fn fs() { - let texture_load = textureLoad(sampled_textures[index], vec2(0, 0), 0); -}
diff --git a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.dxc.hlsl b/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.dxc.hlsl deleted file mode 100644 index dd7d955..0000000 --- a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.dxc.hlsl +++ /dev/null
@@ -1,10 +0,0 @@ - -cbuffer cbuffer_index : register(b0, space1) { - uint4 index[1]; -}; -Texture2D<float4> sampled_textures[] : register(t0); -void fs() { - uint v = index[0u].x; - float4 texture_load = sampled_textures[v].Load(int3((int(0)).xx, int(0))); -} -
diff --git a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.fxc.hlsl b/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.fxc.hlsl deleted file mode 100644 index b12a39a..0000000 --- a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.fxc.hlsl +++ /dev/null
@@ -1,5 +0,0 @@ -SKIP: INVALID - -runtime binding array not supported by the HLSL FXC backend - -tint executable returned error: exit status 1
diff --git a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.glsl b/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.glsl deleted file mode 100644 index d682685..0000000 --- a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.glsl +++ /dev/null
@@ -1,5 +0,0 @@ -SKIP: INVALID - -runtime binding array not supported by the GLSL backend - -tint executable returned error: exit status 1
diff --git a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.msl b/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.msl deleted file mode 100644 index 9547eaf..0000000 --- a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.msl +++ /dev/null
@@ -1,15 +0,0 @@ -#include <metal_stdlib> -using namespace metal; - -struct tint_module_vars_struct { - const constant uint* index; - array<texture2d<float, access::sample>, 1> sampled_textures; -}; - -fragment void fs(const constant uint* index [[buffer(0)]], array<texture2d<float, access::sample>, 1> sampled_textures [[texture(0)]]) { - tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.index=index, .sampled_textures=sampled_textures}; - texture2d<float, access::sample> const v = tint_module_vars.sampled_textures[(*tint_module_vars.index)]; - uint const v_1 = min(uint(0), (v.get_num_mip_levels() - 1u)); - uint2 const v_2 = (uint2(v.get_width(v_1), v.get_height(v_1)) - uint2(1u)); - float4 const texture_load = v.read(min(uint2(int2(0)), v_2), v_1); -}
diff --git a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.spvasm b/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.spvasm deleted file mode 100644 index 64c392f..0000000 --- a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.spvasm +++ /dev/null
@@ -1,64 +0,0 @@ -; SPIR-V -; Version: 1.3 -; Generator: Google Tint Compiler; 1 -; Bound: 39 -; Schema: 0 - OpCapability Shader - OpCapability RuntimeDescriptorArray - OpCapability ImageQuery - OpExtension "SPV_EXT_descriptor_indexing" - %28 = OpExtInstImport "GLSL.std.450" - OpMemoryModel Logical GLSL450 - OpEntryPoint Fragment %fs "fs" - OpExecutionMode %fs OriginUpperLeft - OpMemberName %index_block 0 "inner" - OpName %index_block "index_block" - OpName %sampled_textures "sampled_textures" - OpName %fs "fs" - OpName %texture_load "texture_load" - OpMemberDecorate %index_block 0 Offset 0 - OpDecorate %index_block Block - OpDecorate %1 DescriptorSet 1 - OpDecorate %1 Binding 0 - OpDecorate %1 NonWritable - OpDecorate %sampled_textures DescriptorSet 0 - OpDecorate %sampled_textures Binding 0 - %uint = OpTypeInt 32 0 -%index_block = OpTypeStruct %uint -%_ptr_Uniform_index_block = OpTypePointer Uniform %index_block - %1 = OpVariable %_ptr_Uniform_index_block Uniform - %float = OpTypeFloat 32 - %8 = OpTypeImage %float 2D 0 0 0 1 Unknown -%_runtimearr_8 = OpTypeRuntimeArray %8 -%_ptr_UniformConstant__runtimearr_8 = OpTypePointer UniformConstant %_runtimearr_8 -%sampled_textures = OpVariable %_ptr_UniformConstant__runtimearr_8 UniformConstant - %void = OpTypeVoid - %12 = OpTypeFunction %void -%_ptr_Uniform_uint = OpTypePointer Uniform %uint - %uint_0 = OpConstant %uint 0 -%_ptr_UniformConstant_8 = OpTypePointer UniformConstant %8 - %uint_1 = OpConstant %uint 1 - %int = OpTypeInt 32 1 - %int_0 = OpConstant %int 0 - %v2uint = OpTypeVector %uint 2 - %32 = OpConstantComposite %v2uint %uint_1 %uint_1 - %v2int = OpTypeVector %int 2 - %34 = OpConstantNull %v2int - %v4float = OpTypeVector %float 4 - %fs = OpFunction %void None %12 - %13 = OpLabel - %14 = OpAccessChain %_ptr_Uniform_uint %1 %uint_0 - %17 = OpLoad %uint %14 None - %18 = OpAccessChain %_ptr_UniformConstant_8 %sampled_textures %17 - %20 = OpLoad %8 %18 None - %21 = OpImageQueryLevels %uint %20 - %22 = OpISub %uint %21 %uint_1 - %24 = OpBitcast %uint %int_0 - %27 = OpExtInst %uint %28 UMin %24 %22 - %29 = OpImageQuerySizeLod %v2uint %20 %27 - %31 = OpISub %v2uint %29 %32 - %33 = OpBitcast %v2uint %34 - %36 = OpExtInst %v2uint %28 UMin %33 %31 -%texture_load = OpImageFetch %v4float %20 %36 Lod %27 - OpReturn - OpFunctionEnd
diff --git a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.wgsl b/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.wgsl deleted file mode 100644 index 36473ab..0000000 --- a/test/tint/binding_array/runtime_array_access_uniform.wgsl.expected.wgsl +++ /dev/null
@@ -1,10 +0,0 @@ -enable chromium_experimental_dynamic_binding; - -@group(1) @binding(0) var<uniform> index : u32; - -@group(0) @binding(0) var sampled_textures : binding_array<texture_2d<f32>>; - -@fragment -fn fs() { - let texture_load = textureLoad(sampled_textures[index], vec2(0, 0), 0); -}
diff --git a/test/tint/extensions/dynamic_binding/access_as_constant.wgsl b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl new file mode 100644 index 0000000..5799dde --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl
@@ -0,0 +1,8 @@ +enable chromium_experimental_dynamic_binding; + +@group(0) @binding(0) var sampled_textures : resource_binding; + +@fragment fn fs() { + let t = getBinding<texture_1d<f32>>(sampled_textures, 2); + let texture_load = textureLoad(t, vec2(0, 0), 0); +}
diff --git a/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.dxc.hlsl b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..78cae57 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.dxc.hlsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_constant.wgsl:6:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_1d<f32>>(sampled_textures, 2); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.fxc.hlsl b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..78cae57 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.fxc.hlsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_constant.wgsl:6:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_1d<f32>>(sampled_textures, 2); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.glsl b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.glsl new file mode 100644 index 0000000..ea126db --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.glsl
@@ -0,0 +1,8 @@ +SKIP: INVALID + +<dawn>/test/tint/extensions/dynamic_binding/access_as_constant.wgsl:6:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_1d<f32>>(sampled_textures, 2); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.msl b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.msl new file mode 100644 index 0000000..78cae57 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.msl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_constant.wgsl:6:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_1d<f32>>(sampled_textures, 2); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.spvasm b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.spvasm new file mode 100644 index 0000000..78cae57 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.spvasm
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_constant.wgsl:6:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_1d<f32>>(sampled_textures, 2); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.wgsl b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.wgsl new file mode 100644 index 0000000..78cae57 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_constant.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_constant.wgsl:6:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_1d<f32>>(sampled_textures, 2); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl new file mode 100644 index 0000000..2ebc6d0 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl
@@ -0,0 +1,9 @@ +enable chromium_experimental_dynamic_binding; + +@group(1) @binding(0) var<uniform> index : u32; +@group(0) @binding(0) var sampled_textures : resource_binding; + +@fragment fn fs() { + let t = getBinding<texture_3d<f32>>(sampled_textures, index); + let texture_load = textureLoad(t, vec2(0, 0), 0); +}
diff --git a/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.dxc.hlsl b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..fe1cf4a --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.dxc.hlsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl:7:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_3d<f32>>(sampled_textures, index); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.fxc.hlsl b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..fe1cf4a --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.fxc.hlsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl:7:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_3d<f32>>(sampled_textures, index); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.glsl b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.glsl new file mode 100644 index 0000000..fd5d671 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.glsl
@@ -0,0 +1,8 @@ +SKIP: INVALID + +<dawn>/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl:7:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_3d<f32>>(sampled_textures, index); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.msl b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.msl new file mode 100644 index 0000000..fe1cf4a --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.msl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl:7:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_3d<f32>>(sampled_textures, index); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.spvasm b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.spvasm new file mode 100644 index 0000000..fe1cf4a --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.spvasm
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl:7:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_3d<f32>>(sampled_textures, index); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.wgsl b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.wgsl new file mode 100644 index 0000000..fe1cf4a --- /dev/null +++ b/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/access_as_uniform.wgsl:7:13 error: unresolved call target 'getBinding' + let t = getBinding<texture_3d<f32>>(sampled_textures, index); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/arraylength.wgsl b/test/tint/extensions/dynamic_binding/arraylength.wgsl new file mode 100644 index 0000000..ef89caf --- /dev/null +++ b/test/tint/extensions/dynamic_binding/arraylength.wgsl
@@ -0,0 +1,7 @@ +enable chromium_experimental_dynamic_binding; + +@group(0) @binding(0) var sampled_textures : resource_binding; + +@fragment fn fs() { + let t = arrayLength(sampled_textures); +}
diff --git a/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.dxc.hlsl b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..3ed2676 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.dxc.hlsl
@@ -0,0 +1,15 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/arraylength.wgsl:6:13 error: no matching call to 'arrayLength(resource_binding)' + +2 candidate functions: + • 'arrayLength(ptr<storage, array<T>, R> ✗ ) -> u32' where: + ✗ 'R' is 'read' + • 'arrayLength(ptr<storage, array<T>, W> ✗ ) -> u32' where: + ✗ 'W' is 'write' or 'read_write' + + let t = arrayLength(sampled_textures); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.fxc.hlsl b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..3ed2676 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.fxc.hlsl
@@ -0,0 +1,15 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/arraylength.wgsl:6:13 error: no matching call to 'arrayLength(resource_binding)' + +2 candidate functions: + • 'arrayLength(ptr<storage, array<T>, R> ✗ ) -> u32' where: + ✗ 'R' is 'read' + • 'arrayLength(ptr<storage, array<T>, W> ✗ ) -> u32' where: + ✗ 'W' is 'write' or 'read_write' + + let t = arrayLength(sampled_textures); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.glsl b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.glsl new file mode 100644 index 0000000..9c02951 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.glsl
@@ -0,0 +1,15 @@ +SKIP: INVALID + +<dawn>/test/tint/extensions/dynamic_binding/arraylength.wgsl:6:13 error: no matching call to 'arrayLength(resource_binding)' + +2 candidate functions: + • 'arrayLength(ptr<storage, array<T>, R> ✗ ) -> u32' where: + ✗ 'R' is 'read' + • 'arrayLength(ptr<storage, array<T>, W> ✗ ) -> u32' where: + ✗ 'W' is 'write' or 'read_write' + + let t = arrayLength(sampled_textures); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.msl b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.msl new file mode 100644 index 0000000..3ed2676 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.msl
@@ -0,0 +1,15 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/arraylength.wgsl:6:13 error: no matching call to 'arrayLength(resource_binding)' + +2 candidate functions: + • 'arrayLength(ptr<storage, array<T>, R> ✗ ) -> u32' where: + ✗ 'R' is 'read' + • 'arrayLength(ptr<storage, array<T>, W> ✗ ) -> u32' where: + ✗ 'W' is 'write' or 'read_write' + + let t = arrayLength(sampled_textures); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.spvasm b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.spvasm new file mode 100644 index 0000000..3ed2676 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.spvasm
@@ -0,0 +1,15 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/arraylength.wgsl:6:13 error: no matching call to 'arrayLength(resource_binding)' + +2 candidate functions: + • 'arrayLength(ptr<storage, array<T>, R> ✗ ) -> u32' where: + ✗ 'R' is 'read' + • 'arrayLength(ptr<storage, array<T>, W> ✗ ) -> u32' where: + ✗ 'W' is 'write' or 'read_write' + + let t = arrayLength(sampled_textures); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.wgsl b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.wgsl new file mode 100644 index 0000000..3ed2676 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/arraylength.wgsl.expected.wgsl
@@ -0,0 +1,15 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/arraylength.wgsl:6:13 error: no matching call to 'arrayLength(resource_binding)' + +2 candidate functions: + • 'arrayLength(ptr<storage, array<T>, R> ✗ ) -> u32' where: + ✗ 'R' is 'read' + • 'arrayLength(ptr<storage, array<T>, W> ✗ ) -> u32' where: + ✗ 'W' is 'write' or 'read_write' + + let t = arrayLength(sampled_textures); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/has_binding.wgsl b/test/tint/extensions/dynamic_binding/has_binding.wgsl new file mode 100644 index 0000000..1226fba --- /dev/null +++ b/test/tint/extensions/dynamic_binding/has_binding.wgsl
@@ -0,0 +1,7 @@ +enable chromium_experimental_dynamic_binding; + +@group(0) @binding(0) var sampled_textures : resource_binding; + +@fragment fn fs() { + let t = has_binding<texture_2d<i32>>(sampled_textures, 4); +}
diff --git a/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.dxc.hlsl b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000..71225a7 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.dxc.hlsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/has_binding.wgsl:6:13 error: unresolved call target 'has_binding' + let t = has_binding<texture_2d<i32>>(sampled_textures, 4); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.fxc.hlsl b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000..71225a7 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.fxc.hlsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/has_binding.wgsl:6:13 error: unresolved call target 'has_binding' + let t = has_binding<texture_2d<i32>>(sampled_textures, 4); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.glsl b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.glsl new file mode 100644 index 0000000..ef66dd8 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.glsl
@@ -0,0 +1,8 @@ +SKIP: INVALID + +<dawn>/test/tint/extensions/dynamic_binding/has_binding.wgsl:6:13 error: unresolved call target 'has_binding' + let t = has_binding<texture_2d<i32>>(sampled_textures, 4); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.msl b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.msl new file mode 100644 index 0000000..71225a7 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.msl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/has_binding.wgsl:6:13 error: unresolved call target 'has_binding' + let t = has_binding<texture_2d<i32>>(sampled_textures, 4); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.spvasm b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.spvasm new file mode 100644 index 0000000..71225a7 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.spvasm
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/has_binding.wgsl:6:13 error: unresolved call target 'has_binding' + let t = has_binding<texture_2d<i32>>(sampled_textures, 4); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1
diff --git a/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.wgsl b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.wgsl new file mode 100644 index 0000000..71225a7 --- /dev/null +++ b/test/tint/extensions/dynamic_binding/has_binding.wgsl.expected.wgsl
@@ -0,0 +1,8 @@ +SKIP: FAILED + +<dawn>/test/tint/extensions/dynamic_binding/has_binding.wgsl:6:13 error: unresolved call target 'has_binding' + let t = has_binding<texture_2d<i32>>(sampled_textures, 4); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +tint executable returned error: exit status 1