From 846a0b5685b75877a93b59073a6b7f397af0bcde Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 31 Jul 2025 15:08:38 +0200 Subject: [PATCH] Fix PSO init to release old data on recreation --- .../GraphicsDevice/DirectX/DX11/GPUPipelineStateDX11.cpp | 3 ++- .../GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.cpp | 3 ++- Source/Engine/GraphicsDevice/Vulkan/GPUPipelineStateVulkan.cpp | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Source/Engine/GraphicsDevice/DirectX/DX11/GPUPipelineStateDX11.cpp b/Source/Engine/GraphicsDevice/DirectX/DX11/GPUPipelineStateDX11.cpp index 5b5bbdb4c..99cadde7e 100644 --- a/Source/Engine/GraphicsDevice/DirectX/DX11/GPUPipelineStateDX11.cpp +++ b/Source/Engine/GraphicsDevice/DirectX/DX11/GPUPipelineStateDX11.cpp @@ -31,7 +31,8 @@ bool GPUPipelineStateDX11::IsValid() const bool GPUPipelineStateDX11::Init(const Description& desc) { - ASSERT(!IsValid()); + if (IsValid()) + OnReleaseGPU(); // Cache shaders VS = (GPUShaderProgramVSDX11*)desc.VS; diff --git a/Source/Engine/GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.cpp b/Source/Engine/GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.cpp index 7695260cd..2abfb3e48 100644 --- a/Source/Engine/GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.cpp +++ b/Source/Engine/GraphicsDevice/DirectX/DX12/GPUPipelineStateDX12.cpp @@ -135,7 +135,8 @@ void GPUPipelineStateDX12::OnReleaseGPU() bool GPUPipelineStateDX12::Init(const Description& desc) { - ASSERT(!IsValid()); + if (IsValid()) + OnReleaseGPU(); // Create description D3D12_GRAPHICS_PIPELINE_STATE_DESC psDesc; diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUPipelineStateVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUPipelineStateVulkan.cpp index b8357e29f..927e4fbca 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUPipelineStateVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUPipelineStateVulkan.cpp @@ -355,7 +355,8 @@ bool GPUPipelineStateVulkan::IsValid() const bool GPUPipelineStateVulkan::Init(const Description& desc) { - ASSERT(!IsValid()); + if (IsValid()) + OnReleaseGPU(); // Reset description RenderToolsVulkan::ZeroStruct(_desc, VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO);