mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 09:00:44 +00:00
Fixup D3D12_Resource_Mapping_Zoo Sampler array tests
Add valid samplers instead of sampling using a NULL sampler
This commit is contained in:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user