%% how one D3D12 draw becomes one Metal draw per active view.
flowchart LR
A["DrawInstanced / DrawIndexedInstanced /
DispatchMesh / ExecuteIndirect"] --> B{"views = all views,
or mask & views
with masking"}
B -->|"view 0"| C0["record draw
root words + view word
0 | layer₀ << 16"]
B -->|"view 1"| C1["record draw
root words + view word
1 | layer₁ << 16"]
B -->|"..."| C3["record draw
view word
3 | layer₃ << 16"]
C0 & C1 & C3 --> D["shaders (dxil-spirv patch 0003):
SV_ViewID = word & 0xffff
layer += word >> 16
viewport += 8-bit map[view]
(a literal in the MSL)"]
D --> E["Metal: one draw per view"]