From 97e3b89bc7def8775cecad38a6d9fc3d2de50a4b Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 26 May 2018 20:09:31 +0200 Subject: [PATCH] [dxvk] Emit dynamic state only if a pipeline is bound Fixes validation errors in Dirt 4. --- src/dxvk/dxvk_context.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 72ef7f3b0..87205d0f1 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -1383,15 +1383,19 @@ namespace dxvk { } } - m_cmd->cmdSetViewport(0, viewportCount, m_state.vp.viewports.data()); - m_cmd->cmdSetScissor (0, viewportCount, m_state.vp.scissorRects.data()); + if (m_gpActivePipeline != VK_NULL_HANDLE) { + m_cmd->cmdSetViewport(0, viewportCount, m_state.vp.viewports.data()); + m_cmd->cmdSetScissor (0, viewportCount, m_state.vp.scissorRects.data()); + } } void DxvkContext::setBlendConstants( const DxvkBlendConstants& blendConstants) { m_state.om.blendConstants = blendConstants; - m_cmd->cmdSetBlendConstants(&blendConstants.r); + + if (m_gpActivePipeline != VK_NULL_HANDLE) + m_cmd->cmdSetBlendConstants(&blendConstants.r); } @@ -1399,9 +1403,11 @@ namespace dxvk { const uint32_t reference) { m_state.om.stencilReference = reference; - m_cmd->cmdSetStencilReference( - VK_STENCIL_FRONT_AND_BACK, - reference); + if (m_gpActivePipeline != VK_NULL_HANDLE) { + m_cmd->cmdSetStencilReference( + VK_STENCIL_FRONT_AND_BACK, + reference); + } }