| // Valid declarations: |
| layout(metal, binding=0) uniform ubo1 { float a; }; // valid |
| layout(metal, binding=0) buffer ssbo { float b; }; // valid |
| layout(metal, rgba32f, texture=0) readonly texture2D rtexture1; // valid |
| layout(metal, rgba32f, texture=0) writeonly texture2D wtexture1; // valid |
| layout(metal, texture=0, sampler=0) sampler2D sampler1; // valid |
| |
| // TODO(skbug.com/40045103): This should require 'texture' once the metal backend supports it |
| layout(metal, rgba32f, binding=0) readonly texture2D rtexture2; // valid |
| layout(metal, rgba32f, binding=0) writeonly texture2D wtexture2; // valid |
| layout(metal, binding=0) sampler2D sampler2; // valid |
| |
| // Invalid declarations: |
| layout(metal, rgba32f, sampler=0) readonly texture2D rtexture3; // invalid (has sampler) |
| layout(metal, rgba32f, sampler=0) writeonly texture2D wtexture3; // invalid (has sampler) |
| layout(metal, rgba32f, texture=0, sampler=0) readonly texture2D rtexture4; // invalid (has sampler) |
| layout(metal, rgba32f, texture=0, sampler=0) writeonly texture2D wtexture4;// invalid (has sampler) |
| layout(metal, texture=0) readonly texture2D rtexture5; // invalid (no pixformat) |
| layout(metal, texture=0) writeonly texture2D wtexture5; // invalid (no pixformat) |
| layout(metal, binding=0, texture=0, sampler=0) sampler2D sampler3; // invalid (has binding) |
| layout(metal, texture=0, sampler=0) ubo2 { float c; }; // invalid (has tex/samp) |
| layout(metal, set=0, binding=0) ubo3 { float d; }; // invalid (has set) |
| |
| /*%%* |
| layout qualifier 'sampler' is not permitted here |
| layout qualifier 'sampler' is not permitted here |
| layout qualifier 'sampler' is not permitted here |
| layout qualifier 'sampler' is not permitted here |
| storage textures must declare a pixel format |
| storage textures must declare a pixel format |
| 'binding' modifier cannot coexist with 'texture'/'sampler' |
| layout qualifier 'texture' is not permitted here |
| layout qualifier 'sampler' is not permitted here |
| layout qualifier 'set' is not permitted here |
| *%%*/ |