If there are no UAVs bound, don't try to set invalid UAVStartSlot

This commit is contained in:
baldurk
2019-09-16 17:27:41 +01:00
parent ea3e83609b
commit 03e00ea12d
+13 -4
View File
@@ -539,15 +539,24 @@ void D3D11RenderState::ApplyState(WrappedID3D11DeviceContext *context) const
context->OMSetDepthStencilState(OM.DepthStencilState, OM.StencRef);
if(context->IsFL11_1())
{
context->OMSetRenderTargetsAndUnorderedAccessViews(
RDCMIN(OM.UAVStartSlot, (UINT)D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT), OM.RenderTargets,
OM.DepthView, OM.UAVStartSlot, D3D11_1_UAV_SLOT_COUNT - OM.UAVStartSlot, OM.UAVs,
UAV_keepcounts);
}
else
context->OMSetRenderTargetsAndUnorderedAccessViews(
RDCMIN(OM.UAVStartSlot, (UINT)D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT), OM.RenderTargets,
OM.DepthView, OM.UAVStartSlot, D3D11_PS_CS_UAV_REGISTER_COUNT - OM.UAVStartSlot, OM.UAVs,
UAV_keepcounts);
{
if(OM.UAVStartSlot == D3D11_PS_CS_UAV_REGISTER_COUNT)
context->OMSetRenderTargets(
RDCMIN(OM.UAVStartSlot, (UINT)D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT), OM.RenderTargets,
OM.DepthView);
else
context->OMSetRenderTargetsAndUnorderedAccessViews(
RDCMIN(OM.UAVStartSlot, (UINT)D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT), OM.RenderTargets,
OM.DepthView, OM.UAVStartSlot, D3D11_PS_CS_UAV_REGISTER_COUNT - OM.UAVStartSlot, OM.UAVs,
UAV_keepcounts);
}
context->SetPredication(Predicate, PredicateValue);
}