Merge pull request #2913 from greg-lunarg/i2905
[platform/upstream/glslang.git] / Test / spv.bufferhandle12.frag
1 #version 450\r
2 #extension GL_EXT_shader_16bit_storage : enable\r
3 #extension GL_EXT_shader_8bit_storage : enable\r
4 #extension GL_EXT_buffer_reference : enable\r
5 \r
6 layout(std140, binding = 0) buffer AcBlock { highp uint ac_numPassed; };\r
7 \r
8 layout(std430, column_major, buffer_reference) buffer BlockB\r
9 {\r
10         float16_t a;\r
11         highp ivec2 b;\r
12 };\r
13 layout(std430, buffer_reference) buffer BlockC\r
14 {\r
15         mediump mat2x3 c;\r
16 };\r
17 layout(std430, row_major, buffer_reference) buffer BlockD\r
18 {\r
19         lowp uvec3 d;\r
20 };\r
21 layout (push_constant, std430) uniform PC {\r
22         BlockB blockB;\r
23         BlockC blockC;\r
24         BlockD blockD;\r
25 };\r
26 \r
27 bool compare_float    (highp float a, highp float b)  { return abs(a - b) < 0.05; }\r
28 bool compare_vec3     (highp vec3 a, highp vec3 b)    { return compare_float(a.x, b.x)&&compare_float(a.y, b.y)&&compare_float(a.z, b.z); }\r
29 bool compare_mat2x3   (highp mat2x3 a, highp mat2x3 b){ return compare_vec3(a[0], b[0])&&compare_vec3(a[1], b[1]); }\r
30 bool compare_ivec2    (highp ivec2 a, highp ivec2 b)  { return a == b; }\r
31 bool compare_uvec3    (highp uvec3 a, highp uvec3 b)  { return a == b; }\r
32 bool compare_float16_t(highp float a, highp float b)  { return abs(a - b) < 0.05; }\r
33 \r
34 void main (void)\r
35 {\r
36         bool allOk = true;\r
37         allOk = allOk && compare_mat2x3(blockC.c, mat2x3(-5.0, 1.0, -7.0, 1.0, 2.0, 8.0));\r
38         if (allOk)\r
39                 ac_numPassed++;\r
40 \r
41         blockD.d = (uvec3(8u, 1u, 5u));\r
42 }