yum-mirror/glslang

git clone https://git.yummers.dev/yum-mirror/glslang

rjenningsFix some edge cases with vk memory model and memory qualifiers37b5bd72

main
871 B26 linesraw
1#version 450
2#extension GL_EXT_buffer_reference : require
3
4struct Payload { uvec2 values; };
5
6layout(buffer_reference, std430) coherent volatile buffer BlockQualifiedRef { Payload data[]; };
7
8layout(buffer_reference, std430) buffer MemberQualifiedRef {
9    coherent uint coherentValue;
10    volatile uint volatileValue;
11};
12
13layout(push_constant) uniform Push { BlockQualifiedRef ref; MemberQualifiedRef members; } pc;
14layout(binding = 0) buffer Result { uvec2 value; } result;
15
16// Check that per-load/store memory semantics are generated when qualifiers
17// are used on whole buffer reference blocks as well as individual members
18
19void main()
20{
21    result.value = pc.ref.data[0].values;
22    pc.ref.data[1].values = result.value;
23    result.value.x = pc.members.coherentValue + pc.members.volatileValue;
24    pc.members.coherentValue = 5;
25    pc.members.volatileValue = 6;
26}