That fixes Crysis 2 Remastered hanging going in game when ray tracing is enabled (with dxvk, wined3d is currently missing d3d11 fence creation / export for the related parts to work). That is d3d11 game which does raytracing on Vulkan and synchronizes resource access using d3d12 fence created through d3d11 and imported to Vulkan. vkQueueSubmit part looks obvious, D3D12_FENCE_SUBMIT_INFO is the counterpart for TIMELINE_SEMAPHORE_SUBMIT_INFO as soon as shared fences are concerned. In theory those may appear together, with timeline values from each used for their corresponding semaphore type, but I am leaving this theoretical case as fixme. Then, the game creates the semaphore (to be immediately used with vkImportSemaphoreWin32HandleKHR) without specifying SEMAPHORE_TYPE_CREATE_INFO, meaning that results in binary semaphore. When that binary semaphore gets timeline semaphore (from d3d12 fence implementation) imported that doesn't work very well for d3d12 fence semantics. It doesn't look specified what should happen in this case WRT d3d12 fence, but d3d12 fences imported this way work this way on Windows and, while Vulkan timeline semaphore also does not match d3d12 fence semantics exactly, it looks reasonable that compatible implementation would just ignore original semaphore type (while it probably should not be ignored / recreated when importing external vulkan semaphore). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11175#note_143369