57 lines
2.2 KiB
Plaintext
57 lines
2.2 KiB
Plaintext
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)
|
|
*%%*/
|