test: Add bug cases taken from monorail
Some now pass, some still fail. If we fix bugs and they begin to pass, we have a better chance of noticing and marking the issues as fixed. Change-Id: I7278f960967a570ccde8865dcf2aa580235559bf Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/54062 Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
parent
aba42ed362
commit
3628949efc
|
@ -1,35 +1,18 @@
|
||||||
SKIP: crbug.com/tint/833 loop emission is broken
|
SKIP: FAILED
|
||||||
|
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
struct Buf {
|
|
||||||
/* 0x0000 */ uint count;
|
|
||||||
/* 0x0004 */ uint data[50];
|
|
||||||
};
|
|
||||||
|
|
||||||
kernel void tint_symbol(device Buf& b [[buffer(0)]]) {
|
Validation Failure:
|
||||||
uint i = 0u;
|
|
||||||
{
|
Compilation failed:
|
||||||
bool tint_msl_is_first_1 = true;
|
|
||||||
|
program_source:16:24: error: default initialization of an object of const type 'device uint *const' (aka 'device unsigned int *const')
|
||||||
device uint* const p;
|
device uint* const p;
|
||||||
for(;;) {
|
^
|
||||||
if (!tint_msl_is_first_1) {
|
= nullptr
|
||||||
*(p) = (*(p) * 2u);
|
program_source:27:9: error: cannot assign to variable 'p' with const-qualified type 'device uint *const' (aka 'device unsigned int *const')
|
||||||
i = (i + 1u);
|
p = &(b.data.array[i]);
|
||||||
}
|
~ ^
|
||||||
tint_msl_is_first_1 = false;
|
program_source:16:24: note: variable 'p' declared const here
|
||||||
|
device uint* const p;
|
||||||
if ((i >= b.count)) {
|
~~~~~~~~~~~~~~~~~~~^
|
||||||
break;
|
|
||||||
}
|
|
||||||
p = &(b.data[i]);
|
|
||||||
if (((i % 2u) == 0u)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
*(p) = 0u;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
[[stage(vertex)]]
|
||||||
|
fn main() {
|
||||||
|
var light : vec3<f32> = vec3<f32>(1.2, 1., 2.);
|
||||||
|
var negative_light : vec3<f32> = -light;
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
void main() {
|
||||||
|
float3 light = float3(1.200000048f, 1.0f, 2.0f);
|
||||||
|
float3 negative_light = -(light);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
vertex void tint_symbol() {
|
||||||
|
float3 light = float3(1.200000048f, 1.0f, 2.0f);
|
||||||
|
float3 negative_light = -(light);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 20
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint Vertex %main "main" %tint_pointsize
|
||||||
|
OpName %tint_pointsize "tint_pointsize"
|
||||||
|
OpName %main "main"
|
||||||
|
OpName %light "light"
|
||||||
|
OpName %negative_light "negative_light"
|
||||||
|
OpDecorate %tint_pointsize BuiltIn PointSize
|
||||||
|
%float = OpTypeFloat 32
|
||||||
|
%_ptr_Output_float = OpTypePointer Output %float
|
||||||
|
%4 = OpConstantNull %float
|
||||||
|
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%5 = OpTypeFunction %void
|
||||||
|
%float_1 = OpConstant %float 1
|
||||||
|
%v3float = OpTypeVector %float 3
|
||||||
|
%float_1_20000005 = OpConstant %float 1.20000005
|
||||||
|
%float_2 = OpConstant %float 2
|
||||||
|
%13 = OpConstantComposite %v3float %float_1_20000005 %float_1 %float_2
|
||||||
|
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
||||||
|
%16 = OpConstantNull %v3float
|
||||||
|
%main = OpFunction %void None %5
|
||||||
|
%8 = OpLabel
|
||||||
|
%light = OpVariable %_ptr_Function_v3float Function %16
|
||||||
|
%negative_light = OpVariable %_ptr_Function_v3float Function %16
|
||||||
|
OpStore %tint_pointsize %float_1
|
||||||
|
OpStore %light %13
|
||||||
|
%18 = OpLoad %v3float %light
|
||||||
|
%17 = OpFNegate %v3float %18
|
||||||
|
OpStore %negative_light %17
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,6 @@
|
||||||
|
[[stage(vertex)]]
|
||||||
|
fn main() {
|
||||||
|
var light : vec3<f32> = vec3<f32>(1.200000048, 1.0, 2.0);
|
||||||
|
var negative_light : vec3<f32> = -(light);
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
struct Light {
|
||||||
|
position : vec3<f32>;
|
||||||
|
colour : vec3<f32>;
|
||||||
|
};
|
||||||
|
[[block]] struct Lights {
|
||||||
|
light : [[stride(32)]] array<Light>;
|
||||||
|
};
|
||||||
|
[[set(0), binding(1)]] var<storage> lights : [[access(read)]] Lights;
|
|
@ -0,0 +1,10 @@
|
||||||
|
bug/tint/294.wgsl:8:24 warning: use of deprecated language feature: declare access with var<storage, read> instead of using [[access]] decoration
|
||||||
|
[[set(0), binding(1)]] var<storage> lights : [[access(read)]] Lights;
|
||||||
|
^^^
|
||||||
|
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void unused_entry_point() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
bug/tint/294.wgsl:8:24 warning: use of deprecated language feature: declare access with var<storage, read> instead of using [[access]] decoration
|
||||||
|
[[set(0), binding(1)]] var<storage> lights : [[access(read)]] Lights;
|
||||||
|
^^^
|
||||||
|
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
struct Light {
|
||||||
|
/* 0x0000 */ packed_float3 position;
|
||||||
|
/* 0x000c */ int8_t tint_pad_0[4];
|
||||||
|
/* 0x0010 */ packed_float3 colour;
|
||||||
|
/* 0x001c */ int8_t tint_pad_1[4];
|
||||||
|
};
|
||||||
|
struct Lights {
|
||||||
|
/* 0x0000 */ Light light[1];
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
bug/tint/294.wgsl:8:24 warning: use of deprecated language feature: declare access with var<storage, read> instead of using [[access]] decoration
|
||||||
|
[[set(0), binding(1)]] var<storage> lights : [[access(read)]] Lights;
|
||||||
|
^^^
|
||||||
|
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 12
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint GLCompute %unused_entry_point "unused_entry_point"
|
||||||
|
OpExecutionMode %unused_entry_point LocalSize 1 1 1
|
||||||
|
OpName %Lights "Lights"
|
||||||
|
OpMemberName %Lights 0 "light"
|
||||||
|
OpName %Light "Light"
|
||||||
|
OpMemberName %Light 0 "position"
|
||||||
|
OpMemberName %Light 1 "colour"
|
||||||
|
OpName %lights "lights"
|
||||||
|
OpName %unused_entry_point "unused_entry_point"
|
||||||
|
OpDecorate %Lights Block
|
||||||
|
OpMemberDecorate %Lights 0 Offset 0
|
||||||
|
OpMemberDecorate %Light 0 Offset 0
|
||||||
|
OpMemberDecorate %Light 1 Offset 16
|
||||||
|
OpDecorate %_runtimearr_Light ArrayStride 32
|
||||||
|
OpDecorate %lights NonWritable
|
||||||
|
OpDecorate %lights DescriptorSet 0
|
||||||
|
OpDecorate %lights Binding 1
|
||||||
|
%float = OpTypeFloat 32
|
||||||
|
%v3float = OpTypeVector %float 3
|
||||||
|
%Light = OpTypeStruct %v3float %v3float
|
||||||
|
%_runtimearr_Light = OpTypeRuntimeArray %Light
|
||||||
|
%Lights = OpTypeStruct %_runtimearr_Light
|
||||||
|
%_ptr_StorageBuffer_Lights = OpTypePointer StorageBuffer %Lights
|
||||||
|
%lights = OpVariable %_ptr_StorageBuffer_Lights StorageBuffer
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%8 = OpTypeFunction %void
|
||||||
|
%unused_entry_point = OpFunction %void None %8
|
||||||
|
%11 = OpLabel
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,15 @@
|
||||||
|
bug/tint/294.wgsl:8:24 warning: use of deprecated language feature: declare access with var<storage, read> instead of using [[access]] decoration
|
||||||
|
[[set(0), binding(1)]] var<storage> lights : [[access(read)]] Lights;
|
||||||
|
^^^
|
||||||
|
|
||||||
|
struct Light {
|
||||||
|
position : vec3<f32>;
|
||||||
|
colour : vec3<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[block]]
|
||||||
|
struct Lights {
|
||||||
|
light : [[stride(32)]] array<Light>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[group(0), binding(1)]] var<storage, read> lights : Lights;
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
[[block]]
|
||||||
|
struct vertexUniformBuffer1 {
|
||||||
|
transform1 : mat2x2<f32>;
|
||||||
|
};
|
||||||
|
[[block]]
|
||||||
|
struct vertexUniformBuffer2 {
|
||||||
|
transform2 : mat2x2<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[set(0), binding(0)]] var<uniform> x_20 : vertexUniformBuffer1;
|
||||||
|
[[set(1), binding(0)]] var<uniform> x_26 : vertexUniformBuffer2;
|
||||||
|
|
||||||
|
|
||||||
|
[[stage(vertex)]]
|
||||||
|
fn main([[builtin(vertex_idx)]] gl_VertexIndex : i32) -> [[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;
|
||||||
|
let x_46 : i32 = gl_VertexIndex;
|
||||||
|
indexable = array<vec2<f32>, 3>(vec2<f32>(-1.0, 1.0), vec2<f32>(1.0, 1.0), vec2<f32>(-1.0, -1.0));
|
||||||
|
let x_51 : vec2<f32> = indexable[x_46];
|
||||||
|
let x_52 : vec2<f32> = (mat2x2<f32>((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])) * x_51);
|
||||||
|
return vec4<f32>(x_52.x, x_52.y, 0.0, 1.0);
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Validation Failure:
|
||||||
|
struct vertexUniformBuffer1 {
|
||||||
|
float2x2 transform1;
|
||||||
|
};
|
||||||
|
struct vertexUniformBuffer2 {
|
||||||
|
float2x2 transform2;
|
||||||
|
};
|
||||||
|
struct tint_symbol_1 {
|
||||||
|
int gl_VertexIndex : SV_VertexID;
|
||||||
|
};
|
||||||
|
struct tint_symbol_2 {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
ConstantBuffer<vertexUniformBuffer1> x_20 : register(b0, space0);
|
||||||
|
ConstantBuffer<vertexUniformBuffer2> x_26 : register(b0, space1);
|
||||||
|
|
||||||
|
tint_symbol_2 main(tint_symbol_1 tint_symbol) {
|
||||||
|
const int gl_VertexIndex = tint_symbol.gl_VertexIndex;
|
||||||
|
float2 indexable[3] = {float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f)};
|
||||||
|
const float2x2 x_23 = x_20.transform1;
|
||||||
|
const float2x2 x_28 = x_26.transform2;
|
||||||
|
const int x_46 = gl_VertexIndex;
|
||||||
|
const float2 tint_symbol_3[3] = {float2(-1.0f, 1.0f), float2(1.0f, 1.0f), float2(-1.0f, -1.0f)};
|
||||||
|
indexable = tint_symbol_3;
|
||||||
|
const float2 x_51 = indexable[x_46];
|
||||||
|
const float2 x_52 = mul(x_51, float2x2((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])));
|
||||||
|
const tint_symbol_2 tint_symbol_4 = {float4(x_52.x, x_52.y, 0.0f, 1.0f)};
|
||||||
|
return tint_symbol_4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
warning: DXIL.dll not found. Resulting DXIL will not be signed for use in release environments.
|
||||||
|
|
||||||
|
error: validation errors
|
||||||
|
error: SV_VertexID must be uint.
|
||||||
|
Validation failed.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Validation Failure:
|
||||||
|
|
||||||
|
Compilation failed:
|
||||||
|
|
||||||
|
program_source:17:55: error: type 'int' is not valid for attribute 'vertex_id'
|
||||||
|
vertex tint_symbol_2 tint_symbol(int gl_VertexIndex [[vertex_id]], constant vertexUniformBuffer1& x_20 [[buffer(0)]], constant vertexUniformBuffer2& x_26 [[buffer(0)]]) {
|
||||||
|
^~~~~~~~~
|
||||||
|
program_source:18:37: warning: suggest braces around initialization of subobject
|
||||||
|
tint_array_wrapper_0 indexable = {0.0f};
|
||||||
|
^~~~
|
||||||
|
{ }
|
||||||
|
program_source:22:47: warning: suggest braces around initialization of subobject
|
||||||
|
tint_array_wrapper_0 const tint_symbol_3 = {float2(-1.0f, 1.0f), float2(1.0f, 1.0f), float2(-1.0f, -1.0f)};
|
||||||
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
{ }
|
|
@ -0,0 +1,109 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 64
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
|
||||||
|
OpName %tint_pointsize "tint_pointsize"
|
||||||
|
OpName %vertexUniformBuffer1 "vertexUniformBuffer1"
|
||||||
|
OpMemberName %vertexUniformBuffer1 0 "transform1"
|
||||||
|
OpName %x_20 "x_20"
|
||||||
|
OpName %vertexUniformBuffer2 "vertexUniformBuffer2"
|
||||||
|
OpMemberName %vertexUniformBuffer2 0 "transform2"
|
||||||
|
OpName %x_26 "x_26"
|
||||||
|
OpName %tint_symbol "tint_symbol"
|
||||||
|
OpName %tint_symbol_2 "tint_symbol_2"
|
||||||
|
OpName %tint_symbol_3 "tint_symbol_3"
|
||||||
|
OpName %tint_symbol_1 "tint_symbol_1"
|
||||||
|
OpName %main "main"
|
||||||
|
OpName %indexable "indexable"
|
||||||
|
OpDecorate %tint_pointsize BuiltIn PointSize
|
||||||
|
OpDecorate %vertexUniformBuffer1 Block
|
||||||
|
OpMemberDecorate %vertexUniformBuffer1 0 Offset 0
|
||||||
|
OpMemberDecorate %vertexUniformBuffer1 0 ColMajor
|
||||||
|
OpMemberDecorate %vertexUniformBuffer1 0 MatrixStride 8
|
||||||
|
OpDecorate %x_20 NonWritable
|
||||||
|
OpDecorate %x_20 DescriptorSet 0
|
||||||
|
OpDecorate %x_20 Binding 0
|
||||||
|
OpDecorate %vertexUniformBuffer2 Block
|
||||||
|
OpMemberDecorate %vertexUniformBuffer2 0 Offset 0
|
||||||
|
OpMemberDecorate %vertexUniformBuffer2 0 ColMajor
|
||||||
|
OpMemberDecorate %vertexUniformBuffer2 0 MatrixStride 8
|
||||||
|
OpDecorate %x_26 NonWritable
|
||||||
|
OpDecorate %x_26 DescriptorSet 1
|
||||||
|
OpDecorate %x_26 Binding 0
|
||||||
|
OpDecorate %tint_symbol BuiltIn VertexIndex
|
||||||
|
OpDecorate %tint_symbol_2 BuiltIn Position
|
||||||
|
OpDecorate %_arr_v2float_uint_3 ArrayStride 8
|
||||||
|
%float = OpTypeFloat 32
|
||||||
|
%_ptr_Output_float = OpTypePointer Output %float
|
||||||
|
%4 = OpConstantNull %float
|
||||||
|
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
|
||||||
|
%v2float = OpTypeVector %float 2
|
||||||
|
%mat2v2float = OpTypeMatrix %v2float 2
|
||||||
|
%vertexUniformBuffer1 = OpTypeStruct %mat2v2float
|
||||||
|
%_ptr_Uniform_vertexUniformBuffer1 = OpTypePointer Uniform %vertexUniformBuffer1
|
||||||
|
%x_20 = OpVariable %_ptr_Uniform_vertexUniformBuffer1 Uniform
|
||||||
|
%vertexUniformBuffer2 = OpTypeStruct %mat2v2float
|
||||||
|
%_ptr_Uniform_vertexUniformBuffer2 = OpTypePointer Uniform %vertexUniformBuffer2
|
||||||
|
%x_26 = OpVariable %_ptr_Uniform_vertexUniformBuffer2 Uniform
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%_ptr_Input_int = OpTypePointer Input %int
|
||||||
|
%tint_symbol = OpVariable %_ptr_Input_int Input
|
||||||
|
%v4float = OpTypeVector %float 4
|
||||||
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||||
|
%19 = OpConstantNull %v4float
|
||||||
|
%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %19
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%20 = OpTypeFunction %void %v4float
|
||||||
|
%25 = OpTypeFunction %void
|
||||||
|
%float_1 = OpConstant %float 1
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%uint_3 = OpConstant %uint 3
|
||||||
|
%_arr_v2float_uint_3 = OpTypeArray %v2float %uint_3
|
||||||
|
%_ptr_Function__arr_v2float_uint_3 = OpTypePointer Function %_arr_v2float_uint_3
|
||||||
|
%34 = OpConstantNull %_arr_v2float_uint_3
|
||||||
|
%uint_0 = OpConstant %uint 0
|
||||||
|
%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float
|
||||||
|
%float_n1 = OpConstant %float -1
|
||||||
|
%43 = OpConstantComposite %v2float %float_n1 %float_1
|
||||||
|
%44 = OpConstantComposite %v2float %float_1 %float_1
|
||||||
|
%45 = OpConstantComposite %v2float %float_n1 %float_n1
|
||||||
|
%46 = OpConstantComposite %_arr_v2float_uint_3 %43 %44 %45
|
||||||
|
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
||||||
|
%uint_1 = OpConstant %uint 1
|
||||||
|
%float_0 = OpConstant %float 0
|
||||||
|
%tint_symbol_3 = OpFunction %void None %20
|
||||||
|
%tint_symbol_1 = OpFunctionParameter %v4float
|
||||||
|
%24 = OpLabel
|
||||||
|
OpStore %tint_symbol_2 %tint_symbol_1
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%main = OpFunction %void None %25
|
||||||
|
%27 = OpLabel
|
||||||
|
%indexable = OpVariable %_ptr_Function__arr_v2float_uint_3 Function %34
|
||||||
|
OpStore %tint_pointsize %float_1
|
||||||
|
%37 = OpAccessChain %_ptr_Uniform_mat2v2float %x_20 %uint_0
|
||||||
|
%38 = OpLoad %mat2v2float %37
|
||||||
|
%39 = OpAccessChain %_ptr_Uniform_mat2v2float %x_26 %uint_0
|
||||||
|
%40 = OpLoad %mat2v2float %39
|
||||||
|
%41 = OpLoad %int %tint_symbol
|
||||||
|
OpStore %indexable %46
|
||||||
|
%48 = OpAccessChain %_ptr_Function_v2float %indexable %41
|
||||||
|
%49 = OpLoad %v2float %48
|
||||||
|
%50 = OpCompositeExtract %v2float %38 0
|
||||||
|
%51 = OpCompositeExtract %v2float %40 0
|
||||||
|
%52 = OpFAdd %v2float %50 %51
|
||||||
|
%54 = OpCompositeExtract %v2float %38 1
|
||||||
|
%55 = OpCompositeExtract %v2float %40 1
|
||||||
|
%56 = OpFAdd %v2float %54 %55
|
||||||
|
%57 = OpCompositeConstruct %mat2v2float %52 %56
|
||||||
|
%58 = OpMatrixTimesVector %v2float %57 %49
|
||||||
|
%60 = OpCompositeExtract %float %58 0
|
||||||
|
%61 = OpCompositeExtract %float %58 1
|
||||||
|
%63 = OpCompositeConstruct %v4float %60 %61 %float_0 %float_1
|
||||||
|
%59 = OpFunctionCall %void %tint_symbol_3 %63
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,25 @@
|
||||||
|
[[block]]
|
||||||
|
struct vertexUniformBuffer1 {
|
||||||
|
transform1 : mat2x2<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[block]]
|
||||||
|
struct vertexUniformBuffer2 {
|
||||||
|
transform2 : mat2x2<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[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 : i32) -> [[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;
|
||||||
|
let x_46 : i32 = gl_VertexIndex;
|
||||||
|
indexable = array<vec2<f32>, 3>(vec2<f32>(-1.0, 1.0), vec2<f32>(1.0, 1.0), vec2<f32>(-1.0, -1.0));
|
||||||
|
let x_51 : vec2<f32> = indexable[x_46];
|
||||||
|
let x_52 : vec2<f32> = (mat2x2<f32>((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])) * x_51);
|
||||||
|
return vec4<f32>(x_52.x, x_52.y, 0.0, 1.0);
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
|
||||||
|
OpCapability Shader
|
||||||
|
%1 = OpExtInstImport "GLSL.std.450"
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint GLCompute %main "main"
|
||||||
|
OpExecutionMode %main LocalSize 1 1 1
|
||||||
|
OpSource GLSL 450
|
||||||
|
OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
|
||||||
|
OpSourceExtension "GL_GOOGLE_include_directive"
|
||||||
|
OpName %main "main"
|
||||||
|
OpName %srcValue "srcValue"
|
||||||
|
OpName %Src "Src"
|
||||||
|
OpName %Dst "Dst"
|
||||||
|
OpDecorate %Src DescriptorSet 0
|
||||||
|
OpDecorate %Src Binding 0
|
||||||
|
OpDecorate %Src NonWritable
|
||||||
|
OpDecorate %Dst DescriptorSet 0
|
||||||
|
OpDecorate %Dst Binding 1
|
||||||
|
OpDecorate %Dst NonReadable
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%3 = OpTypeFunction %void
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%v4uint = OpTypeVector %uint 4
|
||||||
|
%_ptr_Function_v4uint = OpTypePointer Function %v4uint
|
||||||
|
%10 = OpTypeImage %uint 2D 0 0 0 2 R32ui
|
||||||
|
%_ptr_UniformConstant_10 = OpTypePointer UniformConstant %10
|
||||||
|
%Src = OpVariable %_ptr_UniformConstant_10 UniformConstant
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%v2int = OpTypeVector %int 2
|
||||||
|
%int_0 = OpConstant %int 0
|
||||||
|
%17 = OpConstantComposite %v2int %int_0 %int_0
|
||||||
|
%uint_0 = OpConstant %uint 0
|
||||||
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||||
|
%int_1 = OpConstant %int 1
|
||||||
|
%Dst = OpVariable %_ptr_UniformConstant_10 UniformConstant
|
||||||
|
%main = OpFunction %void None %3
|
||||||
|
%5 = OpLabel
|
||||||
|
%srcValue = OpVariable %_ptr_Function_v4uint Function
|
||||||
|
%13 = OpLoad %10 %Src
|
||||||
|
%18 = OpImageRead %v4uint %13 %17
|
||||||
|
OpStore %srcValue %18
|
||||||
|
%21 = OpAccessChain %_ptr_Function_uint %srcValue %uint_0
|
||||||
|
%22 = OpLoad %uint %21
|
||||||
|
%24 = OpIAdd %uint %22 %int_1
|
||||||
|
OpStore %21 %24
|
||||||
|
%26 = OpLoad %10 %Dst
|
||||||
|
%27 = OpLoad %v4uint %srcValue
|
||||||
|
OpImageWrite %26 %17 %27
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,15 @@
|
||||||
|
Texture2D<uint4> Src : register(t0, space0);
|
||||||
|
RWTexture2D<uint4> Dst : register(u1, space0);
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void main() {
|
||||||
|
uint4 srcValue = uint4(0u, 0u, 0u, 0u);
|
||||||
|
const uint4 x_18 = Src.Load(int3(0, 0, 0));
|
||||||
|
srcValue = x_18;
|
||||||
|
const uint x_22 = srcValue.x;
|
||||||
|
srcValue.x = (x_22 + asuint(1));
|
||||||
|
const uint4 x_27 = srcValue;
|
||||||
|
Dst[int2(0, 0)] = x_27;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Validation Failure:
|
||||||
|
|
||||||
|
Compilation failed:
|
||||||
|
|
||||||
|
program_source:6:22: error: use of undeclared identifier 'Src'
|
||||||
|
uint4 const x_18 = Src.read(int2(0, 0));
|
||||||
|
^
|
||||||
|
program_source:8:29: error: address of vector element requested
|
||||||
|
thread uint* const x_21 = &(srcValue.x);
|
||||||
|
^ ~~~~~~~~~~
|
||||||
|
program_source:12:3: error: use of undeclared identifier 'Dst'
|
||||||
|
Dst.write(x_27, int2(0, 0));
|
||||||
|
^
|
|
@ -0,0 +1,56 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 32
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint GLCompute %main "main"
|
||||||
|
OpExecutionMode %main LocalSize 1 1 1
|
||||||
|
OpName %Src "Src"
|
||||||
|
OpName %Dst "Dst"
|
||||||
|
OpName %main "main"
|
||||||
|
OpName %srcValue "srcValue"
|
||||||
|
OpDecorate %Src NonWritable
|
||||||
|
OpDecorate %Src DescriptorSet 0
|
||||||
|
OpDecorate %Src Binding 0
|
||||||
|
OpDecorate %Dst NonReadable
|
||||||
|
OpDecorate %Dst DescriptorSet 0
|
||||||
|
OpDecorate %Dst Binding 1
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%3 = OpTypeImage %uint 2D 0 0 0 2 R32ui
|
||||||
|
%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3
|
||||||
|
%Src = OpVariable %_ptr_UniformConstant_3 UniformConstant
|
||||||
|
%_ptr_UniformConstant_3_0 = OpTypePointer UniformConstant %3
|
||||||
|
%Dst = OpVariable %_ptr_UniformConstant_3_0 UniformConstant
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%7 = OpTypeFunction %void
|
||||||
|
%v4uint = OpTypeVector %uint 4
|
||||||
|
%_ptr_Function_v4uint = OpTypePointer Function %v4uint
|
||||||
|
%14 = OpConstantNull %v4uint
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%v2int = OpTypeVector %int 2
|
||||||
|
%int_0 = OpConstant %int 0
|
||||||
|
%20 = OpConstantComposite %v2int %int_0 %int_0
|
||||||
|
%uint_0 = OpConstant %uint 0
|
||||||
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||||
|
%int_1 = OpConstant %int 1
|
||||||
|
%main = OpFunction %void None %7
|
||||||
|
%10 = OpLabel
|
||||||
|
%srcValue = OpVariable %_ptr_Function_v4uint Function %14
|
||||||
|
%16 = OpLoad %3 %Src
|
||||||
|
%15 = OpImageRead %v4uint %16 %20
|
||||||
|
OpStore %srcValue %15
|
||||||
|
%23 = OpAccessChain %_ptr_Function_uint %srcValue %uint_0
|
||||||
|
%24 = OpLoad %uint %23
|
||||||
|
%25 = OpAccessChain %_ptr_Function_uint %srcValue %uint_0
|
||||||
|
%26 = OpBitcast %uint %int_1
|
||||||
|
%28 = OpIAdd %uint %24 %26
|
||||||
|
OpStore %25 %28
|
||||||
|
%29 = OpLoad %v4uint %srcValue
|
||||||
|
%31 = OpLoad %3 %Dst
|
||||||
|
OpImageWrite %31 %20 %29
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,16 @@
|
||||||
|
[[group(0), binding(0)]] var Src : texture_storage_2d<r32uint, read>;
|
||||||
|
|
||||||
|
[[group(0), binding(1)]] var Dst : texture_storage_2d<r32uint, write>;
|
||||||
|
|
||||||
|
[[stage(compute)]]
|
||||||
|
fn main() {
|
||||||
|
var srcValue : vec4<u32>;
|
||||||
|
let x_18 : vec4<u32> = textureLoad(Src, vec2<i32>(0, 0));
|
||||||
|
srcValue = x_18;
|
||||||
|
let x_21 : ptr<function, u32> = &(srcValue.x);
|
||||||
|
let x_22 : u32 = *(x_21);
|
||||||
|
*(x_21) = (x_22 + bitcast<u32>(1));
|
||||||
|
let x_27 : vec4<u32> = srcValue;
|
||||||
|
textureStore(Dst, vec2<i32>(0, 0), x_27);
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
[[group(0), binding(0)]] var Src : [[access(read)]] texture_storage_2d<r32uint>;
|
||||||
|
[[group(0), binding(1)]] var Dst : [[access(write)]] texture_storage_2d<r32uint>;
|
||||||
|
|
||||||
|
[[stage(compute)]]
|
||||||
|
fn main() {
|
||||||
|
var srcValue : vec4<u32>;
|
||||||
|
let x_22 : vec4<u32> = textureLoad(Src, vec2<i32>(0, 0));
|
||||||
|
srcValue = x_22;
|
||||||
|
let x_23 : ptr<function, u32> = &srcValue.x;
|
||||||
|
let x_24 : u32 = *x_23;
|
||||||
|
let x_25 : u32 = (x_24 + 1u);
|
||||||
|
let x_27 : vec4<u32> = srcValue;
|
||||||
|
textureStore(Dst, vec2<i32>(0, 0), x_27.xxxx);
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
bug/tint/453.wgsl:1:79 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
|
||||||
|
[[group(0), binding(0)]] var Src : [[access(read)]] texture_storage_2d<r32uint>;
|
||||||
|
^
|
||||||
|
|
||||||
|
bug/tint/453.wgsl:2:80 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
|
||||||
|
[[group(0), binding(1)]] var Dst : [[access(write)]] texture_storage_2d<r32uint>;
|
||||||
|
^
|
||||||
|
|
||||||
|
Texture2D<uint4> Src : register(t0, space0);
|
||||||
|
RWTexture2D<uint4> Dst : register(u1, space0);
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void main() {
|
||||||
|
uint4 srcValue = uint4(0u, 0u, 0u, 0u);
|
||||||
|
const uint4 x_22 = Src.Load(int3(0, 0, 0));
|
||||||
|
srcValue = x_22;
|
||||||
|
const uint x_24 = srcValue.x;
|
||||||
|
const uint x_25 = (x_24 + 1u);
|
||||||
|
const uint4 x_27 = srcValue;
|
||||||
|
Dst[int2(0, 0)] = x_27.xxxx;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
bug/tint/453.wgsl:1:79 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
|
||||||
|
[[group(0), binding(0)]] var Src : [[access(read)]] texture_storage_2d<r32uint>;
|
||||||
|
^
|
||||||
|
|
||||||
|
bug/tint/453.wgsl:2:80 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
|
||||||
|
[[group(0), binding(1)]] var Dst : [[access(write)]] texture_storage_2d<r32uint>;
|
||||||
|
^
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Validation Failure:
|
||||||
|
|
||||||
|
Compilation failed:
|
||||||
|
|
||||||
|
program_source:6:22: error: use of undeclared identifier 'Src'
|
||||||
|
uint4 const x_22 = Src.read(int2(0, 0));
|
||||||
|
^
|
||||||
|
program_source:8:29: error: address of vector element requested
|
||||||
|
thread uint* const x_23 = &(srcValue.x);
|
||||||
|
^ ~~~~~~~~~~
|
||||||
|
program_source:12:3: error: use of undeclared identifier 'Dst'
|
||||||
|
Dst.write(x_27.xxxx, int2(0, 0));
|
||||||
|
^
|
|
@ -0,0 +1,62 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
bug/tint/453.wgsl:1:79 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
|
||||||
|
[[group(0), binding(0)]] var Src : [[access(read)]] texture_storage_2d<r32uint>;
|
||||||
|
^
|
||||||
|
|
||||||
|
bug/tint/453.wgsl:2:80 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
|
||||||
|
[[group(0), binding(1)]] var Dst : [[access(write)]] texture_storage_2d<r32uint>;
|
||||||
|
^
|
||||||
|
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 31
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint GLCompute %main "main"
|
||||||
|
OpExecutionMode %main LocalSize 1 1 1
|
||||||
|
OpName %Src "Src"
|
||||||
|
OpName %Dst "Dst"
|
||||||
|
OpName %main "main"
|
||||||
|
OpName %srcValue "srcValue"
|
||||||
|
OpDecorate %Src NonWritable
|
||||||
|
OpDecorate %Src DescriptorSet 0
|
||||||
|
OpDecorate %Src Binding 0
|
||||||
|
OpDecorate %Dst NonReadable
|
||||||
|
OpDecorate %Dst DescriptorSet 0
|
||||||
|
OpDecorate %Dst Binding 1
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%3 = OpTypeImage %uint 2D 0 0 0 2 R32ui
|
||||||
|
%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3
|
||||||
|
%Src = OpVariable %_ptr_UniformConstant_3 UniformConstant
|
||||||
|
%_ptr_UniformConstant_3_0 = OpTypePointer UniformConstant %3
|
||||||
|
%Dst = OpVariable %_ptr_UniformConstant_3_0 UniformConstant
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%7 = OpTypeFunction %void
|
||||||
|
%v4uint = OpTypeVector %uint 4
|
||||||
|
%_ptr_Function_v4uint = OpTypePointer Function %v4uint
|
||||||
|
%14 = OpConstantNull %v4uint
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%v2int = OpTypeVector %int 2
|
||||||
|
%int_0 = OpConstant %int 0
|
||||||
|
%20 = OpConstantComposite %v2int %int_0 %int_0
|
||||||
|
%uint_0 = OpConstant %uint 0
|
||||||
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||||
|
%uint_1 = OpConstant %uint 1
|
||||||
|
%main = OpFunction %void None %7
|
||||||
|
%10 = OpLabel
|
||||||
|
%srcValue = OpVariable %_ptr_Function_v4uint Function %14
|
||||||
|
%16 = OpLoad %3 %Src
|
||||||
|
%15 = OpImageRead %v4uint %16 %20
|
||||||
|
OpStore %srcValue %15
|
||||||
|
%23 = OpAccessChain %_ptr_Function_uint %srcValue %uint_0
|
||||||
|
%24 = OpLoad %uint %23
|
||||||
|
%26 = OpIAdd %uint %24 %uint_1
|
||||||
|
%27 = OpLoad %v4uint %srcValue
|
||||||
|
%29 = OpLoad %3 %Dst
|
||||||
|
%30 = OpVectorShuffle %v4uint %27 %27 0 0 0 0
|
||||||
|
OpImageWrite %29 %20 %30
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,24 @@
|
||||||
|
bug/tint/453.wgsl:1:79 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
|
||||||
|
[[group(0), binding(0)]] var Src : [[access(read)]] texture_storage_2d<r32uint>;
|
||||||
|
^
|
||||||
|
|
||||||
|
bug/tint/453.wgsl:2:80 warning: use of deprecated language feature: access control is expected as last parameter of storage textures
|
||||||
|
[[group(0), binding(1)]] var Dst : [[access(write)]] texture_storage_2d<r32uint>;
|
||||||
|
^
|
||||||
|
|
||||||
|
[[group(0), binding(0)]] var Src : texture_storage_2d<r32uint, read>;
|
||||||
|
|
||||||
|
[[group(0), binding(1)]] var Dst : texture_storage_2d<r32uint, write>;
|
||||||
|
|
||||||
|
[[stage(compute)]]
|
||||||
|
fn main() {
|
||||||
|
var srcValue : vec4<u32>;
|
||||||
|
let x_22 : vec4<u32> = textureLoad(Src, vec2<i32>(0, 0));
|
||||||
|
srcValue = x_22;
|
||||||
|
let x_23 : ptr<function, u32> = &(srcValue.x);
|
||||||
|
let x_24 : u32 = *(x_23);
|
||||||
|
let x_25 : u32 = (x_24 + 1u);
|
||||||
|
let x_27 : vec4<u32> = srcValue;
|
||||||
|
textureStore(Dst, vec2<i32>(0, 0), x_27.xxxx);
|
||||||
|
return;
|
||||||
|
}
|
|
@ -1,49 +1,28 @@
|
||||||
SKIP: crbug.com/tint/833 loop emission is broken
|
SKIP: FAILED
|
||||||
|
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
struct Uniforms {
|
|
||||||
/* 0x0000 */ packed_uint2 aShape;
|
|
||||||
/* 0x0008 */ packed_uint2 bShape;
|
|
||||||
/* 0x0010 */ packed_uint2 outShape;
|
|
||||||
};
|
|
||||||
struct Matrix {
|
|
||||||
/* 0x0000 */ uint numbers[1];
|
|
||||||
};
|
|
||||||
struct tint_symbol_2 {
|
|
||||||
uint3 global_id [[thread_position_in_grid]];
|
|
||||||
};
|
|
||||||
|
|
||||||
kernel void tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant Uniforms& uniforms [[buffer(3)]], const device Matrix& firstMatrix [[buffer(0)]], const device Matrix& secondMatrix [[buffer(1)]], device Matrix& resultMatrix [[buffer(2)]]) {
|
Validation Failure:
|
||||||
uint3 const global_id = tint_symbol_1.global_id;
|
|
||||||
uint2 const resultCell = uint2(global_id.y, global_id.x);
|
Compilation failed:
|
||||||
uint const dimInner = uniforms.aShape.y;
|
|
||||||
uint const dimOutter = uniforms.outShape.y;
|
program_source:22:18: error: default initialization of an object of const type 'const uint' (aka 'const unsigned int')
|
||||||
uint result = 0u;
|
|
||||||
{
|
|
||||||
uint i = 0u;
|
|
||||||
{
|
|
||||||
bool tint_msl_is_first_1 = true;
|
|
||||||
uint const a;
|
uint const a;
|
||||||
|
^
|
||||||
|
= 0
|
||||||
|
program_source:23:18: error: default initialization of an object of const type 'const uint' (aka 'const unsigned int')
|
||||||
uint const b;
|
uint const b;
|
||||||
for(;;) {
|
^
|
||||||
if (!tint_msl_is_first_1) {
|
= 0
|
||||||
i = (i + 1u);
|
program_source:33:11: error: cannot assign to variable 'a' with const-qualified type 'const uint' (aka 'const unsigned int')
|
||||||
}
|
|
||||||
tint_msl_is_first_1 = false;
|
|
||||||
|
|
||||||
if (!((i < dimInner))) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
a = (i + (resultCell.x * dimInner));
|
a = (i + (resultCell.x * dimInner));
|
||||||
|
~ ^
|
||||||
|
program_source:22:18: note: variable 'a' declared const here
|
||||||
|
uint const a;
|
||||||
|
~~~~~~~~~~~^
|
||||||
|
program_source:34:11: error: cannot assign to variable 'b' with const-qualified type 'const uint' (aka 'const unsigned int')
|
||||||
b = (resultCell.y + (i * dimOutter));
|
b = (resultCell.y + (i * dimOutter));
|
||||||
result = (result + (firstMatrix.numbers[a] * secondMatrix.numbers[b]));
|
~ ^
|
||||||
}
|
program_source:23:18: note: variable 'b' declared const here
|
||||||
}
|
uint const b;
|
||||||
}
|
~~~~~~~~~~~^
|
||||||
uint const index = (resultCell.y + (resultCell.x * dimOutter));
|
|
||||||
resultMatrix.numbers[index] = result;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,26 @@
|
||||||
|
|
||||||
|
[[block]] struct Constants {
|
||||||
|
[[offset(0)]] level : i32;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[group(0), binding(0)]] var<uniform> constants : Constants;
|
||||||
|
[[group(0), binding(1)]] var myTexture : texture_2d_array<f32>;
|
||||||
|
|
||||||
|
[[block]] struct Result {
|
||||||
|
[[offset(0)]] values : [[stride(4)]] array<f32>;
|
||||||
|
};
|
||||||
|
[[group(0), binding(3)]] var<storage, read_write> result : Result;
|
||||||
|
|
||||||
|
[[stage(compute)]]
|
||||||
|
fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||||
|
var flatIndex : u32 =
|
||||||
|
2u * 2u * GlobalInvocationID.z +
|
||||||
|
2u * GlobalInvocationID.y +
|
||||||
|
GlobalInvocationID.x;
|
||||||
|
flatIndex = flatIndex * 1u;
|
||||||
|
var texel : vec4<f32> = textureLoad(myTexture, vec2<i32>(GlobalInvocationID.xy), 0, 0);
|
||||||
|
|
||||||
|
for (var i : u32 = 0u; i < 1u; i = i + 1u) {
|
||||||
|
result.values[flatIndex + i] = texel.r;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
bug/tint/757.wgsl:3:5 warning: use of deprecated language feature: [[offset]] has been replaced with [[size]] and [[align]]
|
||||||
|
[[offset(0)]] level : i32;
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
bug/tint/757.wgsl:10:5 warning: use of deprecated language feature: [[offset]] has been replaced with [[size]] and [[align]]
|
||||||
|
[[offset(0)]] values : [[stride(4)]] array<f32>;
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
struct Constants {
|
||||||
|
int level;
|
||||||
|
};
|
||||||
|
struct tint_symbol_1 {
|
||||||
|
uint3 GlobalInvocationID : SV_DispatchThreadID;
|
||||||
|
};
|
||||||
|
|
||||||
|
RWByteAddressBuffer result : register(u3, space0);
|
||||||
|
|
||||||
|
Texture2DArray<float4> myTexture : register(t1, space0);
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void main(tint_symbol_1 tint_symbol) {
|
||||||
|
const uint3 GlobalInvocationID = tint_symbol.GlobalInvocationID;
|
||||||
|
uint flatIndex = ((((2u * 2u) * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x);
|
||||||
|
flatIndex = (flatIndex * 1u);
|
||||||
|
float4 texel = myTexture.Load(int4(GlobalInvocationID.xy, 0, 0), 0);
|
||||||
|
{
|
||||||
|
uint i = 0u;
|
||||||
|
while (true) {
|
||||||
|
if (!((i < 1u))) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
result.Store((4u * (flatIndex + i)), asuint(texel.r));
|
||||||
|
{
|
||||||
|
i = (i + 1u);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
bug/tint/757.wgsl:3:5 warning: use of deprecated language feature: [[offset]] has been replaced with [[size]] and [[align]]
|
||||||
|
[[offset(0)]] level : i32;
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
bug/tint/757.wgsl:10:5 warning: use of deprecated language feature: [[offset]] has been replaced with [[size]] and [[align]]
|
||||||
|
[[offset(0)]] values : [[stride(4)]] array<f32>;
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Validation Failure:
|
||||||
|
|
||||||
|
Compilation failed:
|
||||||
|
|
||||||
|
program_source:14:18: error: use of undeclared identifier 'myTexture'
|
||||||
|
float4 texel = myTexture.read(int2(GlobalInvocationID.xy), 0, 0);
|
||||||
|
^
|
|
@ -0,0 +1,141 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
bug/tint/757.wgsl:3:5 warning: use of deprecated language feature: [[offset]] has been replaced with [[size]] and [[align]]
|
||||||
|
[[offset(0)]] level : i32;
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
bug/tint/757.wgsl:10:5 warning: use of deprecated language feature: [[offset]] has been replaced with [[size]] and [[align]]
|
||||||
|
[[offset(0)]] values : [[stride(4)]] array<f32>;
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 76
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint GLCompute %main "main" %tint_symbol
|
||||||
|
OpExecutionMode %main LocalSize 1 1 1
|
||||||
|
OpName %Constants "Constants"
|
||||||
|
OpMemberName %Constants 0 "level"
|
||||||
|
OpName %constants "constants"
|
||||||
|
OpName %myTexture "myTexture"
|
||||||
|
OpName %Result "Result"
|
||||||
|
OpMemberName %Result 0 "values"
|
||||||
|
OpName %result "result"
|
||||||
|
OpName %tint_symbol "tint_symbol"
|
||||||
|
OpName %main "main"
|
||||||
|
OpName %flatIndex "flatIndex"
|
||||||
|
OpName %texel "texel"
|
||||||
|
OpName %i "i"
|
||||||
|
OpDecorate %Constants Block
|
||||||
|
OpMemberDecorate %Constants 0 Offset 0
|
||||||
|
OpDecorate %constants NonWritable
|
||||||
|
OpDecorate %constants DescriptorSet 0
|
||||||
|
OpDecorate %constants Binding 0
|
||||||
|
OpDecorate %myTexture DescriptorSet 0
|
||||||
|
OpDecorate %myTexture Binding 1
|
||||||
|
OpDecorate %Result Block
|
||||||
|
OpMemberDecorate %Result 0 Offset 0
|
||||||
|
OpDecorate %_runtimearr_float ArrayStride 4
|
||||||
|
OpDecorate %result DescriptorSet 0
|
||||||
|
OpDecorate %result Binding 3
|
||||||
|
OpDecorate %tint_symbol BuiltIn GlobalInvocationId
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%Constants = OpTypeStruct %int
|
||||||
|
%_ptr_Uniform_Constants = OpTypePointer Uniform %Constants
|
||||||
|
%constants = OpVariable %_ptr_Uniform_Constants Uniform
|
||||||
|
%float = OpTypeFloat 32
|
||||||
|
%7 = OpTypeImage %float 2D 0 1 0 1 Unknown
|
||||||
|
%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7
|
||||||
|
%myTexture = OpVariable %_ptr_UniformConstant_7 UniformConstant
|
||||||
|
%_runtimearr_float = OpTypeRuntimeArray %float
|
||||||
|
%Result = OpTypeStruct %_runtimearr_float
|
||||||
|
%_ptr_StorageBuffer_Result = OpTypePointer StorageBuffer %Result
|
||||||
|
%result = OpVariable %_ptr_StorageBuffer_Result StorageBuffer
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%v3uint = OpTypeVector %uint 3
|
||||||
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||||||
|
%tint_symbol = OpVariable %_ptr_Input_v3uint Input
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%17 = OpTypeFunction %void
|
||||||
|
%uint_2 = OpConstant %uint 2
|
||||||
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
||||||
|
%uint_1 = OpConstant %uint 1
|
||||||
|
%uint_0 = OpConstant %uint 0
|
||||||
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||||
|
%38 = OpConstantNull %uint
|
||||||
|
%v4float = OpTypeVector %float 4
|
||||||
|
%v3int = OpTypeVector %int 3
|
||||||
|
%v2uint = OpTypeVector %uint 2
|
||||||
|
%int_0 = OpConstant %int 0
|
||||||
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
|
%54 = OpConstantNull %v4float
|
||||||
|
%bool = OpTypeBool
|
||||||
|
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
|
||||||
|
%_ptr_Function_float = OpTypePointer Function %float
|
||||||
|
%main = OpFunction %void None %17
|
||||||
|
%20 = OpLabel
|
||||||
|
%flatIndex = OpVariable %_ptr_Function_uint Function %38
|
||||||
|
%texel = OpVariable %_ptr_Function_v4float Function %54
|
||||||
|
%i = OpVariable %_ptr_Function_uint Function %38
|
||||||
|
%22 = OpIMul %uint %uint_2 %uint_2
|
||||||
|
%24 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_2
|
||||||
|
%25 = OpLoad %uint %24
|
||||||
|
%26 = OpIMul %uint %22 %25
|
||||||
|
%28 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_1
|
||||||
|
%29 = OpLoad %uint %28
|
||||||
|
%30 = OpIMul %uint %uint_2 %29
|
||||||
|
%31 = OpIAdd %uint %26 %30
|
||||||
|
%33 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_0
|
||||||
|
%34 = OpLoad %uint %33
|
||||||
|
%35 = OpIAdd %uint %31 %34
|
||||||
|
OpStore %flatIndex %35
|
||||||
|
%39 = OpLoad %uint %flatIndex
|
||||||
|
%40 = OpIMul %uint %39 %uint_1
|
||||||
|
OpStore %flatIndex %40
|
||||||
|
%43 = OpLoad %7 %myTexture
|
||||||
|
%46 = OpLoad %v3uint %tint_symbol
|
||||||
|
%47 = OpVectorShuffle %v2uint %46 %46 0 1
|
||||||
|
%48 = OpCompositeExtract %uint %47 0
|
||||||
|
%49 = OpCompositeExtract %uint %47 1
|
||||||
|
%51 = OpCompositeConstruct %v3int %48 %49 %int_0
|
||||||
|
%41 = OpImageFetch %v4float %43 %51 Lod %int_0
|
||||||
|
OpStore %texel %41
|
||||||
|
OpStore %i %uint_0
|
||||||
|
OpBranch %56
|
||||||
|
%56 = OpLabel
|
||||||
|
OpLoopMerge %57 %58 None
|
||||||
|
OpBranch %59
|
||||||
|
%59 = OpLabel
|
||||||
|
%61 = OpLoad %uint %i
|
||||||
|
%62 = OpULessThan %bool %61 %uint_1
|
||||||
|
%60 = OpLogicalNot %bool %62
|
||||||
|
OpSelectionMerge %64 None
|
||||||
|
OpBranchConditional %60 %65 %64
|
||||||
|
%65 = OpLabel
|
||||||
|
OpBranch %57
|
||||||
|
%64 = OpLabel
|
||||||
|
%66 = OpLoad %uint %flatIndex
|
||||||
|
%67 = OpLoad %uint %i
|
||||||
|
%68 = OpIAdd %uint %66 %67
|
||||||
|
%70 = OpAccessChain %_ptr_StorageBuffer_float %result %uint_0 %68
|
||||||
|
%72 = OpAccessChain %_ptr_Function_float %texel %uint_0
|
||||||
|
%73 = OpLoad %float %72
|
||||||
|
OpStore %70 %73
|
||||||
|
OpBranch %58
|
||||||
|
%58 = OpLabel
|
||||||
|
%74 = OpLoad %uint %i
|
||||||
|
%75 = OpIAdd %uint %74 %uint_1
|
||||||
|
OpStore %i %75
|
||||||
|
OpBranch %56
|
||||||
|
%57 = OpLabel
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
|
||||||
|
|
||||||
|
Validation Failure:
|
||||||
|
1:1: Expected Constituents to be scalars or vectors of the same type as Result Type components
|
||||||
|
%51 = OpCompositeConstruct %v3int %48 %49 %int_0
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
bug/tint/757.wgsl:3:5 warning: use of deprecated language feature: [[offset]] has been replaced with [[size]] and [[align]]
|
||||||
|
[[offset(0)]] level : i32;
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
bug/tint/757.wgsl:10:5 warning: use of deprecated language feature: [[offset]] has been replaced with [[size]] and [[align]]
|
||||||
|
[[offset(0)]] values : [[stride(4)]] array<f32>;
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
[[block]]
|
||||||
|
struct Constants {
|
||||||
|
level : i32;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[group(0), binding(0)]] var<uniform> constants : Constants;
|
||||||
|
|
||||||
|
[[group(0), binding(1)]] var myTexture : texture_2d_array<f32>;
|
||||||
|
|
||||||
|
[[block]]
|
||||||
|
struct Result {
|
||||||
|
values : [[stride(4)]] array<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[group(0), binding(3)]] var<storage, read_write> result : Result;
|
||||||
|
|
||||||
|
[[stage(compute)]]
|
||||||
|
fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
|
||||||
|
var flatIndex : u32 = ((((2u * 2u) * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x);
|
||||||
|
flatIndex = (flatIndex * 1u);
|
||||||
|
var texel : vec4<f32> = textureLoad(myTexture, vec2<i32>(GlobalInvocationID.xy), 0, 0);
|
||||||
|
{
|
||||||
|
var i : u32 = 0u;
|
||||||
|
loop {
|
||||||
|
if (!((i < 1u))) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
result.values[(flatIndex + i)] = texel.r;
|
||||||
|
|
||||||
|
continuing {
|
||||||
|
i = (i + 1u);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
fn f() {
|
||||||
|
let m: mat4x4<f32> = mat4x4<f32>(
|
||||||
|
vec4<f32>(1.0, 1.0, 1.0, 1.0),
|
||||||
|
vec4<f32>(1.0, 1.0, 1.0, 1.0),
|
||||||
|
vec4<f32>(1.0, 1.0, 1.0, 1.0),
|
||||||
|
vec4<f32>(1.0, 1.0, 1.0, 1.0)
|
||||||
|
);
|
||||||
|
let v1: vec4<f32> = m[0];
|
||||||
|
let a: f32 = v1[0];
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
void f() {
|
||||||
|
const float4x4 m = float4x4(float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||||
|
const float4 v1 = m[0];
|
||||||
|
const float a = v1[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void unused_entry_point() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
void f() {
|
||||||
|
float4x4 const m = float4x4(float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||||
|
float4 const v1 = m[0];
|
||||||
|
float const a = v1[0];
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 17
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint GLCompute %unused_entry_point "unused_entry_point"
|
||||||
|
OpExecutionMode %unused_entry_point LocalSize 1 1 1
|
||||||
|
OpName %unused_entry_point "unused_entry_point"
|
||||||
|
OpName %f "f"
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%1 = OpTypeFunction %void
|
||||||
|
%float = OpTypeFloat 32
|
||||||
|
%v4float = OpTypeVector %float 4
|
||||||
|
%mat4v4float = OpTypeMatrix %v4float 4
|
||||||
|
%float_1 = OpConstant %float 1
|
||||||
|
%11 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
|
||||||
|
%12 = OpConstantComposite %mat4v4float %11 %11 %11 %11
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%int_0 = OpConstant %int 0
|
||||||
|
%unused_entry_point = OpFunction %void None %1
|
||||||
|
%4 = OpLabel
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%f = OpFunction %void None %1
|
||||||
|
%6 = OpLabel
|
||||||
|
%15 = OpCompositeExtract %v4float %12 0
|
||||||
|
%16 = OpCompositeExtract %float %15 0
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,5 @@
|
||||||
|
fn f() {
|
||||||
|
let m : mat4x4<f32> = mat4x4<f32>(vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
|
||||||
|
let v1 : vec4<f32> = m[0];
|
||||||
|
let a : f32 = v1[0];
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
error: unhandled instruction with opcode 150: %712 = OpISubBorrow %710 %107 %470
|
|
@ -0,0 +1,3 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
error: unhandled instruction with opcode 150: %712 = OpISubBorrow %710 %107 %470
|
|
@ -0,0 +1,3 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
error: unhandled instruction with opcode 150: %712 = OpISubBorrow %710 %107 %470
|
|
@ -0,0 +1,3 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
error: unhandled instruction with opcode 150: %712 = OpISubBorrow %710 %107 %470
|
Binary file not shown.
|
@ -0,0 +1,10 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
../src/ast/array_accessor_expression.cc:29 internal compiler error: TINT_ASSERT(array_)
|
||||||
|
********************************************************************
|
||||||
|
* The tint shader compiler has encountered an unexpected error. *
|
||||||
|
* *
|
||||||
|
* Please help us fix this issue by submitting a bug report at *
|
||||||
|
* crbug.com/tint with the source program that triggered the bug. *
|
||||||
|
********************************************************************
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
../src/ast/array_accessor_expression.cc:29 internal compiler error: TINT_ASSERT(array_)
|
||||||
|
********************************************************************
|
||||||
|
* The tint shader compiler has encountered an unexpected error. *
|
||||||
|
* *
|
||||||
|
* Please help us fix this issue by submitting a bug report at *
|
||||||
|
* crbug.com/tint with the source program that triggered the bug. *
|
||||||
|
********************************************************************
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
../src/ast/array_accessor_expression.cc:29 internal compiler error: TINT_ASSERT(array_)
|
||||||
|
********************************************************************
|
||||||
|
* The tint shader compiler has encountered an unexpected error. *
|
||||||
|
* *
|
||||||
|
* Please help us fix this issue by submitting a bug report at *
|
||||||
|
* crbug.com/tint with the source program that triggered the bug. *
|
||||||
|
********************************************************************
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
../src/ast/array_accessor_expression.cc:29 internal compiler error: TINT_ASSERT(array_)
|
||||||
|
********************************************************************
|
||||||
|
* The tint shader compiler has encountered an unexpected error. *
|
||||||
|
* *
|
||||||
|
* Please help us fix this issue by submitting a bug report at *
|
||||||
|
* crbug.com/tint with the source program that triggered the bug. *
|
||||||
|
********************************************************************
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
[[block]] struct Result {
|
||||||
|
values : array<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
let width : u32 = 128u;
|
||||||
|
|
||||||
|
[[group(0), binding(0)]] var tex : texture_depth_2d;
|
||||||
|
[[group(0), binding(1)]] var<storage> result : [[access(read_write)]] Result;
|
||||||
|
|
||||||
|
[[stage(compute)]] fn main(
|
||||||
|
[[builtin(global_invocation_id)]] GlobalInvocationId : vec3<u32>
|
||||||
|
) {
|
||||||
|
result.values[GlobalInvocationId.y * width + GlobalInvocationId.x] = textureLoad(
|
||||||
|
tex, vec2<i32>(i32(GlobalInvocationId.x), i32(GlobalInvocationId.y)), 0);
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
bug/tint/827.wgsl:8:26 warning: use of deprecated language feature: declare access with var<storage, read_write> instead of using [[access]] decoration
|
||||||
|
[[group(0), binding(1)]] var<storage> result : [[access(read_write)]] Result;
|
||||||
|
^^^
|
||||||
|
|
||||||
|
struct tint_symbol_1 {
|
||||||
|
uint3 GlobalInvocationId : SV_DispatchThreadID;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint width = 128u;
|
||||||
|
RWByteAddressBuffer result : register(u1, space0);
|
||||||
|
|
||||||
|
Texture2D tex : register(t0, space0);
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void main(tint_symbol_1 tint_symbol) {
|
||||||
|
const uint3 GlobalInvocationId = tint_symbol.GlobalInvocationId;
|
||||||
|
result.Store((4u * ((GlobalInvocationId.y * width) + GlobalInvocationId.x)), asuint(tex.Load(int3(int(GlobalInvocationId.x), int(GlobalInvocationId.y), 0), 0)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
bug/tint/827.wgsl:8:26 warning: use of deprecated language feature: declare access with var<storage, read_write> instead of using [[access]] decoration
|
||||||
|
[[group(0), binding(1)]] var<storage> result : [[access(read_write)]] Result;
|
||||||
|
^^^
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Validation Failure:
|
||||||
|
|
||||||
|
Compilation failed:
|
||||||
|
|
||||||
|
program_source:10:76: error: use of undeclared identifier 'tex'
|
||||||
|
result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = tex.read(int2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0);
|
||||||
|
^
|
|
@ -0,0 +1,73 @@
|
||||||
|
bug/tint/827.wgsl:8:26 warning: use of deprecated language feature: declare access with var<storage, read_write> instead of using [[access]] decoration
|
||||||
|
[[group(0), binding(1)]] var<storage> result : [[access(read_write)]] Result;
|
||||||
|
^^^
|
||||||
|
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 43
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint GLCompute %main "main" %tint_symbol
|
||||||
|
OpExecutionMode %main LocalSize 1 1 1
|
||||||
|
OpName %width "width"
|
||||||
|
OpName %tex "tex"
|
||||||
|
OpName %Result "Result"
|
||||||
|
OpMemberName %Result 0 "values"
|
||||||
|
OpName %result "result"
|
||||||
|
OpName %tint_symbol "tint_symbol"
|
||||||
|
OpName %main "main"
|
||||||
|
OpDecorate %tex DescriptorSet 0
|
||||||
|
OpDecorate %tex Binding 0
|
||||||
|
OpDecorate %Result Block
|
||||||
|
OpMemberDecorate %Result 0 Offset 0
|
||||||
|
OpDecorate %_runtimearr_float ArrayStride 4
|
||||||
|
OpDecorate %result DescriptorSet 0
|
||||||
|
OpDecorate %result Binding 1
|
||||||
|
OpDecorate %tint_symbol BuiltIn GlobalInvocationId
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%width = OpConstant %uint 128
|
||||||
|
%float = OpTypeFloat 32
|
||||||
|
%5 = OpTypeImage %float 2D 1 0 0 1 Unknown
|
||||||
|
%_ptr_UniformConstant_5 = OpTypePointer UniformConstant %5
|
||||||
|
%tex = OpVariable %_ptr_UniformConstant_5 UniformConstant
|
||||||
|
%_runtimearr_float = OpTypeRuntimeArray %float
|
||||||
|
%Result = OpTypeStruct %_runtimearr_float
|
||||||
|
%_ptr_StorageBuffer_Result = OpTypePointer StorageBuffer %Result
|
||||||
|
%result = OpVariable %_ptr_StorageBuffer_Result StorageBuffer
|
||||||
|
%v3uint = OpTypeVector %uint 3
|
||||||
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||||||
|
%tint_symbol = OpVariable %_ptr_Input_v3uint Input
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%14 = OpTypeFunction %void
|
||||||
|
%uint_0 = OpConstant %uint 0
|
||||||
|
%uint_1 = OpConstant %uint 1
|
||||||
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
||||||
|
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
|
||||||
|
%v4float = OpTypeVector %float 4
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%v2int = OpTypeVector %int 2
|
||||||
|
%int_0 = OpConstant %int 0
|
||||||
|
%main = OpFunction %void None %14
|
||||||
|
%17 = OpLabel
|
||||||
|
%21 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_1
|
||||||
|
%22 = OpLoad %uint %21
|
||||||
|
%23 = OpIMul %uint %22 %width
|
||||||
|
%24 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_0
|
||||||
|
%25 = OpLoad %uint %24
|
||||||
|
%26 = OpIAdd %uint %23 %25
|
||||||
|
%28 = OpAccessChain %_ptr_StorageBuffer_float %result %uint_0 %26
|
||||||
|
%32 = OpLoad %5 %tex
|
||||||
|
%36 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_0
|
||||||
|
%37 = OpLoad %uint %36
|
||||||
|
%35 = OpBitcast %int %37
|
||||||
|
%39 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_1
|
||||||
|
%40 = OpLoad %uint %39
|
||||||
|
%38 = OpBitcast %int %40
|
||||||
|
%41 = OpCompositeConstruct %v2int %35 %38
|
||||||
|
%30 = OpImageFetch %v4float %32 %41 Lod %int_0
|
||||||
|
%29 = OpCompositeExtract %float %30 0
|
||||||
|
OpStore %28 %29
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,19 @@
|
||||||
|
bug/tint/827.wgsl:8:26 warning: use of deprecated language feature: declare access with var<storage, read_write> instead of using [[access]] decoration
|
||||||
|
[[group(0), binding(1)]] var<storage> result : [[access(read_write)]] Result;
|
||||||
|
^^^
|
||||||
|
|
||||||
|
[[block]]
|
||||||
|
struct Result {
|
||||||
|
values : array<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
let width : u32 = 128u;
|
||||||
|
|
||||||
|
[[group(0), binding(0)]] var tex : texture_depth_2d;
|
||||||
|
|
||||||
|
[[group(0), binding(1)]] var<storage, read_write> result : Result;
|
||||||
|
|
||||||
|
[[stage(compute)]]
|
||||||
|
fn main([[builtin(global_invocation_id)]] GlobalInvocationId : vec3<u32>) {
|
||||||
|
result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = textureLoad(tex, vec2<i32>(i32(GlobalInvocationId.x), i32(GlobalInvocationId.y)), 0);
|
||||||
|
}
|
Loading…
Reference in New Issue