Fixup D3D12_Resource_Mapping_Zoo Sampler array tests

Add valid samplers instead of sampling using a NULL sampler
This commit is contained in:
Jake Turner
2025-10-27 13:49:27 +00:00
parent 6425d71fae
commit 8d57a00a64
@@ -88,7 +88,7 @@ float4 main() : SV_Target0
std::string pixel_resArray = R"EOSHADER(
Texture2DArray<float> resArray[4] : register(t10, space1);
SamplerState samplerArray[4] : register(s10, space1);
SamplerState samplerArray[8] : register(s10, space1);
cbuffer consts : register(b3)
{
@@ -336,7 +336,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
ID3D12RootSignaturePtr sig_resArray = MakeSig({
cbvParam(D3D12_SHADER_VISIBILITY_PIXEL, 0, 3),
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 10, 4, 30),
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 1, 10, 4, 30),
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 1, 10, 8, 30),
});
ID3D12RootSignaturePtr sig_bindless = MakeSig({
cbvParam(D3D12_SHADER_VISIBILITY_PIXEL, 0, 3),
@@ -355,6 +355,15 @@ float4 main(float4 pos : SV_Position) : SV_Target0
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0, 8, 0),
});
D3D12_SAMPLER_DESC samplerDesc = {};
samplerDesc.Filter = D3D12_FILTER_MIN_MAG_MIP_LINEAR;
samplerDesc.AddressU = samplerDesc.AddressV = samplerDesc.AddressW =
D3D12_TEXTURE_ADDRESS_MODE_WRAP;
UINT increment = dev->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
D3D12_CPU_DESCRIPTOR_HANDLE samplerStart = m_Sampler->GetCPUDescriptorHandleForHeapStart();
for(int i = 0; i < 128; ++i)
dev->CreateSampler(&samplerDesc, {samplerStart.ptr + increment * i});
ID3D12PipelineStatePtr pso_5_0 = MakePSO()
.RootSig(sig_5_0)
.InputLayout()
@@ -489,6 +498,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
.RTV()
.InitialState(D3D12_RESOURCE_STATE_RENDER_TARGET);
ID3D12DescriptorHeap *heaps[] = {m_CBVUAVSRV.GetInterfacePtr(), m_Sampler.GetInterfacePtr()};
while(Running())
{
ID3D12GraphicsCommandListPtr cmd = GetCommandBuffer();
@@ -512,7 +522,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
IASetVertexBuffer(cmd, vb, sizeof(DefaultA2V), 0);
cmd->SetPipelineState(pso_5_0);
cmd->SetGraphicsRootSignature(sig_5_0);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -525,33 +535,36 @@ float4 main(float4 pos : SV_Position) : SV_Target0
setMarker(cmd, "sm_5_1");
cmd->SetPipelineState(pso_5_1);
cmd->SetGraphicsRootSignature(sig_5_1);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(3, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(4, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "ResArray");
cmd->SetPipelineState(pso_resArray);
cmd->SetGraphicsRootSignature(sig_resArray);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "Bindless");
cmd->SetPipelineState(pso_bindless);
cmd->SetGraphicsRootSignature(sig_bindless);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "ResourceAccess");
cmd->SetPipelineState(pso_resourceAccess);
cmd->SetGraphicsRootSignature(sig_resourceAccess);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootDescriptorTable(0, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -570,7 +583,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
IASetVertexBuffer(cmd, vb, sizeof(DefaultA2V), 0);
cmd->SetPipelineState(pso_6_0);
cmd->SetGraphicsRootSignature(sig_5_0);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -583,33 +596,36 @@ float4 main(float4 pos : SV_Position) : SV_Target0
setMarker(cmd, "SM6.0 Table");
cmd->SetPipelineState(pso2_6_0);
cmd->SetGraphicsRootSignature(sig_5_1);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(3, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(4, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "SM6.0 ResArray");
cmd->SetPipelineState(pso_6_0_resArray);
cmd->SetGraphicsRootSignature(sig_resArray);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "SM6.0 Bindless");
cmd->SetPipelineState(pso_6_0_bindless);
cmd->SetGraphicsRootSignature(sig_bindless);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "SM6.0 ResourceAccess");
cmd->SetPipelineState(pso_6_0_resourceAccess);
cmd->SetGraphicsRootSignature(sig_resourceAccess);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootDescriptorTable(0, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -630,7 +646,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
IASetVertexBuffer(cmd, vb, sizeof(DefaultA2V), 0);
cmd->SetPipelineState(pso_6_6);
cmd->SetGraphicsRootSignature(sig_5_0);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -643,33 +659,36 @@ float4 main(float4 pos : SV_Position) : SV_Target0
setMarker(cmd, "SM6.6 Table");
cmd->SetPipelineState(pso2_6_6);
cmd->SetGraphicsRootSignature(sig_5_1);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(3, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(4, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "SM6.6 ResArray");
cmd->SetPipelineState(pso_6_6_resArray);
cmd->SetGraphicsRootSignature(sig_resArray);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "SM6.6 Bindless");
cmd->SetPipelineState(pso_6_6_bindless);
cmd->SetGraphicsRootSignature(sig_bindless);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
cmd->DrawInstanced(3, 1, 0, 0);
setMarker(cmd, "SM6.6 ResourceAccess");
cmd->SetPipelineState(pso_6_6_resourceAccess);
cmd->SetGraphicsRootSignature(sig_resourceAccess);
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
cmd->SetDescriptorHeaps(2, heaps);
cmd->SetGraphicsRootDescriptorTable(0, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());