mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-13 05:20:45 +00:00
For sparse MSAA textures ignore queried heap props. Closes #3561
This commit is contained in:
@@ -1069,6 +1069,16 @@ bool D3D12ResourceManager::Serialise_InitialState(SerialiserType &ser, ResourceI
|
||||
if(!m_Device->IsSparseResource(GetResID(liveRes)))
|
||||
liveRes->GetHeapProperties(&heapProps, NULL);
|
||||
|
||||
// if the resource is sparse, create on default heap
|
||||
if(sparseBinds)
|
||||
{
|
||||
heapProps.Type = D3D12_HEAP_TYPE_DEFAULT;
|
||||
heapProps.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
|
||||
heapProps.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
|
||||
heapProps.CreationNodeMask = 1;
|
||||
heapProps.VisibleNodeMask = 1;
|
||||
}
|
||||
|
||||
ID3D12GraphicsCommandList *list = Unwrap(m_Device->GetInitialStateList());
|
||||
|
||||
if(!list)
|
||||
|
||||
@@ -236,6 +236,14 @@ void main()
|
||||
|
||||
ID3D12PipelineStatePtr psoDepth = psoCreator;
|
||||
|
||||
psoCreator.DSV(DXGI_FORMAT_UNKNOWN);
|
||||
psoCreator.RTVs({DXGI_FORMAT_R16G16B16A16_FLOAT});
|
||||
psoCreator.SampleCount(4);
|
||||
|
||||
ID3D12PipelineStatePtr psoMSAA = psoCreator;
|
||||
|
||||
psoCreator.RTVs({DXGI_FORMAT_R8G8B8A8_UNORM_SRGB});
|
||||
|
||||
ID3D12ResourcePtr dsvtex = MakeTexture(DXGI_FORMAT_D32_FLOAT, screenWidth, screenHeight)
|
||||
.DSV()
|
||||
.InitialState(D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
||||
@@ -381,6 +389,25 @@ void main()
|
||||
|
||||
ID3D12ResourcePtr bufout = MakeBuffer().Size(1024).UAV();
|
||||
|
||||
ID3D12ResourcePtr sparseMSAA;
|
||||
{
|
||||
D3D12_RESOURCE_DESC desc;
|
||||
desc.Alignment = 0;
|
||||
desc.DepthOrArraySize = 1;
|
||||
desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
|
||||
desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
|
||||
desc.Format = DXGI_FORMAT_R16G16B16A16_FLOAT;
|
||||
desc.Height = 256;
|
||||
desc.Layout = D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE;
|
||||
desc.Width = 256;
|
||||
desc.MipLevels = 1;
|
||||
desc.SampleDesc.Count = 4;
|
||||
desc.SampleDesc.Quality = 0;
|
||||
|
||||
dev->CreateReservedResource(&desc, D3D12_RESOURCE_STATE_RENDER_TARGET, NULL,
|
||||
__uuidof(ID3D12Resource), (void **)&sparseMSAA);
|
||||
}
|
||||
|
||||
while(Running())
|
||||
{
|
||||
ID3D12GraphicsCommandListPtr cmd = GetCommandBuffer();
|
||||
@@ -506,6 +533,11 @@ void main()
|
||||
cmd->SetPipelineState(psoDepth);
|
||||
cmd->DrawIndexedInstanced(3, 1, 0, 0, 0);
|
||||
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE msrtv = MakeRTV(sparseMSAA).CreateCPU(1);
|
||||
cmd->SetPipelineState(psoMSAA);
|
||||
cmd->OMSetRenderTargets(1, &msrtv, FALSE, NULL);
|
||||
cmd->DrawIndexedInstanced(3, 1, 0, 0, 0);
|
||||
|
||||
FinishUsingBackbuffer(cmd, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||
|
||||
cmd->Close();
|
||||
|
||||
Reference in New Issue
Block a user