Reset D3D11 offset/counts to default if NULL is passed. Closes #3614

* These make the 1 bind functions behave like the normal bind functions
This commit is contained in:
baldurk committed 2025-05-19 22:08:11 +01:00
1 parent 962c1cdcf6
commit 367ec41fa2
1 file changed
+96
@@ -687,9 +687,15 @@ bool WrappedID3D11DeviceContext::Serialise_VSSetConstantBuffers1(
if(pFirstConstant)
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBOffsets, pFirstConstant,
StartSlot, NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
if(pNumConstants)
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBCounts, pNumConstants, StartSlot,
NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -779,6 +785,11 @@ void WrappedID3D11DeviceContext::VSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBOffsets, offs, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
}
if(pNumConstants)
{
@@ -790,6 +801,11 @@ void WrappedID3D11DeviceContext::VSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBCounts, cnts, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
}
VerifyState();
}
@@ -818,9 +834,15 @@ bool WrappedID3D11DeviceContext::Serialise_HSSetConstantBuffers1(
if(pFirstConstant)
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBOffsets, pFirstConstant,
StartSlot, NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
if(pNumConstants)
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBCounts, pNumConstants, StartSlot,
NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -910,6 +932,11 @@ void WrappedID3D11DeviceContext::HSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBOffsets, offs, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
}
if(pNumConstants)
{
@@ -921,6 +948,11 @@ void WrappedID3D11DeviceContext::HSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBCounts, cnts, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
}
VerifyState();
}
@@ -949,9 +981,15 @@ bool WrappedID3D11DeviceContext::Serialise_DSSetConstantBuffers1(
if(pFirstConstant)
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBOffsets, pFirstConstant,
StartSlot, NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
if(pNumConstants)
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBCounts, pNumConstants, StartSlot,
NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -1041,6 +1079,11 @@ void WrappedID3D11DeviceContext::DSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBOffsets, offs, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
}
if(pNumConstants)
{
@@ -1052,6 +1095,11 @@ void WrappedID3D11DeviceContext::DSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBCounts, cnts, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
}
VerifyState();
}
@@ -1080,9 +1128,15 @@ bool WrappedID3D11DeviceContext::Serialise_GSSetConstantBuffers1(
if(pFirstConstant)
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBOffsets, pFirstConstant,
StartSlot, NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
if(pNumConstants)
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBCounts, pNumConstants, StartSlot,
NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -1172,6 +1226,11 @@ void WrappedID3D11DeviceContext::GSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBOffsets, offs, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
}
if(pNumConstants)
{
@@ -1183,6 +1242,11 @@ void WrappedID3D11DeviceContext::GSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBCounts, cnts, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
}
VerifyState();
}
@@ -1211,9 +1275,15 @@ bool WrappedID3D11DeviceContext::Serialise_PSSetConstantBuffers1(
if(pFirstConstant)
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBOffsets, pFirstConstant,
StartSlot, NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
if(pNumConstants)
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBCounts, pNumConstants, StartSlot,
NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -1303,6 +1373,11 @@ void WrappedID3D11DeviceContext::PSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBOffsets, offs, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
}
if(pNumConstants)
{
@@ -1314,6 +1389,11 @@ void WrappedID3D11DeviceContext::PSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBCounts, cnts, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
}
VerifyState();
}
@@ -1342,9 +1422,15 @@ bool WrappedID3D11DeviceContext::Serialise_CSSetConstantBuffers1(
if(pFirstConstant)
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBOffsets, pFirstConstant,
StartSlot, NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
if(pNumConstants)
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBCounts, pNumConstants, StartSlot,
NumBuffers);
else
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -1434,6 +1520,11 @@ void WrappedID3D11DeviceContext::CSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBOffsets, offs, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBOffsets, NullCBOffsets, StartSlot,
NumBuffers);
}
if(pNumConstants)
{
@@ -1445,6 +1536,11 @@ void WrappedID3D11DeviceContext::CSSetConstantBuffers1(UINT StartSlot, UINT NumB
}
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBCounts, cnts, StartSlot, NumBuffers);
}
else
{
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBCounts, NullCBCounts, StartSlot,
NumBuffers);
}
VerifyState();
}