1e5c31af7Sopenharmony_ci# Copyright 2018 The Amber Authors.
2e5c31af7Sopenharmony_ci#
3e5c31af7Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
4e5c31af7Sopenharmony_ci# you may not use this file except in compliance with the License.
5e5c31af7Sopenharmony_ci# You may obtain a copy of the License at
6e5c31af7Sopenharmony_ci#
7e5c31af7Sopenharmony_ci#     https://www.apache.org/licenses/LICENSE-2.0
8e5c31af7Sopenharmony_ci#
9e5c31af7Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
10e5c31af7Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
11e5c31af7Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e5c31af7Sopenharmony_ci# See the License for the specific language governing permissions and
13e5c31af7Sopenharmony_ci# limitations under the License.
14e5c31af7Sopenharmony_ci
15e5c31af7Sopenharmony_ci[compute shader]
16e5c31af7Sopenharmony_ci#version 430
17e5c31af7Sopenharmony_ci
18e5c31af7Sopenharmony_cilayout(set = 0, binding = 0) buffer block0 {
19e5c31af7Sopenharmony_ci  float data_set0_binding0[3];
20e5c31af7Sopenharmony_ci};
21e5c31af7Sopenharmony_ci
22e5c31af7Sopenharmony_cilayout(set = 1, binding = 2) buffer block1 {
23e5c31af7Sopenharmony_ci  float data_set1_binding2[3];
24e5c31af7Sopenharmony_ci};
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_cilayout(set = 2, binding = 1) buffer block2 {
27e5c31af7Sopenharmony_ci  float data_set2_binding1[3];
28e5c31af7Sopenharmony_ci};
29e5c31af7Sopenharmony_ci
30e5c31af7Sopenharmony_cilayout(set = 2, binding = 3) buffer block3 {
31e5c31af7Sopenharmony_ci  float data_set2_binding3[3];
32e5c31af7Sopenharmony_ci};
33e5c31af7Sopenharmony_ci
34e5c31af7Sopenharmony_civoid main() {
35e5c31af7Sopenharmony_ci  const uint index = gl_WorkGroupID.x;
36e5c31af7Sopenharmony_ci  data_set0_binding0[index] = data_set0_binding0[index] + 1.0f;
37e5c31af7Sopenharmony_ci  data_set1_binding2[index] = data_set2_binding1[index] -
38e5c31af7Sopenharmony_ci                              data_set1_binding2[index];
39e5c31af7Sopenharmony_ci  data_set2_binding1[index] = 10.0f * data_set2_binding3[index] +
40e5c31af7Sopenharmony_ci                              data_set2_binding1[index];
41e5c31af7Sopenharmony_ci  data_set2_binding3[index] = 30.0f * data_set2_binding3[index];
42e5c31af7Sopenharmony_ci}
43e5c31af7Sopenharmony_ci
44e5c31af7Sopenharmony_ci[test]
45e5c31af7Sopenharmony_cissbo 0:0 subdata vec3  0  1.0  2.0  3.0
46e5c31af7Sopenharmony_cissbo 1:2 subdata vec3  0  4.0  5.0  6.0
47e5c31af7Sopenharmony_cissbo 2:1 subdata vec3  0 21.0 22.0 23.0
48e5c31af7Sopenharmony_cissbo 2:3 subdata vec3  0  0.7  0.8  0.9
49e5c31af7Sopenharmony_cicompute 3 1 1
50e5c31af7Sopenharmony_ci
51e5c31af7Sopenharmony_ciprobe ssbo vec3 0:0 0 ~=  2.0  3.0  4.0
52e5c31af7Sopenharmony_ciprobe ssbo vec3 1:2 0 ~= 17.0 17.0 17.0
53e5c31af7Sopenharmony_ciprobe ssbo vec3 2:1 0 ~= 28.0 30.0 32.0
54e5c31af7Sopenharmony_ciprobe ssbo vec3 2:3 0 ~= 21.0 24.0 27.0
55