dx12: root signature validation at pso creation

This commit is contained in:
Turanszki Janos
2023-12-30 08:35:05 +01:00
parent ea0fcb6e81
commit 3845f5159a
2 changed files with 20 additions and 12 deletions
+19 -11
View File
@@ -1454,6 +1454,7 @@ namespace dx12_internal
CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS Formats;
CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE ROOTSIG;
} stream1 = {};
struct PSO_STREAM2
@@ -3875,9 +3876,11 @@ using namespace dx12_internal;
struct PSO_STREAM
{
CD3DX12_PIPELINE_STATE_STREAM_CS CS;
CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE ROOTSIG;
} stream;
stream.CS = { internal_state->shadercode.data(), internal_state->shadercode.size() };
stream.ROOTSIG = internal_state->rootSignature.Get();
D3D12_PIPELINE_STATE_STREAM_DESC streamDesc = {};
streamDesc.pPipelineStateSubobjectStream = &stream;
@@ -3994,6 +3997,7 @@ using namespace dx12_internal;
{
internal_state->rootSignature = shader_internal->rootSignature;
internal_state->rootsig_desc = shader_internal->rootsig_desc;
stream.stream1.ROOTSIG = internal_state->rootSignature.Get();
}
}
if (pso->desc.hs != nullptr)
@@ -4004,6 +4008,7 @@ using namespace dx12_internal;
{
internal_state->rootSignature = shader_internal->rootSignature;
internal_state->rootsig_desc = shader_internal->rootsig_desc;
stream.stream1.ROOTSIG = internal_state->rootSignature.Get();
}
}
if (pso->desc.ds != nullptr)
@@ -4014,6 +4019,7 @@ using namespace dx12_internal;
{
internal_state->rootSignature = shader_internal->rootSignature;
internal_state->rootsig_desc = shader_internal->rootsig_desc;
stream.stream1.ROOTSIG = internal_state->rootSignature.Get();
}
}
if (pso->desc.gs != nullptr)
@@ -4024,6 +4030,7 @@ using namespace dx12_internal;
{
internal_state->rootSignature = shader_internal->rootSignature;
internal_state->rootsig_desc = shader_internal->rootsig_desc;
stream.stream1.ROOTSIG = internal_state->rootSignature.Get();
}
}
if (pso->desc.ps != nullptr)
@@ -4034,6 +4041,7 @@ using namespace dx12_internal;
{
internal_state->rootSignature = shader_internal->rootSignature;
internal_state->rootsig_desc = shader_internal->rootsig_desc;
stream.stream1.ROOTSIG = internal_state->rootSignature.Get();
}
}
@@ -4045,6 +4053,7 @@ using namespace dx12_internal;
{
internal_state->rootSignature = shader_internal->rootSignature;
internal_state->rootsig_desc = shader_internal->rootsig_desc;
stream.stream1.ROOTSIG = internal_state->rootSignature.Get();
}
}
if (pso->desc.as != nullptr)
@@ -4055,6 +4064,7 @@ using namespace dx12_internal;
{
internal_state->rootSignature = shader_internal->rootSignature;
internal_state->rootsig_desc = shader_internal->rootsig_desc;
stream.stream1.ROOTSIG = internal_state->rootSignature.Get();
}
}
@@ -4478,9 +4488,7 @@ using namespace dx12_internal;
switch (desc->profile)
{
case VideoProfile::H264:
#ifndef PLATFORM_XBOX
decoder_desc.Configuration.DecodeProfile = D3D12_VIDEO_DECODE_PROFILE_H264; // TODO
#endif // PLATFORM_XBOX
decoder_desc.Configuration.DecodeProfile = D3D12_VIDEO_DECODE_PROFILE_H264;
decoder_desc.Configuration.InterlaceType = D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE;
break;
//case VideoProfile::H265:
@@ -7649,13 +7657,13 @@ using namespace dx12_internal;
HRESULT hr = device->CreateFence(0, D3D12_FENCE_FLAG_NONE, PPV_ARGS(fence));
assert(SUCCEEDED(hr));
//D3D12_RESOURCE_BARRIER bar = {};
//bar.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
//bar.Transition.pResource = dpb_internal->resource.Get();
//bar.Transition.StateBefore = D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE;
//bar.Transition.StateAfter = D3D12_RESOURCE_STATE_COMMON;
//bar.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
//commandlist.GetVideoDecodeCommandList()->ResourceBarrier(1, &bar);
D3D12_RESOURCE_BARRIER bar = {};
bar.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
bar.Transition.pResource = dpb_internal->resource.Get();
bar.Transition.StateBefore = D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE;
bar.Transition.StateAfter = D3D12_RESOURCE_STATE_COMMON;
bar.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
commandlist.GetVideoDecodeCommandList()->ResourceBarrier(1, &bar);
hr = commandlist.GetVideoDecodeCommandList()->Close();
assert(SUCCEEDED(hr));
@@ -7679,7 +7687,7 @@ using namespace dx12_internal;
hr = commandlist.GetCommandAllocator()->Reset();
assert(SUCCEEDED(hr));
hr = commandlist.GetGraphicsCommandList()->Reset(commandlist.GetCommandAllocator(), nullptr);
hr = commandlist.GetVideoDecodeCommandList()->Reset(commandlist.GetCommandAllocator());
assert(SUCCEEDED(hr));
#endif
}
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wi::version
// minor features, major updates, breaking compatibility changes
const int minor = 71;
// minor bug fixes, alterations, refactors, updates
const int revision = 356;
const int revision = 357;
const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);