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