1[require]
2VK_KHR_spirv_1_4
3
4[compute shader spirv]
5; Tests copying smaller array stride to larger array stride.
6
7OpCapability Shader
8OpMemoryModel Logical GLSL450
9OpEntryPoint GLCompute %main "main" %in_var %out_var
10OpExecutionMode %main LocalSize 1 1 1
11OpDecorate %struct_stride_4 Block
12OpMemberDecorate %struct_stride_4 0 Offset 0
13OpDecorate %struct_stride_8 Block
14OpMemberDecorate %struct_stride_8 0 Offset 0
15OpDecorate %in_var DescriptorSet 0
16OpDecorate %in_var Binding 0
17OpDecorate %out_var DescriptorSet 0
18OpDecorate %out_var Binding 1
19OpDecorate %float_array_32_stride_4 ArrayStride 4
20OpDecorate %float_array_32_stride_8 ArrayStride 8
21%void = OpTypeVoid
22%float = OpTypeFloat 32
23%uint = OpTypeInt 32 0
24%uint_0 = OpConstant %uint 0
25%uint_32 = OpConstant %uint 32
26
27%float_array_32_stride_4 = OpTypeArray %float %uint_32
28%ptr_float_array_32_stride_4 = OpTypePointer StorageBuffer %float_array_32_stride_4
29%struct_stride_4 = OpTypeStruct %float_array_32_stride_4
30%ptr_struct_stride_4 = OpTypePointer StorageBuffer %struct_stride_4
31
32%float_array_32_stride_8 = OpTypeArray %float %uint_32
33%ptr_float_array_32_stride_8 = OpTypePointer StorageBuffer %float_array_32_stride_8
34%struct_stride_8 = OpTypeStruct %float_array_32_stride_8
35%ptr_struct_stride_8 = OpTypePointer StorageBuffer %struct_stride_8
36
37%in_var = OpVariable %ptr_struct_stride_4 StorageBuffer
38%out_var = OpVariable %ptr_struct_stride_8 StorageBuffer
39
40%func_ty = OpTypeFunction %void
41%main = OpFunction %void None %func_ty
42%1 = OpLabel
43%in_gep = OpAccessChain %ptr_float_array_32_stride_4 %in_var %uint_0
44%in_array = OpLoad %float_array_32_stride_4 %in_gep
45%copy = OpCopyLogical %float_array_32_stride_8 %in_array
46%out_gep = OpAccessChain %ptr_float_array_32_stride_8 %out_var %uint_0
47OpStore %out_gep %copy
48OpReturn
49OpFunctionEnd
50
51[test]
52ssbo 0:0 subdata float 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
53ssbo 0:1 subdata float 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
54
55compute entrypoint main
56compute 1 1 1
57
58probe ssbo float 0:1 0 == 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15 0 16 0 17 0 18 0 19 0 20 0 21 0 22 0 23 0 24 0 25 0 26 0 27 0 28 0 29 0 30 0 31 0 32 0
59