Module: wine Branch: master Commit: b4741fd259ef7226e9fc9d7f09d474f07ed859cc URL: https://gitlab.winehq.org/wine/wine/-/commit/b4741fd259ef7226e9fc9d7f09d474f...
Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Fri Jun 23 15:49:53 2023 +0200
dxgi: Pass a VkImage to d3d12_swapchain_queue_present().
This is to eventually allow d3d12_swapchain_queue_present() to operate on a certain VkImage even if current_buffer_index has already been modified since the corresponding Present() call.
---
dlls/dxgi/swapchain.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c index f73d354f967..9bf055f08f2 100644 --- a/dlls/dxgi/swapchain.c +++ b/dlls/dxgi/swapchain.c @@ -1954,14 +1954,13 @@ static HRESULT d3d12_swapchain_set_sync_interval(struct d3d12_swapchain *swapcha return d3d12_swapchain_create_vulkan_resources(swapchain); }
-static VkResult d3d12_swapchain_queue_present(struct d3d12_swapchain *swapchain, VkQueue vk_queue) +static VkResult d3d12_swapchain_queue_present(struct d3d12_swapchain *swapchain, VkQueue vk_queue, VkImage vk_src_image) { const struct dxgi_vk_funcs *vk_funcs = &swapchain->vk_funcs; VkPresentInfoKHR present_info; VkCommandBuffer vk_cmd_buffer; VkSubmitInfo submit_info; VkImage vk_dst_image; - VkImage vk_src_image; VkResult vr;
if (swapchain->vk_image_index == INVALID_VK_IMAGE_INDEX) @@ -1974,7 +1973,6 @@ static VkResult d3d12_swapchain_queue_present(struct d3d12_swapchain *swapchain,
vk_cmd_buffer = swapchain->vk_cmd_buffers[swapchain->vk_image_index]; vk_dst_image = swapchain->vk_swapchain_images[swapchain->vk_image_index]; - vk_src_image = swapchain->vk_images[swapchain->current_buffer_index];
if ((vr = vk_funcs->p_vkResetCommandBuffer(vk_cmd_buffer, 0)) < 0) { @@ -2050,7 +2048,8 @@ static HRESULT d3d12_swapchain_present(struct d3d12_swapchain *swapchain, return E_FAIL; }
- vr = d3d12_swapchain_queue_present(swapchain, vk_queue); + vr = d3d12_swapchain_queue_present(swapchain, vk_queue, + swapchain->vk_images[swapchain->current_buffer_index]); if (vr == VK_ERROR_OUT_OF_DATE_KHR) { vkd3d_release_vk_queue(swapchain->command_queue); @@ -2067,7 +2066,8 @@ static HRESULT d3d12_swapchain_present(struct d3d12_swapchain *swapchain, return E_FAIL; }
- if ((vr = d3d12_swapchain_queue_present(swapchain, vk_queue)) < 0) + if ((vr = d3d12_swapchain_queue_present(swapchain, vk_queue, + swapchain->vk_images[swapchain->current_buffer_index])) < 0) ERR("Failed to present after recreating swapchain, vr %d.\n", vr); }