flowchart TD
A["Create*PipelineState"] --> K["key: SHA-256 of build UUID, shader bytecode,
root signature, static samplers, input layout, fixed-function state"]
K --> L{"entry in
~/Library/Caches/mtl12/<build>/<key>?"}
L -- "hit" --> R["restore MSL and translation outputs"]
L -- "miss" --> T["translate: DXIL → SPIR-V → MSL
(about 70% of a warm pipeline)"]
T --> S["store entry
(temp file, then rename)"]
S --> M
R --> M["Metal: MSL → AIR, pipeline state
(Metal's own disk cache)"]