mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-27 13:54:16 +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
e61376b34c
commit
ed77239354
@ -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