| 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); |
| } |