From f3bda542d676057cef3cdc6429426dc917f6b79a Mon Sep 17 00:00:00 2001 From: MajorPainTheCactus Date: Mon, 14 Mar 2022 22:00:24 +0000 Subject: [PATCH] Fixed crash when using stock shader and HDR and previous optimisation --- gfx/drivers/d3d12.c | 21 +++++++++------------ gfx/drivers/vulkan.c | 2 +- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index d5e0c09593..72604ce185 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -1528,22 +1528,19 @@ static bool d3d12_gfx_frame( if(d3d12->hdr.enable) { - if(use_back_buffer) - { - memset(&d3d12->chain.back_buffer, - 0, sizeof(d3d12->chain.back_buffer)); - d3d12->chain.back_buffer.desc.Width = video_width; - d3d12->chain.back_buffer.desc.Height = video_height; - d3d12->chain.back_buffer.desc.Format = back_buffer_format; - d3d12->chain.back_buffer.desc.Flags = + memset(&d3d12->chain.back_buffer, + 0, sizeof(d3d12->chain.back_buffer)); + d3d12->chain.back_buffer.desc.Width = video_width; + d3d12->chain.back_buffer.desc.Height = video_height; + d3d12->chain.back_buffer.desc.Format = back_buffer_format; + d3d12->chain.back_buffer.desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; - d3d12->chain.back_buffer.srv_heap = &d3d12->desc.srv_heap; - d3d12->chain.back_buffer.rt_view.ptr = + d3d12->chain.back_buffer.srv_heap = &d3d12->desc.srv_heap; + d3d12->chain.back_buffer.rt_view.ptr = d3d12->desc.rtv_heap.cpu.ptr + countof(d3d12->chain.renderTargets) * d3d12->desc.rtv_heap.stride; - d3d12_init_texture(d3d12->device, &d3d12->chain.back_buffer); - } + d3d12_init_texture(d3d12->device, &d3d12->chain.back_buffer); dxgi_swapchain_color_space(d3d12->chain.handle, &d3d12->chain.color_space, diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index a55b1a8900..d5ed2adde4 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -2669,7 +2669,7 @@ static bool vulkan_frame(void *data, const void *frame, if (!(vk->hdr.support = vk->context->swapchain_colour_space == VK_COLOR_SPACE_HDR10_ST2084_EXT)) vk->context->hdr_enable = false; - if(vk->context->hdr_enable && use_main_buffer) + if(vk->context->hdr_enable) { memset(&vk->main_buffer, 0, sizeof(vk->main_buffer));