mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-20 17:52:11 +01:00
[dxvk] Fix when tracking happens in resource relocation
Invalidation now resets tracking, so it is possible that after recreating an image with different usage we'd use it on the wrong command buffer for certain functions.
This commit is contained in:
parent
c764dd97a6
commit
54c45ef3fa
@ -6397,11 +6397,11 @@ namespace dxvk {
|
|||||||
copy.regionCount = 1;
|
copy.regionCount = 1;
|
||||||
copy.pRegions = ®ion;
|
copy.pRegions = ®ion;
|
||||||
|
|
||||||
|
invalidateBuffer(info.buffer, Rc<DxvkResourceAllocation>(info.storage));
|
||||||
|
|
||||||
m_cmd->cmdCopyBuffer(DxvkCmdBuffer::ExecBuffer, ©);
|
m_cmd->cmdCopyBuffer(DxvkCmdBuffer::ExecBuffer, ©);
|
||||||
m_cmd->track(info.buffer, DxvkAccess::Write);
|
m_cmd->track(info.buffer, DxvkAccess::Write);
|
||||||
|
|
||||||
invalidateBuffer(info.buffer, Rc<DxvkResourceAllocation>(info.storage));
|
|
||||||
|
|
||||||
memoryBarrier.dstStageMask |= info.buffer->info().stages;
|
memoryBarrier.dstStageMask |= info.buffer->info().stages;
|
||||||
memoryBarrier.dstAccessMask |= info.buffer->info().access;
|
memoryBarrier.dstAccessMask |= info.buffer->info().access;
|
||||||
}
|
}
|
||||||
@ -6493,10 +6493,10 @@ namespace dxvk {
|
|||||||
copy.regionCount = imageRegions.size();
|
copy.regionCount = imageRegions.size();
|
||||||
copy.pRegions = imageRegions.data();
|
copy.pRegions = imageRegions.data();
|
||||||
|
|
||||||
|
invalidateImageWithUsage(info.image, Rc<DxvkResourceAllocation>(info.storage), info.usageInfo);
|
||||||
|
|
||||||
m_cmd->cmdCopyImage(DxvkCmdBuffer::ExecBuffer, ©);
|
m_cmd->cmdCopyImage(DxvkCmdBuffer::ExecBuffer, ©);
|
||||||
m_cmd->track(info.image, DxvkAccess::Write);
|
m_cmd->track(info.image, DxvkAccess::Write);
|
||||||
|
|
||||||
invalidateImageWithUsage(info.image, Rc<DxvkResourceAllocation>(info.storage), info.usageInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!imageBarriers.empty()) {
|
if (!imageBarriers.empty()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user