• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!amber
2# Copyright 2020 The Amber Authors.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#     https://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16SHADER compute compute_shader GLSL
17#version 430
18
19layout(set = 0, binding = 0) buffer block0
20{
21    vec4 data;
22} ssbo_array_0[2];
23layout(set = 0, binding = 1) buffer block1
24{
25    int data;
26} ssbo_array_1[2];
27
28void main()
29{
30    ssbo_array_0[0].data = vec4(1, 2, 3, 4);
31    ssbo_array_0[1].data = vec4(5, 6, 7, 8);
32    ssbo_array_1[0].data = 9;
33    ssbo_array_1[1].data = 10;
34}
35END
36
37# The Vulkan spec lists the maximum value of minStorageBufferOffsetAlignment
38# (i.e. the maximum possible alignment requirement) as 256 bytes.
39# Allocate enough space to hold one vec4 (each 16 bytes)
40# after the alignment (256 / 16 + 1).
41BUFFER buf0 DATA_TYPE vec4<float> SIZE 17 FILL 0.0
42BUFFER buf1 DATA_TYPE vec4<float> SIZE 17 FILL 0.0
43# Same as above, but with int32 and double size: 512 / 4 + 1
44BUFFER buf2 DATA_TYPE int32 SIZE 129 FILL 0
45
46PIPELINE compute pipeline
47  ATTACH compute_shader
48
49  # Using the maximum possible required offset alignment of 256 bytes to support all implementations.
50  BIND BUFFER_ARRAY buf0 buf1 AS storage_dynamic DESCRIPTOR_SET 0 BINDING 0 OFFSET 0 256
51  BIND BUFFER_ARRAY buf2 buf2 AS storage_dynamic DESCRIPTOR_SET 0 BINDING 1 OFFSET 0 256 DESCRIPTOR_OFFSET 0 256
52END
53
54RUN pipeline 1 1 1
55
56EXPECT buf0 IDX 0 EQ 1.0 2.0 3.0 4.0
57EXPECT buf1 IDX 256 EQ 5.0 6.0 7.0 8.0
58EXPECT buf2 IDX 0 EQ 9
59EXPECT buf2 IDX 512 EQ 10
60