Skip to content

Commit 367ec41

Browse files
committed
Reset D3D11 offset/counts to default if NULL is passed. Closes #3614
* These make the 1 bind functions behave like the normal bind functions
1 parent 962c1cd commit 367ec41

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

renderdoc/driver/d3d11/d3d11_context1_wrap.cpp

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,9 +687,15 @@ bool WrappedID3D11DeviceContext::Serialise_VSSetConstantBuffers1(
687687
if(pFirstConstant)
688688
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBOffsets, pFirstConstant,
689689
StartSlot, NumBuffers);
690+
else
691+
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBOffsets, NullCBOffsets, StartSlot,
692+
NumBuffers);
690693
if(pNumConstants)
691694
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBCounts, pNumConstants, StartSlot,
692695
NumBuffers);
696+
else
697+
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBCounts, NullCBCounts, StartSlot,
698+
NumBuffers);
693699

694700
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
695701
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -779,6 +785,11 @@ void WrappedID3D11DeviceContext::VSSetConstantBuffers1(UINT StartSlot, UINT NumB
779785
}
780786
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBOffsets, offs, StartSlot, NumBuffers);
781787
}
788+
else
789+
{
790+
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBOffsets, NullCBOffsets, StartSlot,
791+
NumBuffers);
792+
}
782793

783794
if(pNumConstants)
784795
{
@@ -790,6 +801,11 @@ void WrappedID3D11DeviceContext::VSSetConstantBuffers1(UINT StartSlot, UINT NumB
790801
}
791802
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBCounts, cnts, StartSlot, NumBuffers);
792803
}
804+
else
805+
{
806+
m_CurrentPipelineState->Change(m_CurrentPipelineState->VS.CBCounts, NullCBCounts, StartSlot,
807+
NumBuffers);
808+
}
793809

794810
VerifyState();
795811
}
@@ -818,9 +834,15 @@ bool WrappedID3D11DeviceContext::Serialise_HSSetConstantBuffers1(
818834
if(pFirstConstant)
819835
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBOffsets, pFirstConstant,
820836
StartSlot, NumBuffers);
837+
else
838+
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBOffsets, NullCBOffsets, StartSlot,
839+
NumBuffers);
821840
if(pNumConstants)
822841
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBCounts, pNumConstants, StartSlot,
823842
NumBuffers);
843+
else
844+
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBCounts, NullCBCounts, StartSlot,
845+
NumBuffers);
824846

825847
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
826848
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -910,6 +932,11 @@ void WrappedID3D11DeviceContext::HSSetConstantBuffers1(UINT StartSlot, UINT NumB
910932
}
911933
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBOffsets, offs, StartSlot, NumBuffers);
912934
}
935+
else
936+
{
937+
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBOffsets, NullCBOffsets, StartSlot,
938+
NumBuffers);
939+
}
913940

914941
if(pNumConstants)
915942
{
@@ -921,6 +948,11 @@ void WrappedID3D11DeviceContext::HSSetConstantBuffers1(UINT StartSlot, UINT NumB
921948
}
922949
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBCounts, cnts, StartSlot, NumBuffers);
923950
}
951+
else
952+
{
953+
m_CurrentPipelineState->Change(m_CurrentPipelineState->HS.CBCounts, NullCBCounts, StartSlot,
954+
NumBuffers);
955+
}
924956

925957
VerifyState();
926958
}
@@ -949,9 +981,15 @@ bool WrappedID3D11DeviceContext::Serialise_DSSetConstantBuffers1(
949981
if(pFirstConstant)
950982
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBOffsets, pFirstConstant,
951983
StartSlot, NumBuffers);
984+
else
985+
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBOffsets, NullCBOffsets, StartSlot,
986+
NumBuffers);
952987
if(pNumConstants)
953988
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBCounts, pNumConstants, StartSlot,
954989
NumBuffers);
990+
else
991+
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBCounts, NullCBCounts, StartSlot,
992+
NumBuffers);
955993

956994
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
957995
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -1041,6 +1079,11 @@ void WrappedID3D11DeviceContext::DSSetConstantBuffers1(UINT StartSlot, UINT NumB
10411079
}
10421080
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBOffsets, offs, StartSlot, NumBuffers);
10431081
}
1082+
else
1083+
{
1084+
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBOffsets, NullCBOffsets, StartSlot,
1085+
NumBuffers);
1086+
}
10441087

10451088
if(pNumConstants)
10461089
{
@@ -1052,6 +1095,11 @@ void WrappedID3D11DeviceContext::DSSetConstantBuffers1(UINT StartSlot, UINT NumB
10521095
}
10531096
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBCounts, cnts, StartSlot, NumBuffers);
10541097
}
1098+
else
1099+
{
1100+
m_CurrentPipelineState->Change(m_CurrentPipelineState->DS.CBCounts, NullCBCounts, StartSlot,
1101+
NumBuffers);
1102+
}
10551103

10561104
VerifyState();
10571105
}
@@ -1080,9 +1128,15 @@ bool WrappedID3D11DeviceContext::Serialise_GSSetConstantBuffers1(
10801128
if(pFirstConstant)
10811129
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBOffsets, pFirstConstant,
10821130
StartSlot, NumBuffers);
1131+
else
1132+
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBOffsets, NullCBOffsets, StartSlot,
1133+
NumBuffers);
10831134
if(pNumConstants)
10841135
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBCounts, pNumConstants, StartSlot,
10851136
NumBuffers);
1137+
else
1138+
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBCounts, NullCBCounts, StartSlot,
1139+
NumBuffers);
10861140

10871141
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
10881142
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -1172,6 +1226,11 @@ void WrappedID3D11DeviceContext::GSSetConstantBuffers1(UINT StartSlot, UINT NumB
11721226
}
11731227
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBOffsets, offs, StartSlot, NumBuffers);
11741228
}
1229+
else
1230+
{
1231+
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBOffsets, NullCBOffsets, StartSlot,
1232+
NumBuffers);
1233+
}
11751234

11761235
if(pNumConstants)
11771236
{
@@ -1183,6 +1242,11 @@ void WrappedID3D11DeviceContext::GSSetConstantBuffers1(UINT StartSlot, UINT NumB
11831242
}
11841243
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBCounts, cnts, StartSlot, NumBuffers);
11851244
}
1245+
else
1246+
{
1247+
m_CurrentPipelineState->Change(m_CurrentPipelineState->GS.CBCounts, NullCBCounts, StartSlot,
1248+
NumBuffers);
1249+
}
11861250

11871251
VerifyState();
11881252
}
@@ -1211,9 +1275,15 @@ bool WrappedID3D11DeviceContext::Serialise_PSSetConstantBuffers1(
12111275
if(pFirstConstant)
12121276
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBOffsets, pFirstConstant,
12131277
StartSlot, NumBuffers);
1278+
else
1279+
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBOffsets, NullCBOffsets, StartSlot,
1280+
NumBuffers);
12141281
if(pNumConstants)
12151282
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBCounts, pNumConstants, StartSlot,
12161283
NumBuffers);
1284+
else
1285+
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBCounts, NullCBCounts, StartSlot,
1286+
NumBuffers);
12171287

12181288
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
12191289
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -1303,6 +1373,11 @@ void WrappedID3D11DeviceContext::PSSetConstantBuffers1(UINT StartSlot, UINT NumB
13031373
}
13041374
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBOffsets, offs, StartSlot, NumBuffers);
13051375
}
1376+
else
1377+
{
1378+
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBOffsets, NullCBOffsets, StartSlot,
1379+
NumBuffers);
1380+
}
13061381

13071382
if(pNumConstants)
13081383
{
@@ -1314,6 +1389,11 @@ void WrappedID3D11DeviceContext::PSSetConstantBuffers1(UINT StartSlot, UINT NumB
13141389
}
13151390
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBCounts, cnts, StartSlot, NumBuffers);
13161391
}
1392+
else
1393+
{
1394+
m_CurrentPipelineState->Change(m_CurrentPipelineState->PS.CBCounts, NullCBCounts, StartSlot,
1395+
NumBuffers);
1396+
}
13171397

13181398
VerifyState();
13191399
}
@@ -1342,9 +1422,15 @@ bool WrappedID3D11DeviceContext::Serialise_CSSetConstantBuffers1(
13421422
if(pFirstConstant)
13431423
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBOffsets, pFirstConstant,
13441424
StartSlot, NumBuffers);
1425+
else
1426+
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBOffsets, NullCBOffsets, StartSlot,
1427+
NumBuffers);
13451428
if(pNumConstants)
13461429
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBCounts, pNumConstants, StartSlot,
13471430
NumBuffers);
1431+
else
1432+
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBCounts, NullCBCounts, StartSlot,
1433+
NumBuffers);
13481434

13491435
ID3D11Buffer *bufs[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
13501436
for(UINT i = 0; ppConstantBuffers && i < NumBuffers; i++)
@@ -1434,6 +1520,11 @@ void WrappedID3D11DeviceContext::CSSetConstantBuffers1(UINT StartSlot, UINT NumB
14341520
}
14351521
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBOffsets, offs, StartSlot, NumBuffers);
14361522
}
1523+
else
1524+
{
1525+
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBOffsets, NullCBOffsets, StartSlot,
1526+
NumBuffers);
1527+
}
14371528

14381529
if(pNumConstants)
14391530
{
@@ -1445,6 +1536,11 @@ void WrappedID3D11DeviceContext::CSSetConstantBuffers1(UINT StartSlot, UINT NumB
14451536
}
14461537
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBCounts, cnts, StartSlot, NumBuffers);
14471538
}
1539+
else
1540+
{
1541+
m_CurrentPipelineState->Change(m_CurrentPipelineState->CS.CBCounts, NullCBCounts, StartSlot,
1542+
NumBuffers);
1543+
}
14481544

14491545
VerifyState();
14501546
}

0 commit comments

Comments
 (0)