diff --git a/util/test/demos/d3d12/d3d12_overlay_test.cpp b/util/test/demos/d3d12/d3d12_overlay_test.cpp index 653904e96..7d39d66c1 100644 --- a/util/test/demos/d3d12/d3d12_overlay_test.cpp +++ b/util/test/demos/d3d12/d3d12_overlay_test.cpp @@ -182,6 +182,7 @@ float4 main() : SV_Target0 pipe[1] = creator; creator.GraphicsDesc.DepthStencilState.StencilEnable = FALSE; + creator.GraphicsDesc.DepthStencilState.DepthEnable = FALSE; creator.GraphicsDesc.DepthStencilState.DepthFunc = D3D12_COMPARISON_FUNC_ALWAYS; creator.PS(whitepsblob); creator.DSV(DXGI_FORMAT_UNKNOWN); @@ -309,12 +310,38 @@ float4 main() : SV_Target0 setMarker(cmd, "Subresources mip 3"); cmd->DrawInstanced(24, 1, 9, 0); - FinishUsingBackbuffer(cmd, D3D12_RESOURCE_STATE_RENDER_TARGET); - cmd->Close(); Submit({cmd}); + { + cmd = GetCommandBuffer(); + + Reset(cmd); + + D3D12_CPU_DESCRIPTOR_HANDLE rtv = + MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(0); + + cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + + IASetVertexBuffer(cmd, vb, sizeof(DefaultA2V), 0); + cmd->SetGraphicsRootSignature(sig); + + OMSetRenderTargets(cmd, {rtv}, {}); + + cmd->SetPipelineState(whitepipe); + + setMarker(cmd, "NoView draw"); + + cmd->DrawInstanced(3, 1, 33, 0); + + FinishUsingBackbuffer(cmd, D3D12_RESOURCE_STATE_RENDER_TARGET); + + cmd->Close(); + } + + Submit({cmd}); + Present(); } diff --git a/util/test/rdtest/shared/Overlay_Test.py b/util/test/rdtest/shared/Overlay_Test.py index e314581b8..e0fe608b8 100644 --- a/util/test/rdtest/shared/Overlay_Test.py +++ b/util/test/rdtest/shared/Overlay_Test.py @@ -633,7 +633,7 @@ class Overlay_Test(rdtest.TestCase): if overlay == rd.DebugOverlay.ClearBeforeDraw or overlay == rd.DebugOverlay.ClearBeforePass: continue - rdtest.log.success("Checking overlay {} with mip/slice rendering".format(str(overlay))) + rdtest.log.print("Checking overlay {} with mip/slice rendering".format(str(overlay))) tex.resourceId = col_tex tex.overlay = overlay diff --git a/util/test/tests/D3D12/D3D12_Overlay_Test.py b/util/test/tests/D3D12/D3D12_Overlay_Test.py index 7e667565e..7de3210e4 100644 --- a/util/test/tests/D3D12/D3D12_Overlay_Test.py +++ b/util/test/tests/D3D12/D3D12_Overlay_Test.py @@ -4,4 +4,42 @@ import renderdoc as rd class D3D12_Overlay_Test(rdtest.Overlay_Test): demos_test_name = 'D3D12_Overlay_Test' - internal = False \ No newline at end of file + internal = False + + def check_capture(self): + super(D3D12_Overlay_Test, self).check_capture() + + out: rd.ReplayOutput = self.controller.CreateOutput(rd.CreateHeadlessWindowingData(100, 100), rd.ReplayOutputType.Texture) + + # Don't check any pixel values, but ensure all overlays at least work with no viewport/scissor bound + sub_marker: rd.DrawcallDescription = self.find_draw("NoView draw") + self.controller.SetFrameEvent(sub_marker.next.eventId, True) + + pipe: rd.PipeState = self.controller.GetPipelineState() + + tex = rd.TextureDisplay() + tex.resourceId = pipe.GetOutputTargets()[0].resourceId + + for overlay in rd.DebugOverlay: + if overlay == rd.DebugOverlay.NoOverlay: + continue + + # These overlays are just displaymodes really, not actually separate overlays + if overlay == rd.DebugOverlay.NaN or overlay == rd.DebugOverlay.Clipping: + continue + + if overlay == rd.DebugOverlay.ClearBeforeDraw or overlay == rd.DebugOverlay.ClearBeforePass: + continue + + rdtest.log.success("Checking overlay {} with no viewport/scissor".format(str(overlay))) + + tex.overlay = overlay + out.SetTextureDisplay(tex) + + out.Display() + + overlay_id: rd.ResourceId = out.GetDebugOverlayTexID() + + rdtest.log.success("Overlay {} rendered with no viewport/scissor".format(str(overlay))) + + out.Shutdown()