flowchart TB
A["ExecuteIndirect: argument buffer
per command: root args + DISPATCH_RAYS_DESC"] --> E["expand_indirect kernel
on the GPU, per command"]
C["count buffer"] --> E
T["host template:
function table, root buffers"] --> E
E -- "copies the desc's 25 words" --> R["per-command record:
root block + mtl12_rt_dispatch"]
E -- "W·H or W·H·D over 2^30" --> Z["0 threadgroups:
command dropped"]
E -- "raygen size 0" --> N["raygen address 0:
rays call nothing"]
R --> K["mtl12_dispatch_rays
ceil(W/8) × ceil(H/8) × D threadgroups"]
K --> S["shader table walk
(raygen, miss, hit records)"]