From c42f24a2b0da37f03758f1ab97f3fa98b082c2e0 Mon Sep 17 00:00:00 2001 From: Hans-Kristian Arntzen Date: Fri, 7 Oct 2022 21:05:08 +0200 Subject: vkd3d: Reset current_buffer_index when changing swapchain size. If application lowers the count, we might access resources out of bounds later. Signed-off-by: Hans-Kristian Arntzen --- libs/vkd3d/swapchain.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libs/vkd3d/swapchain.c b/libs/vkd3d/swapchain.c index 099554d9..69988164 100644 --- a/libs/vkd3d/swapchain.c +++ b/libs/vkd3d/swapchain.c @@ -2304,7 +2304,16 @@ static HRESULT d3d12_swapchain_resize_buffers(struct d3d12_swapchain *swapchain, new_desc = swapchain->desc; if (buffer_count) + { + if (swapchain->current_buffer_index >= buffer_count) + { + /* Current buffer index may overflow here, so reset it. */ + swapchain->current_buffer_index = 0; + WARN("Resetting current buffer index due to future overflow.\n"); + } new_desc.BufferCount = buffer_count; + } + if (!width || !height) { RECT client_rect; -- cgit v1.2.3