=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: dxgi: Use VK_FILTER_LINEAR for swapchain blits if dimensions don't match.

Alexandre Julliard julliard at winehq.org
Thu Feb 28 16:09:43 CST 2019


Module: wine
Branch: master
Commit: 00e6b50da6008dced31a70f8e76274237738e62a
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=00e6b50da6008dced31a70f8e76274237738e62a

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Wed Feb 27 16:04:58 2019 +0100

dxgi: Use VK_FILTER_LINEAR for swapchain blits if dimensions don't match.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dxgi/swapchain.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index ed7861c..06fb7ef 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -1150,6 +1150,7 @@ static HRESULT d3d12_swapchain_prepare_command_buffers(struct d3d12_swapchain *s
     VkCommandBufferBeginInfo begin_info;
     VkCommandPoolCreateInfo pool_info;
     VkImageBlit blit;
+    VkFilter filter;
     unsigned int i;
     VkResult vr;
 
@@ -1179,6 +1180,12 @@ static HRESULT d3d12_swapchain_prepare_command_buffers(struct d3d12_swapchain *s
         return hresult_from_vk_result(vr);
     }
 
+    if (swapchain->desc.Width != swapchain->vk_swapchain_width
+            || swapchain->desc.Height != swapchain->vk_swapchain_height)
+        filter = VK_FILTER_LINEAR;
+    else
+        filter = VK_FILTER_NEAREST;
+
     for (i = 0; i < swapchain->buffer_count; ++i)
     {
         VkCommandBuffer vk_cmd_buffer = swapchain->vk_cmd_buffers[i];
@@ -1221,7 +1228,7 @@ static HRESULT d3d12_swapchain_prepare_command_buffers(struct d3d12_swapchain *s
         vk_funcs->p_vkCmdBlitImage(vk_cmd_buffer,
                 swapchain->vk_images[i], VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
                 vk_swapchain_images[i], VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
-                1, &blit, VK_FILTER_NEAREST);
+                1, &blit, filter);
 
         vk_cmd_image_barrier(vk_funcs, vk_cmd_buffer,
                 VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,




More information about the wine-cvs mailing list