1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-04-06 00:57:40 +02:00

[dxvk] Use new barrier helpers in copyImageHw

This commit is contained in:
Philip Rebohle 2024-10-12 09:46:02 +02:00 committed by Philip Rebohle
parent 2864a5e474
commit 42da4348bf

View File

@ -3490,9 +3490,8 @@ namespace dxvk {
auto dstFormatInfo = dstImage->formatInfo(); auto dstFormatInfo = dstImage->formatInfo();
if (m_execBarriers.isImageDirty(dstImage, dstSubresourceRange, DxvkAccess::Write) flushPendingAccesses(*dstImage, dstSubresourceRange, DxvkAccess::Write);
|| m_execBarriers.isImageDirty(srcImage, srcSubresourceRange, DxvkAccess::Write)) flushPendingAccesses(*srcImage, srcSubresourceRange, DxvkAccess::Read);
m_execBarriers.recordCommands(m_cmd);
VkImageLayout dstImageLayout = dstImage->pickLayout(VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); VkImageLayout dstImageLayout = dstImage->pickLayout(VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
VkImageLayout srcImageLayout = srcImage->pickLayout(VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); VkImageLayout srcImageLayout = srcImage->pickLayout(VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
@ -3536,25 +3535,15 @@ namespace dxvk {
m_cmd->cmdCopyImage(DxvkCmdBuffer::ExecBuffer, &copyInfo); m_cmd->cmdCopyImage(DxvkCmdBuffer::ExecBuffer, &copyInfo);
} }
m_execBarriers.accessImage(
dstImage, dstSubresourceRange,
dstImageLayout,
VK_PIPELINE_STAGE_TRANSFER_BIT,
VK_ACCESS_TRANSFER_WRITE_BIT,
dstImage->info().layout,
dstImage->info().stages,
dstImage->info().access);
m_execBarriers.accessImage( accessImage(DxvkCmdBuffer::ExecBuffer,
srcImage, srcSubresourceRange, *dstImage, dstSubresourceRange, dstImageLayout,
srcImageLayout, VK_PIPELINE_STAGE_2_TRANSFER_BIT, VK_ACCESS_2_TRANSFER_WRITE_BIT);
VK_PIPELINE_STAGE_TRANSFER_BIT,
VK_ACCESS_TRANSFER_READ_BIT, accessImage(DxvkCmdBuffer::ExecBuffer,
srcImage->info().layout, *srcImage, srcSubresourceRange, srcImageLayout,
srcImage->info().stages, VK_PIPELINE_STAGE_2_TRANSFER_BIT, VK_ACCESS_2_TRANSFER_READ_BIT);
srcImage->info().access);
m_cmd->trackResource<DxvkAccess::Write>(dstImage); m_cmd->trackResource<DxvkAccess::Write>(dstImage);
m_cmd->trackResource<DxvkAccess::Read>(srcImage); m_cmd->trackResource<DxvkAccess::Read>(srcImage);
} }