flowchart TB ps["fragment MSL"] --> q{"calls get_sample_position()?"} q -->|"no"| icb["pipeline with ICB support
ExecuteIndirect encoded on the GPU"] q -->|"yes"| noicb["pipeline without ICB support
ExecuteIndirect drawn one by one"] subgraph spike["with ICB support (spike, M1 Max)"] direction LR w1["+ depth / buffer / atomic write"] --> crash["compiler crashes or hangs"] w2["+ texture write"] --> err["clean error"] w3["colour only"] --> okc["compiles"] end q ~~~ spike