mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[dxvk] Fix tracking of graphics pipeline side effects inside a render pass
Previously, we wouldn't track the first draw correctly in all cases because the side effect flag would get reset when ending a previous render pass.
This commit is contained in:
parent
33c997c2f3
commit
f719d60706
@ -6856,7 +6856,9 @@ namespace dxvk {
|
|||||||
this->spillRenderPass(true);
|
this->spillRenderPass(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_flags.test(DxvkContextFlag::GpRenderPassSideEffects)) {
|
if (m_flags.test(DxvkContextFlag::GpRenderPassSideEffects)
|
||||||
|
|| m_state.gp.flags.any(DxvkGraphicsPipelineFlag::HasStorageDescriptors,
|
||||||
|
DxvkGraphicsPipelineFlag::HasTransformFeedback)) {
|
||||||
// If either the current pipeline has side effects or if there are pending
|
// If either the current pipeline has side effects or if there are pending
|
||||||
// writes from previous draws, check for hazards. This also tracks any
|
// writes from previous draws, check for hazards. This also tracks any
|
||||||
// resources written for the first time, but does not emit any barriers
|
// resources written for the first time, but does not emit any barriers
|
||||||
@ -6864,6 +6866,9 @@ namespace dxvk {
|
|||||||
// implicitly dirties all state for which we need to track resource access.
|
// implicitly dirties all state for which we need to track resource access.
|
||||||
if (this->checkGraphicsHazards<Indexed, Indirect>())
|
if (this->checkGraphicsHazards<Indexed, Indirect>())
|
||||||
this->spillRenderPass(true);
|
this->spillRenderPass(true);
|
||||||
|
|
||||||
|
// The render pass flag gets reset when the render pass ends, so set it late
|
||||||
|
m_flags.set(DxvkContextFlag::GpRenderPassSideEffects);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the render pass. This must happen before any render state
|
// Start the render pass. This must happen before any render state
|
||||||
|
Loading…
x
Reference in New Issue
Block a user