diff options
author | Jesse Natalie <jenatali@microsoft.com> | 2024-01-22 15:02:31 -0800 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2024-01-24 22:32:59 +0000 |
commit | df684ee653a24e377d135f9a57cc88762f1a0f6c (patch) | |
tree | ef37b100ef7ee73ef421b57289c479a82ed89af0 | |
parent | fcd56e31f7ceab8860932a7a30e6d588032b0f1c (diff) |
dzn: Fix enhanced barrier layout for depth blits
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27224>
-rw-r--r-- | src/microsoft/vulkan/dzn_cmd_buffer.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/microsoft/vulkan/dzn_cmd_buffer.c b/src/microsoft/vulkan/dzn_cmd_buffer.c index 8f3b114064f..cf68511c4c1 100644 --- a/src/microsoft/vulkan/dzn_cmd_buffer.c +++ b/src/microsoft/vulkan/dzn_cmd_buffer.c @@ -2895,9 +2895,11 @@ dzn_cmd_buffer_blit_issue_barriers(struct dzn_cmd_buffer *cmdbuf, if (!post) { if (cmdbuf->enhanced_barriers) { + D3D12_BARRIER_LAYOUT dst_new_layout = (aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) ? + D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE : D3D12_BARRIER_LAYOUT_RENDER_TARGET; *restore_dst_layout = dzn_cmd_buffer_require_layout(cmdbuf, dst, dst_layout, - D3D12_BARRIER_LAYOUT_RENDER_TARGET, + dst_new_layout, &dst_range); } else { VkImageLayout dst_new_layout = (aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) ? @@ -2913,10 +2915,17 @@ dzn_cmd_buffer_blit_issue_barriers(struct dzn_cmd_buffer *cmdbuf, } } else { if (cmdbuf->enhanced_barriers) { - dzn_cmd_buffer_restore_layout(cmdbuf, dst, - D3D12_BARRIER_SYNC_RENDER_TARGET, D3D12_BARRIER_ACCESS_RENDER_TARGET, - D3D12_BARRIER_LAYOUT_RENDER_TARGET, *restore_dst_layout, - &dst_range); + if ((aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT))) { + dzn_cmd_buffer_restore_layout(cmdbuf, dst, + D3D12_BARRIER_SYNC_DEPTH_STENCIL, D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE, + D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE, *restore_dst_layout, + &dst_range); + } else { + dzn_cmd_buffer_restore_layout(cmdbuf, dst, + D3D12_BARRIER_SYNC_RENDER_TARGET, D3D12_BARRIER_ACCESS_RENDER_TARGET, + D3D12_BARRIER_LAYOUT_RENDER_TARGET, *restore_dst_layout, + &dst_range); + } } else { VkImageLayout dst_new_layout = (aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) ? VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; |