#version 310 es precision mediump float; struct S { float buff[10]; }; layout(std430, binding=2) readonly buffer RoBuff { float buff_ro[10]; S s_ro; } ro_buffer; layout(std430, binding=2) buffer Buff { float buff[10]; S s; } non_ro_buffer; void non_ro_fun(float[10] buff) { } void non_ro_funf(float el) { } void non_ro_funS(S s) { } out vec4 fragColor; void main() { S s; non_ro_fun(s.buff); non_ro_funf(s.buff[3]); non_ro_funS(s); non_ro_fun(non_ro_buffer.buff); non_ro_fun(non_ro_buffer.s.buff); non_ro_funf(non_ro_buffer.buff[3]); non_ro_funf(non_ro_buffer.s.buff[3]); non_ro_funS(non_ro_buffer.s); non_ro_fun(ro_buffer.buff_ro); non_ro_fun(ro_buffer.s_ro.buff); non_ro_funf(ro_buffer.buff_ro[3]); non_ro_funf(ro_buffer.s_ro.buff[3]); non_ro_funS(ro_buffer.s_ro); }