#version 460 #extension GL_EXT_nonuniform_qualifier : require // unsized and not indexed in either stage // both should become implicitly sized to 1 uniform float f0[]; // unsized and not indexed in earlier stage, unsized and dynamically indexed in later stage // both should become runtime sized uniform sampler2D s0[]; // unsized and dynamically indexed in earlier stage, unsized and not indexed in later stage // both should become runtime sized uniform sampler2D s1[]; // unsized and statically indexed in earlier stage, unsized and not indexed in later stage // both should become implicitly sized to highest index + 1 (11) uniform U0 { vec4 a[]; } u0; // unsized and not indexed in earlier stage, unsized and statically indexed in later stage // both should become implicitly sized to highest index + 1 (7) uniform U1 { vec4 a[]; } u1; // unsized buffer array, statically indexed in earlier stage, not indexed in later stage // both should become implicitly sized to highest index + 1 (10) buffer B0 { vec4 a; } b0[]; // unsized and statically indexed in earlier stage, explicitly sized in later stage // should adopt explicit size (11) buffer B1 { vec4 a[]; } b1; // unsized and not indexed in earlier stage, unsized and dynamically indexed in later stage // both should become runtime sized buffer B2 { vec4 a[]; } b2; out vec4 out_VS; void main() { out_VS = texture(s1[nonuniformEXT(0)], vec2(0)); out_VS = u0.a[10]; out_VS = b1.a[5]; }