On Wed, 4 May 2022 at 15:36, Jan Sikorski wine@gitlab.winehq.org wrote:
@@ -1838,10 +1846,17 @@ void wined3d_context_vk_wait_command_buffer(struct wined3d_context_vk *context_v if (context_vk->submitted.buffers[i].id != id) continue;
VK_CALL(vkWaitForFences(device_vk->vk_device, 1,&context_vk->submitted.buffers[i].vk_fence, VK_TRUE, UINT64_MAX));wined3d_context_vk_cleanup_resources(context_vk);return;
vk_fence = context_vk->submitted.buffers[i].vk_fence;wined3d_context_vk_cleanup_resources(context_vk, vk_fence);for (i = 0; i < context_vk->submitted.buffer_count; ++i){if (context_vk->submitted.buffers[i].id != id)continue;VK_CALL(vkWaitForFences(device_vk->vk_device, 1, &vk_fence, VK_TRUE, UINT64_MAX));wined3d_context_vk_remove_command_buffer(context_vk, i);return; }}
I suppose that works, although I think the double loop look a little awkward. It might be worth introducing a helper to lookup a command buffer by ID to avoid that at some point.