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;