From 16f997172f27a9db403e47bfa994ec3a16aae592 Mon Sep 17 00:00:00 2001 From: aliaspider Date: Sun, 20 Dec 2020 08:08:04 +0100 Subject: [PATCH] (D3D12) allocate rt_view descriptors for feedback render targets too. --- gfx/common/d3d12_common.c | 5 +++-- gfx/drivers/d3d12.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/gfx/common/d3d12_common.c b/gfx/common/d3d12_common.c index d75cfcc10f..246c74ea2e 100644 --- a/gfx/common/d3d12_common.c +++ b/gfx/common/d3d12_common.c @@ -508,7 +508,7 @@ bool d3d12_init_descriptors(d3d12_video_t* d3d12) d3d12_create_root_signature(d3d12->device, &desc, &d3d12->desc.cs_rootSignature); d3d12->desc.rtv_heap.desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV; - d3d12->desc.rtv_heap.desc.NumDescriptors = countof(d3d12->chain.renderTargets) + GFX_MAX_SHADERS; + d3d12->desc.rtv_heap.desc.NumDescriptors = countof(d3d12->chain.renderTargets) + GFX_MAX_SHADERS * 2; d3d12->desc.rtv_heap.desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; d3d12_init_descriptor_heap(d3d12->device, &d3d12->desc.rtv_heap); @@ -533,7 +533,8 @@ bool d3d12_init_descriptors(d3d12_video_t* d3d12) { d3d12->pass[i].rt.rt_view.ptr = d3d12->desc.rtv_heap.cpu.ptr + - (countof(d3d12->chain.renderTargets) + i) * d3d12->desc.rtv_heap.stride; + (countof(d3d12->chain.renderTargets) + (2 * i)) * d3d12->desc.rtv_heap.stride; + d3d12->pass[i].feedback.rt_view.ptr = d3d12->pass[i].rt.rt_view.ptr + d3d12->desc.rtv_heap.stride; d3d12->pass[i].textures.ptr = d3d12_descriptor_heap_slot_alloc(&d3d12->desc.srv_heap).ptr - d3d12->desc.srv_heap.cpu.ptr + d3d12->desc.srv_heap.gpu.ptr; diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index d2e757f0f3..806241b58f 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -489,7 +489,8 @@ static bool d3d12_gfx_set_shader(void* data, enum rarch_shader_type type, const d3d12->pass[i].rt.rt_view.ptr = d3d12->desc.rtv_heap.cpu.ptr + - (countof(d3d12->chain.renderTargets) + i) * d3d12->desc.rtv_heap.stride; + (countof(d3d12->chain.renderTargets) + (2 * i)) * d3d12->desc.rtv_heap.stride; + d3d12->pass[i].feedback.rt_view.ptr = d3d12->pass[i].rt.rt_view.ptr + d3d12->desc.rtv_heap.stride; d3d12->pass[i].textures.ptr = d3d12->desc.srv_heap.gpu.ptr + i * SLANG_NUM_SEMANTICS * d3d12->desc.srv_heap.stride;