From 6a55108a37cfd4ce4fd0e5a841e17fab7a33e88c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Sat, 15 Jan 2022 17:49:36 +0100 Subject: [PATCH] Fixed RenderTargets leaking a texure when it's a Swapchain target --- .../DX11/Renderer/Dx11RenderTarget.bf | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RenderTarget.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RenderTarget.bf index 4704c04..755a8a7 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RenderTarget.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RenderTarget.bf @@ -46,8 +46,6 @@ namespace GlitchyEngine.Renderer ReleaseAndNullify(); - PlatformCreateTexture(); - if(_description.IsSwapchainTarget) { // TODO: if the engine supports multiple windows it has to support multiple swap chains. @@ -59,6 +57,10 @@ namespace GlitchyEngine.Renderer CreateViews(); } + else + { + PlatformCreateTexture(); + } if(_description.DepthStencilFormat != .None) { @@ -96,12 +98,26 @@ namespace GlitchyEngine.Renderer private void CreateViews() { Debug.Profiler.ProfileResourceFunction!(); + + if(_description.IsSwapchainTarget) + { + var result = NativeDevice.CreateShaderResourceView(_nativeTexture, null, &_nativeResourceView); + Log.EngineLogger.Assert(result.Succeeded, "Failed to create resource view"); - var result = NativeDevice.CreateShaderResourceView(_nativeTexture, null, &_nativeResourceView); - Log.EngineLogger.Assert(result.Succeeded, "Failed to create resource view"); + // TODO: SRGB... + //RenderTargetViewDescription rtvDesc = .(_nativeTexture, .Texture2D, .R8G8B8A8_UNorm_SRGB); + //result = NativeDevice.CreateRenderTargetView(_nativeTexture, &rtvDesc, &_nativeRenderTargetView); + result = NativeDevice.CreateRenderTargetView(_nativeTexture, null, &_nativeRenderTargetView); + Log.EngineLogger.Assert(result.Succeeded, "Failed to create render target view"); + } + else + { + var result = NativeDevice.CreateShaderResourceView(_nativeTexture, null, &_nativeResourceView); + Log.EngineLogger.Assert(result.Succeeded, "Failed to create resource view"); - result = NativeDevice.CreateRenderTargetView(_nativeTexture, null, &_nativeRenderTargetView); - Log.EngineLogger.Assert(result.Succeeded, "Failed to create render target view"); + result = NativeDevice.CreateRenderTargetView(_nativeTexture, null, &_nativeRenderTargetView); + Log.EngineLogger.Assert(result.Succeeded, "Failed to create render target view"); + } } } }