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 mat2 identical_mat_0; 21}; 22 23layout(set = 0, binding = 1) uniform block1 { 24 mat2 identical_mat_1; 25}; 26 27layout(set = 0, binding = 2) buffer block3 { 28 vec2 test0; 29 vec2 test1; 30}; 31 32void main() { 33 test0 = identical_mat_0 * test0; 34 test1 = identical_mat_1 * test1; 35} 36END 37 38# This is bound as an SSBO, so matrix stride is 8 39BUFFER buf0 DATA_TYPE mat2x2<float> DATA 401.0 0.0 410.0 1.0 42END 43 44# This is bound as a UBO so matrix stride is 16 due to GLSLang setting 45# STD140 layout. 46BUFFER buf1 DATA_TYPE mat2x2<float> DATA 471.0 0.0 0.0 0.0 480.0 1.0 0.0 0.0 49END 50 51BUFFER buf2 DATA_TYPE vec2<float> DATA 523.7 9.4 534.5 6.1 54END 55 56PIPELINE compute pipeline 57 ATTACH compute_shader 58 59 BIND BUFFER buf0 AS storage DESCRIPTOR_SET 0 BINDING 0 60 BIND BUFFER buf1 AS uniform DESCRIPTOR_SET 0 BINDING 1 61 BIND BUFFER buf2 AS storage DESCRIPTOR_SET 0 BINDING 2 62END 63 64RUN pipeline 1 1 1 65 66EXPECT buf2 IDX 0 EQ 3.7 9.4 67EXPECT buf2 IDX 8 EQ 4.5 6.1 68