From 076e07912d425ea1f814cb7801cc9921d47d6426 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 3 Sep 2024 15:00:35 +0100 Subject: [PATCH] Add test of implicit embedded root signatures --- util/test/demos/d3d12/d3d12_parameter_zoo.cpp | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/util/test/demos/d3d12/d3d12_parameter_zoo.cpp b/util/test/demos/d3d12/d3d12_parameter_zoo.cpp index 8c4004199..e70beb7e1 100644 --- a/util/test/demos/d3d12/d3d12_parameter_zoo.cpp +++ b/util/test/demos/d3d12/d3d12_parameter_zoo.cpp @@ -39,6 +39,21 @@ float4 main() : SV_Target0 return float4(0, 1, 0, 1) + empty.Load(int3(0,0,0)); } +)EOSHADER"; + + std::string pixel_root = R"EOSHADER( + +#define MyRS1 "RootFlags( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), " \ + "DescriptorTable(SRV(t50, numDescriptors = 999)) " + +Texture2D empty : register(t50); + +[RootSignature(MyRS1)] +float4 main() : SV_Target0 +{ + return float4(0, 1, 0, 1) + empty.Load(int3(0,0,0)); +} + )EOSHADER"; int main() @@ -316,6 +331,13 @@ float4 main() : SV_Target0 SetBufferData(ib, D3D12_RESOURCE_STATE_COMMON, (const byte *)indices, sizeof(indices)); } + ID3DBlobPtr psblob_sig = Compile(pixel_root, "main", "ps_5_1"); + + // create a PSO with no root signature specified, only an implied embedded one + D3D12PSOCreator psoNoSigCreator = MakePSO().RootSig(NULL).InputLayout().VS(vsblob).PS(psblob_sig); + + ID3D12PipelineStatePtr psoNoSig = psoNoSigCreator; + ID3D12ResourcePtr rtvtex = MakeTexture(DXGI_FORMAT_R32G32B32A32_FLOAT, 4, 4) .RTV() .InitialState(D3D12_RESOURCE_STATE_RENDER_TARGET); @@ -406,6 +428,12 @@ float4 main() : SV_Target0 TEST_WARN("Didn't get the expected return value from AssertResourceState(PRESENT)"); } + cmd->SetPipelineState(psoNoSig); + + setMarker(cmd, "No Sig Draw"); + + cmd->DrawIndexedInstanced(3, 1, 0, 0, 0); + cmd->Close(); Submit({cmd});