struct S { float y; }; // Unsized array parameters only work with readonly buffers. layout(set = 0, binding = 0) readonly buffer testStorageBuffer { float[] testArr; }; layout(set = 0, binding = 1) readonly buffer testStorageBufferStruct { S[] testArrStruct; }; noinline float unsizedInParameterA(float x[]) { return x[0]; } noinline float unsizedInParameterB(S x[]) { return x[0].y; } noinline float unsizedInParameterC(float[] x) { return x[0]; } noinline float unsizedInParameterD(S[] x) { return x[0].y; } noinline float unsizedInParameterE(float[]) { return 0.0; } noinline float unsizedInParameterF(S[]) { return 0.0; } noinline half4 getColor(float[] arr) { return half4(arr[0], arr[1], arr[2], arr[3]); } noinline half4 getColor_helper(float[] arr) { return getColor(arr); } void main() { sk_FragColor = getColor_helper(testArr); unsizedInParameterA(testArr); unsizedInParameterB(testArrStruct); unsizedInParameterC(testArr); unsizedInParameterD(testArrStruct); unsizedInParameterE(testArr); unsizedInParameterF(testArrStruct); }