%% what one replayed draw sets on the Metal encoder, before and after the cache.
flowchart TB
subgraph after["After: compare with the last draw, set what differs"]
B1["D3D12 draw"] --> B2{"same as the
last draw?"}
B2 -- "yes (most fields)" --> B3["skip"]
B2 -- "no" --> B4["set only that entry
or state"]
B3 --> B5["Metal draw"]
B4 --> B5
B6["other command, new encoder,
indirect/mesh/GS path"] -. "forget the last draw" .-> B2
end
subgraph before["Before: every draw sets everything"]
A1["D3D12 draw"] --> A2["every argument table entry,
vertex buffers, strides"] --> A3["pipeline, depth-stencil,
refs, raster state,
16 viewports + scissors"] --> A4["upload root arguments"] --> A5["Metal draw"]
end