Skip to content

Commit 8d57a00

Browse files
committed
Fixup D3D12_Resource_Mapping_Zoo Sampler array tests
Add valid samplers instead of sampling using a NULL sampler
1 parent 6425d71 commit 8d57a00

File tree

1 file changed

+36
-17
lines changed

1 file changed

+36
-17
lines changed

util/test/demos/d3d12/d3d12_resource_mapping_zoo.cpp

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ float4 main() : SV_Target0
8888
std::string pixel_resArray = R"EOSHADER(
8989
9090
Texture2DArray<float> resArray[4] : register(t10, space1);
91-
SamplerState samplerArray[4] : register(s10, space1);
91+
SamplerState samplerArray[8] : register(s10, space1);
9292
9393
cbuffer consts : register(b3)
9494
{
@@ -336,7 +336,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
336336
ID3D12RootSignaturePtr sig_resArray = MakeSig({
337337
cbvParam(D3D12_SHADER_VISIBILITY_PIXEL, 0, 3),
338338
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 10, 4, 30),
339-
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 1, 10, 4, 30),
339+
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 1, 10, 8, 30),
340340
});
341341
ID3D12RootSignaturePtr sig_bindless = MakeSig({
342342
cbvParam(D3D12_SHADER_VISIBILITY_PIXEL, 0, 3),
@@ -355,6 +355,15 @@ float4 main(float4 pos : SV_Position) : SV_Target0
355355
tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0, 8, 0),
356356
});
357357

358+
D3D12_SAMPLER_DESC samplerDesc = {};
359+
samplerDesc.Filter = D3D12_FILTER_MIN_MAG_MIP_LINEAR;
360+
samplerDesc.AddressU = samplerDesc.AddressV = samplerDesc.AddressW =
361+
D3D12_TEXTURE_ADDRESS_MODE_WRAP;
362+
UINT increment = dev->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
363+
D3D12_CPU_DESCRIPTOR_HANDLE samplerStart = m_Sampler->GetCPUDescriptorHandleForHeapStart();
364+
for(int i = 0; i < 128; ++i)
365+
dev->CreateSampler(&samplerDesc, {samplerStart.ptr + increment * i});
366+
358367
ID3D12PipelineStatePtr pso_5_0 = MakePSO()
359368
.RootSig(sig_5_0)
360369
.InputLayout()
@@ -489,6 +498,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
489498
.RTV()
490499
.InitialState(D3D12_RESOURCE_STATE_RENDER_TARGET);
491500

501+
ID3D12DescriptorHeap *heaps[] = {m_CBVUAVSRV.GetInterfacePtr(), m_Sampler.GetInterfacePtr()};
492502
while(Running())
493503
{
494504
ID3D12GraphicsCommandListPtr cmd = GetCommandBuffer();
@@ -512,7 +522,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
512522
IASetVertexBuffer(cmd, vb, sizeof(DefaultA2V), 0);
513523
cmd->SetPipelineState(pso_5_0);
514524
cmd->SetGraphicsRootSignature(sig_5_0);
515-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
525+
cmd->SetDescriptorHeaps(2, heaps);
516526
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
517527
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
518528
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -525,33 +535,36 @@ float4 main(float4 pos : SV_Position) : SV_Target0
525535
setMarker(cmd, "sm_5_1");
526536
cmd->SetPipelineState(pso_5_1);
527537
cmd->SetGraphicsRootSignature(sig_5_1);
528-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
538+
cmd->SetDescriptorHeaps(2, heaps);
529539
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
530540
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
531541
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
532542
cmd->SetGraphicsRootDescriptorTable(3, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
543+
cmd->SetGraphicsRootDescriptorTable(4, m_Sampler->GetGPUDescriptorHandleForHeapStart());
533544
cmd->DrawInstanced(3, 1, 0, 0);
534545

535546
setMarker(cmd, "ResArray");
536547
cmd->SetPipelineState(pso_resArray);
537548
cmd->SetGraphicsRootSignature(sig_resArray);
538-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
549+
cmd->SetDescriptorHeaps(2, heaps);
539550
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
540551
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
552+
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
541553
cmd->DrawInstanced(3, 1, 0, 0);
542554

543555
setMarker(cmd, "Bindless");
544556
cmd->SetPipelineState(pso_bindless);
545557
cmd->SetGraphicsRootSignature(sig_bindless);
546-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
558+
cmd->SetDescriptorHeaps(2, heaps);
547559
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
548560
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
561+
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
549562
cmd->DrawInstanced(3, 1, 0, 0);
550563

551564
setMarker(cmd, "ResourceAccess");
552565
cmd->SetPipelineState(pso_resourceAccess);
553566
cmd->SetGraphicsRootSignature(sig_resourceAccess);
554-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
567+
cmd->SetDescriptorHeaps(2, heaps);
555568
cmd->SetGraphicsRootDescriptorTable(0, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
556569
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
557570
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -570,7 +583,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
570583
IASetVertexBuffer(cmd, vb, sizeof(DefaultA2V), 0);
571584
cmd->SetPipelineState(pso_6_0);
572585
cmd->SetGraphicsRootSignature(sig_5_0);
573-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
586+
cmd->SetDescriptorHeaps(2, heaps);
574587
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
575588
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
576589
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -583,33 +596,36 @@ float4 main(float4 pos : SV_Position) : SV_Target0
583596
setMarker(cmd, "SM6.0 Table");
584597
cmd->SetPipelineState(pso2_6_0);
585598
cmd->SetGraphicsRootSignature(sig_5_1);
586-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
599+
cmd->SetDescriptorHeaps(2, heaps);
587600
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
588601
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
589602
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
590603
cmd->SetGraphicsRootDescriptorTable(3, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
604+
cmd->SetGraphicsRootDescriptorTable(4, m_Sampler->GetGPUDescriptorHandleForHeapStart());
591605
cmd->DrawInstanced(3, 1, 0, 0);
592606

593607
setMarker(cmd, "SM6.0 ResArray");
594608
cmd->SetPipelineState(pso_6_0_resArray);
595609
cmd->SetGraphicsRootSignature(sig_resArray);
596-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
610+
cmd->SetDescriptorHeaps(2, heaps);
597611
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
598612
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
613+
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
599614
cmd->DrawInstanced(3, 1, 0, 0);
600615

601616
setMarker(cmd, "SM6.0 Bindless");
602617
cmd->SetPipelineState(pso_6_0_bindless);
603618
cmd->SetGraphicsRootSignature(sig_bindless);
604-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
619+
cmd->SetDescriptorHeaps(2, heaps);
605620
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
606621
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
622+
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
607623
cmd->DrawInstanced(3, 1, 0, 0);
608624

609625
setMarker(cmd, "SM6.0 ResourceAccess");
610626
cmd->SetPipelineState(pso_6_0_resourceAccess);
611627
cmd->SetGraphicsRootSignature(sig_resourceAccess);
612-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
628+
cmd->SetDescriptorHeaps(2, heaps);
613629
cmd->SetGraphicsRootDescriptorTable(0, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
614630
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
615631
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -630,7 +646,7 @@ float4 main(float4 pos : SV_Position) : SV_Target0
630646
IASetVertexBuffer(cmd, vb, sizeof(DefaultA2V), 0);
631647
cmd->SetPipelineState(pso_6_6);
632648
cmd->SetGraphicsRootSignature(sig_5_0);
633-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
649+
cmd->SetDescriptorHeaps(2, heaps);
634650
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
635651
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
636652
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
@@ -643,33 +659,36 @@ float4 main(float4 pos : SV_Position) : SV_Target0
643659
setMarker(cmd, "SM6.6 Table");
644660
cmd->SetPipelineState(pso2_6_6);
645661
cmd->SetGraphicsRootSignature(sig_5_1);
646-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
662+
cmd->SetDescriptorHeaps(2, heaps);
647663
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
648664
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
649665
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
650666
cmd->SetGraphicsRootDescriptorTable(3, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
667+
cmd->SetGraphicsRootDescriptorTable(4, m_Sampler->GetGPUDescriptorHandleForHeapStart());
651668
cmd->DrawInstanced(3, 1, 0, 0);
652669

653670
setMarker(cmd, "SM6.6 ResArray");
654671
cmd->SetPipelineState(pso_6_6_resArray);
655672
cmd->SetGraphicsRootSignature(sig_resArray);
656-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
673+
cmd->SetDescriptorHeaps(2, heaps);
657674
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
658675
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
676+
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
659677
cmd->DrawInstanced(3, 1, 0, 0);
660678

661679
setMarker(cmd, "SM6.6 Bindless");
662680
cmd->SetPipelineState(pso_6_6_bindless);
663681
cmd->SetGraphicsRootSignature(sig_bindless);
664-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
682+
cmd->SetDescriptorHeaps(2, heaps);
665683
cmd->SetGraphicsRootConstantBufferView(0, cb->GetGPUVirtualAddress());
666684
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
685+
cmd->SetGraphicsRootDescriptorTable(2, m_Sampler->GetGPUDescriptorHandleForHeapStart());
667686
cmd->DrawInstanced(3, 1, 0, 0);
668687

669688
setMarker(cmd, "SM6.6 ResourceAccess");
670689
cmd->SetPipelineState(pso_6_6_resourceAccess);
671690
cmd->SetGraphicsRootSignature(sig_resourceAccess);
672-
cmd->SetDescriptorHeaps(1, &m_CBVUAVSRV.GetInterfacePtr());
691+
cmd->SetDescriptorHeaps(2, heaps);
673692
cmd->SetGraphicsRootDescriptorTable(0, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
674693
cmd->SetGraphicsRootDescriptorTable(1, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());
675694
cmd->SetGraphicsRootDescriptorTable(2, m_CBVUAVSRV->GetGPUDescriptorHandleForHeapStart());

0 commit comments

Comments
 (0)