| layout(binding=0) readonly texture2D src; |
| layout(binding=1) writeonly texture2D dest; |
| layout(binding=2) texture2D multipurpose; |
| |
| void needs_all_access(texture2D t) {} |
| |
| void overload(readonly texture2D t) {} |
| void overload(writeonly texture2D t, int) {} |
| |
| void main() { |
| needs_all_access(src); // BAD |
| needs_all_access(dest); // BAD |
| needs_all_access(multipurpose); // OK |
| |
| read(dest, sk_GlobalInvocationID.xy); // BAD |
| write(src, sk_GlobalInvocationID.xy, half4(1)); // BAD |
| |
| overload(src); // OK: overload(readonly texture2D t) exists |
| overload(src, 1); // BAD: overload(readonly texture2D t, int) missing |
| overload(dest); // BAD: overload(writeonly texture2D t) missing |
| overload(dest, 1); // OK: overload(writeonly texture2D t, int) exists |
| } |
| |
| void function_param_honors_all_access(texture2D t) { |
| needs_all_access(t); // OK |
| width(t); // OK |
| read(t, sk_GlobalInvocationID.xy); // OK |
| write(t, sk_GlobalInvocationID.xy, half4(1)); // OK |
| } |
| |
| void function_param_honors_readonly(readonly texture2D t) { |
| needs_all_access(t); // BAD |
| width(t); // OK |
| read(t, sk_GlobalInvocationID.xy); // OK |
| write(t, sk_GlobalInvocationID.xy, half4(1)); // BAD |
| } |
| |
| void function_param_honors_writeonly(writeonly texture2D t) { |
| needs_all_access(t); // BAD |
| width(t); // OK |
| read(t, sk_GlobalInvocationID.xy); // BAD |
| write(t, sk_GlobalInvocationID.xy, half4(1)); // OK |
| } |
| |
| /*%%* |
| expected 'texture2D', but found 'readonlyTexture2D' |
| expected 'texture2D', but found 'writeonlyTexture2D' |
| no match for read(writeonlyTexture2D, uint2) |
| no match for write(readonlyTexture2D, uint2, half4) |
| no match for overload(readonlyTexture2D, int) |
| no match for overload(writeonlyTexture2D) |
| expected 'texture2D', but found 'readonlyTexture2D' |
| no match for write(readonlyTexture2D, uint2, half4) |
| expected 'texture2D', but found 'writeonlyTexture2D' |
| no match for read(writeonlyTexture2D, uint2) |
| *%%*/ |