1#!amber 2# Copyright 2019 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 float data_set0_binding0[3]; 21}; 22 23layout(set = 1, binding = 2) buffer block1 { 24 float data_set1_binding2[3]; 25}; 26 27layout(set = 2, binding = 1) buffer block2 { 28 float data_set2_binding1[3]; 29}; 30 31layout(set = 2, binding = 3) buffer block3 { 32 float data_set2_binding3[3]; 33}; 34 35void main() { 36 const uint index = gl_WorkGroupID.x; 37 data_set0_binding0[index] = data_set0_binding0[index] + 1.0f; 38 data_set1_binding2[index] = data_set2_binding1[index] - 39 data_set1_binding2[index]; 40 data_set2_binding1[index] = 10.0f * data_set2_binding3[index] + 41 data_set2_binding1[index]; 42 data_set2_binding3[index] = 30.0f * data_set2_binding3[index]; 43} 44END 45 46BUFFER buf0 DATA_TYPE vec3<float> DATA 1.0 2.0 3.0 END 47BUFFER buf1 DATA_TYPE vec3<float> DATA 4.0 5.0 6.0 END 48BUFFER buf2 DATA_TYPE vec3<float> DATA 21.0 22.0 23.0 END 49BUFFER buf3 DATA_TYPE vec3<float> DATA 0.7 0.8 0.9 END 50 51PIPELINE compute pipeline 52 ATTACH compute_shader 53 54 BIND BUFFER buf0 AS storage DESCRIPTOR_SET 0 BINDING 0 55 BIND BUFFER buf1 AS storage DESCRIPTOR_SET 1 BINDING 2 56 BIND BUFFER buf2 AS storage DESCRIPTOR_SET 2 BINDING 1 57 BIND BUFFER buf3 AS storage DESCRIPTOR_SET 2 BINDING 3 58END 59 60RUN pipeline 3 1 1 61 62EXPECT buf0 IDX 0 EQ 2.0 3.0 4.0 63EXPECT buf1 IDX 0 EQ 17.0 17.0 17.0 64EXPECT buf2 IDX 0 EQ 28.0 30.0 32.0 65EXPECT buf3 IDX 0 EQ 21.0 24.0 27.0 66 67EXPECT buf0 IDX 0 TOLERANCE 1 EQ 2.99 3.99 4.99 68EXPECT buf1 IDX 0 TOLERANCE 1 EQ 17.99 17.99 17.99 69EXPECT buf2 IDX 0 TOLERANCE 1 EQ 28.99 30.99 32.99 70EXPECT buf3 IDX 0 TOLERANCE 1 EQ 21.99 24.99 27.99 71 72EXPECT buf0 IDX 0 TOLERANCE 1% EQ 2.0199 3.0199 4.0199 73EXPECT buf1 IDX 0 TOLERANCE 1% EQ 17.0199 17.0199 17.0199 74EXPECT buf2 IDX 0 TOLERANCE 1% EQ 28.0199 30.0199 32.0199 75EXPECT buf3 IDX 0 TOLERANCE 1% EQ 21.0199 24.0199 27.0199 76