%% what a shared fence handle points at, inside one process. flowchart LR F1["ID3D12Fence
(created SHARED)"] --> E["FenceEvent
refcount +
MTLSharedEvent"] F2["ID3D12Fence
(OpenSharedHandle)"] --> E S["pagefile section
magic, process id,
fence id, flags"] H1["app's handle"] --> S H2["DuplicateHandle copy"] --> S O["our own handle
+ one reference"] --> S O --> E C{"HandleCount == 1?
(NtQueryObject)"} -->|"yes: drop ours"| O E -->|"last reference:
value = max, destroy"| X["GPU and CPU waits
released"]