mirror of
https://github.com/simplysanatori/LegendFrame.git
synced 2026-10-28 23:03:07 +01:00
submit_wait = 1 (default) keeps TransferSurface(surface, TRUE): the CPU waits for the GPU to finish the frame before IVRCompositor::Submit. submit_wait = 0 passes FALSE: the TRANSFER_SRC_OPTIMAL transition is still a barrier in DXVK's command list, and submit_openvr's LockSubmissionQueue (Flush + SynchronizeCsThread + lockSubmission, which drains DXVK's submit queue into vkQueueSubmit) runs before Submit, so the compositor's copy is queued behind the frame on the same VkQueue and the next frame's writes behind the copy. This is DXVK's own D3D11 interop pattern for OpenVR. OpenXR is unchanged (its mirror already exists as xr_copy_wait). Startup log: "submit: GPU wait before Submit on/off (submit_wait=N)". Menu A/B (singlepass, OpenVR, 2 runs each): 43-45 fps / submit 4.2-4.5 ms with 1, 67-70 fps / submit 0.4-0.5 ms with 0; no errors, no crashes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>