1*c8dee2aaSAndroid Build Coastguard Workerlayout(binding=0, rgba32f) readonly texture2D src; 2*c8dee2aaSAndroid Build Coastguard Workerlayout(binding=1, rgba32f) writeonly texture2D dest; 3*c8dee2aaSAndroid Build Coastguard Worker//layout(binding=2, rgba32f) texture2D multipurpose; 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Worker// If we add support for read-write textures in SkSL, uncomment `needs_all_access`. 6*c8dee2aaSAndroid Build Coastguard Worker//void needs_all_access(texture2D t) {} 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Workervoid overload(layout(rgba32f) readonly texture2D t) {} 9*c8dee2aaSAndroid Build Coastguard Workervoid overload(layout(rgba32f) writeonly texture2D t, int) {} 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Workervoid main() { 12*c8dee2aaSAndroid Build Coastguard Worker //needs_all_access(src); // BAD 13*c8dee2aaSAndroid Build Coastguard Worker //needs_all_access(dest); // BAD 14*c8dee2aaSAndroid Build Coastguard Worker //needs_all_access(multipurpose); // OK 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker textureRead(dest, sk_GlobalInvocationID.xy); // BAD 17*c8dee2aaSAndroid Build Coastguard Worker textureWrite(src, sk_GlobalInvocationID.xy, half4(1)); // BAD 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker overload(src); // OK: overload(readonly texture2D t) exists 20*c8dee2aaSAndroid Build Coastguard Worker overload(src, 1); // BAD: overload(readonly texture2D t, int) missing 21*c8dee2aaSAndroid Build Coastguard Worker overload(dest); // BAD: overload(writeonly texture2D t) missing 22*c8dee2aaSAndroid Build Coastguard Worker overload(dest, 1); // OK: overload(writeonly texture2D t, int) exists 23*c8dee2aaSAndroid Build Coastguard Worker} 24*c8dee2aaSAndroid Build Coastguard Worker 25*c8dee2aaSAndroid Build Coastguard Worker// If we add support for read-write textures in SkSL, uncomment `function_param_honors_all_access`. 26*c8dee2aaSAndroid Build Coastguard Worker//void function_param_honors_all_access(texture2D t) { 27*c8dee2aaSAndroid Build Coastguard Worker// //needs_all_access(t); // OK 28*c8dee2aaSAndroid Build Coastguard Worker// textureWidth(t); // OK 29*c8dee2aaSAndroid Build Coastguard Worker// textureRead(t, sk_GlobalInvocationID.xy); // OK 30*c8dee2aaSAndroid Build Coastguard Worker// textureWrite(t, sk_GlobalInvocationID.xy, half4(1)); // OK 31*c8dee2aaSAndroid Build Coastguard Worker//} 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Workervoid function_param_honors_readonly(layout(rgba32f) readonly texture2D t) { 34*c8dee2aaSAndroid Build Coastguard Worker //needs_all_access(t); // BAD 35*c8dee2aaSAndroid Build Coastguard Worker textureWidth(t); // OK 36*c8dee2aaSAndroid Build Coastguard Worker textureRead(t, sk_GlobalInvocationID.xy); // OK 37*c8dee2aaSAndroid Build Coastguard Worker textureWrite(t, sk_GlobalInvocationID.xy, half4(1)); // BAD 38*c8dee2aaSAndroid Build Coastguard Worker} 39*c8dee2aaSAndroid Build Coastguard Worker 40*c8dee2aaSAndroid Build Coastguard Workervoid function_param_honors_writeonly(layout(rgba32f) writeonly texture2D t) { 41*c8dee2aaSAndroid Build Coastguard Worker //needs_all_access(t); // BAD 42*c8dee2aaSAndroid Build Coastguard Worker textureWidth(t); // OK 43*c8dee2aaSAndroid Build Coastguard Worker textureRead(t, sk_GlobalInvocationID.xy); // BAD 44*c8dee2aaSAndroid Build Coastguard Worker textureWrite(t, sk_GlobalInvocationID.xy, half4(1)); // OK 45*c8dee2aaSAndroid Build Coastguard Worker} 46*c8dee2aaSAndroid Build Coastguard Worker 47*c8dee2aaSAndroid Build Coastguard Worker/*%%* 48*c8dee2aaSAndroid Build Coastguard Workerno match for textureRead(writeonlyTexture2D, uint2) 49*c8dee2aaSAndroid Build Coastguard Workerno match for textureWrite(readonlyTexture2D, uint2, half4) 50*c8dee2aaSAndroid Build Coastguard Workerno match for overload(readonlyTexture2D, int) 51*c8dee2aaSAndroid Build Coastguard Workerno match for overload(writeonlyTexture2D) 52*c8dee2aaSAndroid Build Coastguard Workerno match for textureWrite(readonlyTexture2D, uint2, half4) 53*c8dee2aaSAndroid Build Coastguard Workerno match for textureRead(writeonlyTexture2D, uint2) 54*c8dee2aaSAndroid Build Coastguard Worker*%%*/ 55