diff --git a/OptiScaler/backends/IFeature_Dx12.cpp b/OptiScaler/backends/IFeature_Dx12.cpp index 7ecc1434..2b85347b 100644 --- a/OptiScaler/backends/IFeature_Dx12.cpp +++ b/OptiScaler/backends/IFeature_Dx12.cpp @@ -19,8 +19,6 @@ IFeature_Dx12::IFeature_Dx12(unsigned int InHandleId, NVSDK_NGX_Parameter* InPar void IFeature_Dx12::Shutdown() { - if (Imgui != nullptr && Imgui.get() != nullptr) - Imgui.reset(); } IFeature_Dx12::~IFeature_Dx12() @@ -53,7 +51,20 @@ IFeature_Dx12::~IFeature_Dx12() } } - if (OutputScaler != nullptr && OutputScaler.get() != nullptr) - OutputScaler.reset(); + if (!Config::Instance()->IsShuttingDown) + { + LOG_DEBUG(""); + if (Imgui != nullptr && Imgui.get() != nullptr) + Imgui.reset(); + + if (OutputScaler != nullptr && OutputScaler.get() != nullptr) + OutputScaler.reset(); + + if (RCAS != nullptr && RCAS.get() != nullptr) + RCAS.reset(); + + if (Bias != nullptr && Bias.get() != nullptr) + Bias.reset(); + } } diff --git a/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp b/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp index 682b1ce8..154bf684 100644 --- a/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp +++ b/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp @@ -415,6 +415,4 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N XeSSFeatureDx12::~XeSSFeatureDx12() { - if (RCAS != nullptr && RCAS.get() != nullptr) - RCAS.reset(); } diff --git a/OptiScaler/bias/Bias_Dx12.cpp b/OptiScaler/bias/Bias_Dx12.cpp index 9a6d5794..a1d62477 100644 --- a/OptiScaler/bias/Bias_Dx12.cpp +++ b/OptiScaler/bias/Bias_Dx12.cpp @@ -420,30 +420,30 @@ Bias_Dx12::~Bias_Dx12() if (!_init || Config::Instance()->IsShuttingDown) return; - ID3D12Fence* d3d12Fence = nullptr; + //ID3D12Fence* d3d12Fence = nullptr; - do - { - if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK) - break; + //do + //{ + // if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK) + // break; - d3d12Fence->Signal(999); + // d3d12Fence->Signal(999); - HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); + // HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); - if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK) - { - WaitForSingleObject(fenceEvent, INFINITE); - CloseHandle(fenceEvent); - } + // if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK) + // { + // WaitForSingleObject(fenceEvent, INFINITE); + // CloseHandle(fenceEvent); + // } - } while (false); + //} while (false); - if (d3d12Fence != nullptr) - { - d3d12Fence->Release(); - d3d12Fence = nullptr; - } + //if (d3d12Fence != nullptr) + //{ + // d3d12Fence->Release(); + // d3d12Fence = nullptr; + //} if (_rootSignature != nullptr) { diff --git a/OptiScaler/output_scaling/OS_Dx12.cpp b/OptiScaler/output_scaling/OS_Dx12.cpp index b6b015b8..ea0d27ef 100644 --- a/OptiScaler/output_scaling/OS_Dx12.cpp +++ b/OptiScaler/output_scaling/OS_Dx12.cpp @@ -545,30 +545,30 @@ OS_Dx12::~OS_Dx12() if (!_init || Config::Instance()->IsShuttingDown) return; - ID3D12Fence* d3d12Fence = nullptr; + //ID3D12Fence* d3d12Fence = nullptr; - do - { - if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK) - break; + //do + //{ + // if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK) + // break; - d3d12Fence->Signal(999); + // d3d12Fence->Signal(999); - HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); + // HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); - if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK) - { - WaitForSingleObject(fenceEvent, INFINITE); - CloseHandle(fenceEvent); - } + // if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK) + // { + // WaitForSingleObject(fenceEvent, INFINITE); + // CloseHandle(fenceEvent); + // } - } while (false); + //} while (false); - if (d3d12Fence != nullptr) - { - d3d12Fence->Release(); - d3d12Fence = nullptr; - } + //if (d3d12Fence != nullptr) + //{ + // d3d12Fence->Release(); + // d3d12Fence = nullptr; + //} if (_pipelineState != nullptr) { diff --git a/OptiScaler/rcas/RCAS_Dx12.cpp b/OptiScaler/rcas/RCAS_Dx12.cpp index 621cbf63..52ceae74 100644 --- a/OptiScaler/rcas/RCAS_Dx12.cpp +++ b/OptiScaler/rcas/RCAS_Dx12.cpp @@ -482,30 +482,30 @@ RCAS_Dx12::~RCAS_Dx12() if (!_init || Config::Instance()->IsShuttingDown) return; - ID3D12Fence* d3d12Fence = nullptr; + //ID3D12Fence* d3d12Fence = nullptr; - do - { - if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK) - break; + //do + //{ + // if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK) + // break; - d3d12Fence->Signal(999); + // d3d12Fence->Signal(999); - HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); + // HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); - if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK) - { - WaitForSingleObject(fenceEvent, INFINITE); - CloseHandle(fenceEvent); - } + // if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK) + // { + // WaitForSingleObject(fenceEvent, INFINITE); + // CloseHandle(fenceEvent); + // } - } while (false); + //} while (false); - if (d3d12Fence != nullptr) - { - d3d12Fence->Release(); - d3d12Fence = nullptr; - } + //if (d3d12Fence != nullptr) + //{ + // d3d12Fence->Release(); + // d3d12Fence = nullptr; + //} if (_rootSignature != nullptr) {