1// Valid declarations: 2layout(metal, binding=0) uniform ubo1 { float a; }; // valid 3layout(metal, binding=0) buffer ssbo { float b; }; // valid 4layout(metal, rgba32f, texture=0) readonly texture2D rtexture1; // valid 5layout(metal, rgba32f, texture=0) writeonly texture2D wtexture1; // valid 6layout(metal, texture=0, sampler=0) sampler2D sampler1; // valid 7 8// TODO(skia:14023): This should require 'texture' once the metal backend supports it 9layout(metal, rgba32f, binding=0) readonly texture2D rtexture2; // valid 10layout(metal, rgba32f, binding=0) writeonly texture2D wtexture2; // valid 11layout(metal, binding=0) sampler2D sampler2; // valid 12 13// Invalid declarations: 14layout(metal, rgba32f, sampler=0) readonly texture2D rtexture3; // invalid (has sampler) 15layout(metal, rgba32f, sampler=0) writeonly texture2D wtexture3; // invalid (has sampler) 16layout(metal, rgba32f, texture=0, sampler=0) readonly texture2D rtexture4; // invalid (has sampler) 17layout(metal, rgba32f, texture=0, sampler=0) writeonly texture2D wtexture4;// invalid (has sampler) 18layout(metal, texture=0) readonly texture2D rtexture5; // invalid (no pixformat) 19layout(metal, texture=0) writeonly texture2D wtexture5; // invalid (no pixformat) 20layout(metal, binding=0, texture=0, sampler=0) sampler2D sampler3; // invalid (has binding) 21layout(metal, texture=0, sampler=0) ubo2 { float c; }; // invalid (has tex/samp) 22layout(metal, set=0, binding=0) ubo3 { float d; }; // invalid (has set) 23 24/*%%* 25layout qualifier 'sampler' is not permitted here 26layout qualifier 'sampler' is not permitted here 27layout qualifier 'sampler' is not permitted here 28layout qualifier 'sampler' is not permitted here 29storage textures must declare a pixel format 30storage textures must declare a pixel format 31'binding' modifier cannot coexist with 'texture'/'sampler' 32layout qualifier 'texture' is not permitted here 33layout qualifier 'sampler' is not permitted here 34layout qualifier 'set' is not permitted here 35*%%*/ 36