D3D12_Execute_Indirect Increase count buf draw count to 256

A small stress test to exercise RenderDoc resolving of EI actions during loading
This commit is contained in:
Jake Turner
2026-09-06 19:48:14 +01:00
parent b6270982de
commit 356684b378
2 changed files with 8 additions and 5 deletions
@@ -428,14 +428,14 @@ void main(uint3 gid : SV_GroupID)
for(uint32_t i = 0; i < maxCountDraws; ++i)
{
countSingleDraws[i].VertexCountPerInstance = 3;
countSingleDraws[i].InstanceCount = i + 1;
countSingleDraws[i].InstanceCount = std::min(12U, i + 1);
countSingleDraws[i].StartInstanceLocation = 0;
countSingleDraws[i].StartVertexLocation = (9 + (i * 3)) % 18;
}
ID3D12ResourcePtr countSingleDrawsArgBuf =
MakeBuffer().Size(sizeof(countSingleDraws)).Data(&countSingleDraws);
uint32_t counts[] = {0, 5, 7, 11};
uint32_t counts[] = {0, 256, 7, 11};
ID3D12ResourcePtr countBuf = MakeBuffer().Data(counts);
ID3D12PipelineStatePtr patchpso3 =
@@ -736,7 +736,7 @@ void main(uint3 gid : SV_GroupID)
cmd->SetGraphicsRoot32BitConstants(3, 4, baseConstData, 0);
setMarker(cmd, "MaxCount: 1024 CountBuf: 5");
setMarker(cmd, "MaxCount: 1024 CountBuf: 256");
cmd->ExecuteIndirect(plainArgSig, maxCountDraws, countSingleDrawsArgBuf, 0, countBuf, 4);
NextTest();
setMarker(cmd, "MaxCount: 1 CountBuf: 7");
@@ -316,7 +316,7 @@ class D3D12_Execute_Indirect(rdtest.TestCase):
with rdtest.log.auto_section('Checking Count Buffer Draws'):
base = self.find_action("Count Buffer Draws")
tests = [
("MaxCount: 1024 CountBuf: 5", 5, 170),
("MaxCount: 1024 CountBuf: 256", 256, 170),
("MaxCount: 1 CountBuf: 7", 1, 250),
("MaxCount: 0 CountBuf: 11", 0, 0)
]
@@ -331,13 +331,14 @@ class D3D12_Execute_Indirect(rdtest.TestCase):
countDraws = len(executeAction.children) - 1
self.check_eq(countDraws, expectedDraws)
action = self.find_action("IndirectDraw", executeAction.eventId)
for drawNum in range(countDraws):
for drawNum in range(min(countDraws, 12)):
eid = action.eventId
self.controller.SetFrameEvent(eid, False)
pipe = self.controller.GetPipelineState()
if len(pipe.GetOutputTargets()) != 1:
raise rdtest.TestFailureException(
f"With event {eid} selected we should have one output target but there is {len(pipe.GetOutputTargets())}")
drawNum = drawNum % 6
x = xpos
y = 210 - drawNum * 20
if drawNum > 2:
@@ -354,6 +355,8 @@ class D3D12_Execute_Indirect(rdtest.TestCase):
self.check_pixel_history_succeeds(x, 165)
if drawNum > 3:
self.check_pixel_history_succeeds(x, 185)
if drawNum > 4:
self.check_pixel_history_succeeds(x, 205)
action = action.nextAction
with rdtest.log.auto_section('Two Single Draws QuadOverdraw (Pass) replayed correctly'):