%% 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