mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-14 13:51:04 +00:00
9caca7a17b
The containsPhysicalStorageBufferOrArray function now handles struct types correctly, checking their contents recursively for buffer reference types. As a result, OpVariables containing structs that have members that are buffer references now have the appropriate AliasedPointer or RestrictPointer decoration as per the spec. Fixes #3188
35 lines
668 B
GLSL
35 lines
668 B
GLSL
#version 450
|
|
|
|
#extension GL_EXT_buffer_reference : enable
|
|
|
|
layout(buffer_reference, std430) buffer blockType {
|
|
layout(offset = 0) int a;
|
|
layout(offset = 4) int b;
|
|
layout(offset = 8) int c;
|
|
layout(offset = 12) int d;
|
|
layout(offset = 16) int e;
|
|
};
|
|
|
|
layout(std430) buffer t2 {
|
|
blockType f;
|
|
blockType g;
|
|
} t;
|
|
|
|
layout(std430, buffer_reference) buffer T2 { int x; };
|
|
layout(std430, buffer_reference) buffer T1 { int x; };
|
|
|
|
struct Blah {
|
|
T1 t1;
|
|
T2 t2;
|
|
};
|
|
|
|
layout(set=0, binding=0) buffer T3 {
|
|
Blah Bindings[];
|
|
} t3;
|
|
|
|
|
|
void main() {
|
|
Blah x = t3.Bindings[2];
|
|
t3.Bindings[0] = t3.Bindings[1];
|
|
}
|