diff --git a/util/test/demos/d3d12/d3d12_execute_indirect.cpp b/util/test/demos/d3d12/d3d12_execute_indirect.cpp index c1577cbc9..5310603b0 100644 --- a/util/test/demos/d3d12/d3d12_execute_indirect.cpp +++ b/util/test/demos/d3d12/d3d12_execute_indirect.cpp @@ -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"); diff --git a/util/test/tests/D3D12/D3D12_Execute_Indirect.py b/util/test/tests/D3D12/D3D12_Execute_Indirect.py index 9fa3188a0..707cf4a63 100644 --- a/util/test/tests/D3D12/D3D12_Execute_Indirect.py +++ b/util/test/tests/D3D12/D3D12_Execute_Indirect.py @@ -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'):