sequenceDiagram participant G as Game participant S as Latency semaphore participant D as dxgi Present participant T as dxgi latency thread participant M as Metal queue G->>S: wait (count 1 -> 0) G->>D: Present(frame 7) D->>M: commit present, then signal event = 7 D->>T: queue frame 7 Note over G,D: before: Present released the semaphore
here, so the game never waited G->>S: wait (blocks) T->>M: wait until event >= 7 M-->>T: frame 7 finished on the GPU T->>S: release (count 0 -> 1) S-->>G: wait returns, start frame 8