From 29a232737a5f07bb14020d829fb8f6fc54a2ca5f Mon Sep 17 00:00:00 2001 From: FakeMichau <49685661+FakeMichau@users.noreply.github.com> Date: Tue, 16 Jul 2024 18:48:52 +0200 Subject: [PATCH] Always try to get a pointer to a reactive mask --- OptiScaler/backends/IFeature_Dx11wDx12.cpp | 14 ++++++------- OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp | 14 ++++++------- .../backends/fsr2/FSR2Feature_Dx11On12.cpp | 11 +++++----- OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp | 20 +++++++++---------- OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp | 19 +++++++++--------- .../fsr2_212/FSR2Feature_Dx11On12_212.cpp | 11 +++++----- .../fsr2_212/FSR2Feature_Dx12_212.cpp | 20 +++++++++---------- .../backends/fsr2_212/FSR2Feature_Vk_212.cpp | 19 +++++++++--------- .../backends/fsr31/FSR31Feature_Dx11On12.cpp | 11 +++++----- .../backends/fsr31/FSR31Feature_Dx12.cpp | 20 +++++++++---------- OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp | 15 ++++++++------ OptiScaler/backends/xess/XeSSFeature_Dx11.cpp | 12 +++++------ OptiScaler/backends/xess/XeSSFeature_Dx12.cpp | 11 ++++++---- 13 files changed, 104 insertions(+), 93 deletions(-) diff --git a/OptiScaler/backends/IFeature_Dx11wDx12.cpp b/OptiScaler/backends/IFeature_Dx11wDx12.cpp index c1c82d8e..70ab65c6 100644 --- a/OptiScaler/backends/IFeature_Dx11wDx12.cpp +++ b/OptiScaler/backends/IFeature_Dx11wDx12.cpp @@ -500,17 +500,17 @@ bool IFeature_Dx11wDx12::ProcessDx11Textures(const NVSDK_NGX_Parameter* InParame else spdlog::debug("IFeature_Dx11wDx12::ProcessDx11Textures AutoExposure enabled!"); - ID3D11Resource* paramMask = nullptr; + ID3D11Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mMask) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mMask); - - if (paramMask) + if (paramReactiveMask) { spdlog::debug("IFeature_Dx11wDx12::ProcessDx11Textures Bias mask exist.."); - if (CopyTextureFrom11To12(paramMask, &dx11Reactive, true, Config::Instance()->DontUseNTShared.value_or(false)) == false) + if (CopyTextureFrom11To12(paramReactiveMask, &dx11Reactive, true, Config::Instance()->DontUseNTShared.value_or(false)) == false) return false; } // This is only needed for XeSS @@ -710,7 +710,7 @@ bool IFeature_Dx11wDx12::ProcessDx11Textures(const NVSDK_NGX_Parameter* InParame dx11Exp.Dx12Handle = dx11Exp.Dx11Handle; } - if (!Config::Instance()->DisableReactiveMask.value_or(true) && paramMask && dx11Reactive.Dx12Handle != dx11Reactive.Dx11Handle) + if (!Config::Instance()->DisableReactiveMask.value_or(true) && paramReactiveMask && dx11Reactive.Dx12Handle != dx11Reactive.Dx11Handle) { if (dx11Reactive.Dx12Handle != NULL) CloseHandle(dx11Reactive.Dx12Handle); diff --git a/OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp b/OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp index f06c8c3a..a895ea9c 100644 --- a/OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp +++ b/OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp @@ -359,16 +359,16 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet else spdlog::debug("FSR2FeatureDx11::Evaluate AutoExposure enabled!"); - ID3D11Resource* paramMask = nullptr; + ID3D11Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mMask) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mMask); - - if (paramMask) + if (paramReactiveMask) { spdlog::debug("FSR2FeatureDx11::Evaluate Bias mask exist.."); - params.reactive = ffxGetResourceDX11(&_context, paramMask, (wchar_t*)L"FSR2_Reactive"); + params.reactive = ffxGetResourceDX11(&_context, paramReactiveMask, (wchar_t*)L"FSR2_Reactive"); } else { @@ -384,7 +384,7 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; _hasTM = params.transparencyAndComposition.resource != nullptr; - _hasReactiveMask = params.reactive.resource != nullptr; + _hasReactiveMask = paramReactiveMask != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr2/FSR2Feature_Dx11On12.cpp b/OptiScaler/backends/fsr2/FSR2Feature_Dx11On12.cpp index 571f05ae..8d4fc00f 100644 --- a/OptiScaler/backends/fsr2/FSR2Feature_Dx11On12.cpp +++ b/OptiScaler/backends/fsr2/FSR2Feature_Dx11On12.cpp @@ -70,13 +70,14 @@ bool FSR2FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_N } } + ID3D11Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + _hasReactiveMask = paramReactiveMask != nullptr; + if (!Config::Instance()->DisableReactiveMask.has_value()) { - ID3D11Resource* paramRM = nullptr; - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mRM) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mRM); - - if (paramRM == nullptr) + if (!paramReactiveMask) { spdlog::warn("FSR2FeatureDx11with12::Evaluate Bias mask not exist, enabling DisableReactiveMask!!"); Config::Instance()->DisableReactiveMask = true; diff --git a/OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp b/OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp index 3f4fde3c..daf87a31 100644 --- a/OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp +++ b/OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp @@ -238,20 +238,20 @@ bool FSR2FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N else spdlog::debug("FSR2FeatureDx12::Evaluate AutoExposure enabled!"); - ID3D12Resource* paramMask = nullptr; + ID3D12Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mMask) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mMask); - - if (paramMask) + if (paramReactiveMask) { spdlog::debug("FSR2FeatureDx12::Evaluate Bias mask exist.."); if (Config::Instance()->MaskResourceBarrier.has_value()) - ResourceBarrier(InCommandList, paramMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE); + ResourceBarrier(InCommandList, paramReactiveMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE); - params.reactive = ffxGetResourceDX12(&_context, paramMask, (wchar_t*)L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ); + params.reactive = ffxGetResourceDX12(&_context, paramReactiveMask, (wchar_t*)L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ); } } @@ -260,7 +260,7 @@ bool FSR2FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; _hasTM = params.transparencyAndComposition.resource != nullptr; - _hasReactiveMask = params.reactive.resource != nullptr; + _hasReactiveMask = paramReactiveMask != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; @@ -437,8 +437,8 @@ bool FSR2FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE, (D3D12_RESOURCE_STATES)Config::Instance()->ExposureResourceBarrier.value()); - if (paramMask && Config::Instance()->MaskResourceBarrier.has_value()) - ResourceBarrier(InCommandList, paramMask, + if (paramReactiveMask && Config::Instance()->MaskResourceBarrier.has_value()) + ResourceBarrier(InCommandList, paramReactiveMask, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value()); diff --git a/OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp b/OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp index 80edc35b..2abffacb 100644 --- a/OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp +++ b/OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp @@ -261,19 +261,20 @@ bool FSR2FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* I else spdlog::debug("FSR2FeatureVk::Evaluate AutoExposure enabled!"); - void* paramMask = nullptr; + void* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mMask); - - if (paramMask) + if (paramReactiveMask) { spdlog::debug("FSR2FeatureVk::Evaluate Bias mask exist.."); - params.reactive = ffxGetTextureResourceVK(&_context, ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Image, - ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.ImageView, - ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Height, - ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Format, (wchar_t*)L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ); + params.reactive = ffxGetTextureResourceVK(&_context, ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Image, + ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.ImageView, + ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Height, + ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Format, (wchar_t*)L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ); } else { @@ -289,7 +290,7 @@ bool FSR2FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* I _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; _hasTM = params.transparencyAndComposition.resource != nullptr; - _hasReactiveMask = params.reactive.resource != nullptr; + _hasReactiveMask = paramReactiveMask != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr2_212/FSR2Feature_Dx11On12_212.cpp b/OptiScaler/backends/fsr2_212/FSR2Feature_Dx11On12_212.cpp index 134711e2..17ac343c 100644 --- a/OptiScaler/backends/fsr2_212/FSR2Feature_Dx11On12_212.cpp +++ b/OptiScaler/backends/fsr2_212/FSR2Feature_Dx11On12_212.cpp @@ -73,13 +73,14 @@ bool FSR2FeatureDx11on12_212::Evaluate(ID3D11DeviceContext* InDeviceContext, NVS } } + ID3D11Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + _hasReactiveMask = paramReactiveMask != nullptr; + if (!Config::Instance()->DisableReactiveMask.has_value()) { - ID3D11Resource* paramRM = nullptr; - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mRM) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mRM); - - if (paramRM == nullptr) + if (!paramReactiveMask) { spdlog::warn("FSR2FeatureDx11with12_212::Evaluate Bias mask not exist, enabling DisableReactiveMask!!"); Config::Instance()->DisableReactiveMask = true; diff --git a/OptiScaler/backends/fsr2_212/FSR2Feature_Dx12_212.cpp b/OptiScaler/backends/fsr2_212/FSR2Feature_Dx12_212.cpp index 15b4cbf7..fdeb4724 100644 --- a/OptiScaler/backends/fsr2_212/FSR2Feature_Dx12_212.cpp +++ b/OptiScaler/backends/fsr2_212/FSR2Feature_Dx12_212.cpp @@ -238,20 +238,20 @@ bool FSR2FeatureDx12_212::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVS spdlog::debug("FSR2FeatureDx12_212::Evaluate AutoExposure enabled!"); } - ID3D12Resource* paramMask = nullptr; + ID3D12Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mMask) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mMask); - - if (paramMask) + if (paramReactiveMask) { spdlog::debug("FSR2FeatureDx12_212::Evaluate Bias mask exist.."); if (Config::Instance()->MaskResourceBarrier.has_value()) - ResourceBarrier(InCommandList, paramMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE); + ResourceBarrier(InCommandList, paramReactiveMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE); - params.reactive = Fsr212::ffxGetResourceDX12_212(&_context, paramMask, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); + params.reactive = Fsr212::ffxGetResourceDX12_212(&_context, paramReactiveMask, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); } } @@ -260,7 +260,7 @@ bool FSR2FeatureDx12_212::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVS _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; _hasTM = params.transparencyAndComposition.resource != nullptr; - _hasReactiveMask = params.reactive.resource != nullptr; + _hasReactiveMask = paramReactiveMask != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; @@ -419,8 +419,8 @@ bool FSR2FeatureDx12_212::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVS D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE, (D3D12_RESOURCE_STATES)Config::Instance()->ExposureResourceBarrier.value()); - if (paramMask && Config::Instance()->MaskResourceBarrier.has_value()) - ResourceBarrier(InCommandList, paramMask, + if (paramReactiveMask && Config::Instance()->MaskResourceBarrier.has_value()) + ResourceBarrier(InCommandList, paramReactiveMask, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value()); diff --git a/OptiScaler/backends/fsr2_212/FSR2Feature_Vk_212.cpp b/OptiScaler/backends/fsr2_212/FSR2Feature_Vk_212.cpp index 7ad8f3e7..84228333 100644 --- a/OptiScaler/backends/fsr2_212/FSR2Feature_Vk_212.cpp +++ b/OptiScaler/backends/fsr2_212/FSR2Feature_Vk_212.cpp @@ -256,19 +256,20 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter else spdlog::debug("FSR2FeatureVk212::Evaluate AutoExposure enabled!"); - void* paramMask = nullptr; + void* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mMask); - - if (paramMask) + if (paramReactiveMask) { spdlog::debug("FSR2FeatureVk212::Evaluate Bias mask exist.."); - params.reactive = Fsr212::ffxGetTextureResourceVK212(&_context, ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Image, - ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.ImageView, - ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Height, - ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Format, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); + params.reactive = Fsr212::ffxGetTextureResourceVK212(&_context, ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Image, + ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.ImageView, + ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Height, + ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Format, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); } else { @@ -284,7 +285,7 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; _hasTM = params.transparencyAndComposition.resource != nullptr; - _hasReactiveMask = params.reactive.resource != nullptr; + _hasReactiveMask = paramReactiveMask != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr31/FSR31Feature_Dx11On12.cpp b/OptiScaler/backends/fsr31/FSR31Feature_Dx11On12.cpp index 187e9262..bd9efc8a 100644 --- a/OptiScaler/backends/fsr31/FSR31Feature_Dx11On12.cpp +++ b/OptiScaler/backends/fsr31/FSR31Feature_Dx11On12.cpp @@ -109,13 +109,14 @@ bool FSR31FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_ } } + ID3D11Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + _hasReactiveMask = paramReactiveMask != nullptr; + if (!Config::Instance()->DisableReactiveMask.has_value()) { - ID3D11Resource* paramRM = nullptr; - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mRM) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mRM); - - if (paramRM == nullptr) + if (!paramReactiveMask) { spdlog::warn("FSR31FeatureDx11with12::Evaluate Bias mask not exist, enabling DisableReactiveMask!!"); Config::Instance()->DisableReactiveMask = true; diff --git a/OptiScaler/backends/fsr31/FSR31Feature_Dx12.cpp b/OptiScaler/backends/fsr31/FSR31Feature_Dx12.cpp index 2b55a342..07b2cc3b 100644 --- a/OptiScaler/backends/fsr31/FSR31Feature_Dx12.cpp +++ b/OptiScaler/backends/fsr31/FSR31Feature_Dx12.cpp @@ -279,20 +279,20 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_ spdlog::debug("FSR31FeatureDx12::Evaluate AutoExposure enabled!"); } - ID3D12Resource* paramMask = nullptr; + ID3D12Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mMask) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mMask); - - if (paramMask) + if (paramReactiveMask) { spdlog::debug("FSR31FeatureDx12::Evaluate Bias mask exist.."); if (Config::Instance()->MaskResourceBarrier.has_value()) - ResourceBarrier(InCommandList, paramMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE); + ResourceBarrier(InCommandList, paramReactiveMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE); - params.reactive = ffxApiGetResourceDX12(paramMask, FFX_API_RESOURCE_STATE_COMPUTE_READ); + params.reactive = ffxApiGetResourceDX12(paramReactiveMask, FFX_API_RESOURCE_STATE_COMPUTE_READ); } } @@ -301,7 +301,7 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_ _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; _hasTM = params.transparencyAndComposition.resource != nullptr; - _hasReactiveMask = params.reactive.resource != nullptr; + _hasReactiveMask = paramReactiveMask != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; @@ -463,8 +463,8 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_ D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE, (D3D12_RESOURCE_STATES)Config::Instance()->ExposureResourceBarrier.value()); - if (paramMask && Config::Instance()->MaskResourceBarrier.has_value()) - ResourceBarrier(InCommandList, paramMask, + if (paramReactiveMask && Config::Instance()->MaskResourceBarrier.has_value()) + ResourceBarrier(InCommandList, paramReactiveMask, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value()); diff --git a/OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp b/OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp index d31bcdc6..90aa0674 100644 --- a/OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp +++ b/OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp @@ -351,17 +351,20 @@ bool FSR31FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* else spdlog::debug("FSR31FeatureVk::Evaluate AutoExposure enabled!"); - void* paramMask = nullptr; + void* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mMask); + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask); - if (paramMask) + if (paramReactiveMask) { spdlog::debug("FSR31FeatureVk::Evaluate Bias mask exist.."); - params.reactive = ffxApiGetResourceVK(((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Image, - ffxApiGetImageResourceDescriptionVKLocal((NVSDK_NGX_Resource_VK*)paramMask), + params.reactive = ffxApiGetResourceVK(((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Image, + ffxApiGetImageResourceDescriptionVKLocal((NVSDK_NGX_Resource_VK*)paramReactiveMask), FFX_API_RESOURCE_STATE_COMPUTE_READ); } else @@ -378,7 +381,7 @@ bool FSR31FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; _hasTM = params.transparencyAndComposition.resource != nullptr; - _hasReactiveMask = params.reactive.resource != nullptr; + _hasReactiveMask = paramReactiveMask != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/xess/XeSSFeature_Dx11.cpp b/OptiScaler/backends/xess/XeSSFeature_Dx11.cpp index 97b02631..a3d9f536 100644 --- a/OptiScaler/backends/xess/XeSSFeature_Dx11.cpp +++ b/OptiScaler/backends/xess/XeSSFeature_Dx11.cpp @@ -81,13 +81,14 @@ bool XeSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_P } } + ID3D11Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + _hasReactiveMask = paramReactiveMask != nullptr; + if (!Config::Instance()->DisableReactiveMask.has_value()) { - ID3D11Resource* paramRM = nullptr; - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mRM) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mRM); - - if (paramRM == nullptr) + if (!paramReactiveMask) { spdlog::warn("XeSSFeatureDx11::Evaluate Bias mask not exist, enabling DisableReactiveMask!!"); Config::Instance()->DisableReactiveMask = true; @@ -263,7 +264,6 @@ bool XeSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_P params.pExposureScaleTexture = dx11Exp.Dx12Resource; _hasExposure = params.pExposureScaleTexture != nullptr; params.pResponsivePixelMaskTexture = dx11Reactive.Dx12Resource; - _hasReactiveMask = params.pResponsivePixelMaskTexture != nullptr; spdlog::debug("XeSSFeatureDx11::Evaluate Textures -> params complete!"); diff --git a/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp b/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp index 9b2fbc27..3dc35d50 100644 --- a/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp +++ b/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp @@ -236,12 +236,15 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N else spdlog::debug("XeSSFeatureDx12::Evaluate AutoExposure enabled!"); + ID3D12Resource* paramReactiveMask = nullptr; + if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶mReactiveMask) != NVSDK_NGX_Result_Success) + InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶mReactiveMask); + if (!Config::Instance()->DisableReactiveMask.value_or(true)) { - if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, ¶ms.pResponsivePixelMaskTexture) != NVSDK_NGX_Result_Success) - InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)¶ms.pResponsivePixelMaskTexture); + params.pResponsivePixelMaskTexture = paramReactiveMask; - if (params.pResponsivePixelMaskTexture) + if (paramReactiveMask) { spdlog::debug("XeSSFeatureDx12::Evaluate Bias mask exist.."); @@ -262,7 +265,7 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N _hasOutput = params.pOutputTexture != nullptr; _hasDepth = params.pDepthTexture != nullptr; _hasExposure = params.pExposureScaleTexture != nullptr; - _hasReactiveMask = params.pResponsivePixelMaskTexture != nullptr; + _hasReactiveMask = paramReactiveMask != nullptr; float MVScaleX = 1.0f; float MVScaleY = 1.0f;