From b5eedb2529424a66a0440d31f047f0951bc98e01 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Sun, 24 May 2026 22:44:50 +0300 Subject: [PATCH] Added null check before copying InFeatureInfo, fixes RTX Remix --- OptiScaler/inputs/NVNGX_DLSS_Dx11.cpp | 12 +++++++++--- OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp | 12 +++++++++--- OptiScaler/inputs/NVNGX_DLSS_Vk.cpp | 20 +++++++++++++++----- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/OptiScaler/inputs/NVNGX_DLSS_Dx11.cpp b/OptiScaler/inputs/NVNGX_DLSS_Dx11.cpp index 30679df5..c78553d9 100644 --- a/OptiScaler/inputs/NVNGX_DLSS_Dx11.cpp +++ b/OptiScaler/inputs/NVNGX_DLSS_Dx11.cpp @@ -139,7 +139,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D11_Init_Ext(unsigned long long InApp const NVSDK_NGX_FeatureCommonInfo* InFeatureInfo) { NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); @@ -222,7 +224,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D11_Init(unsigned long long InApplica NVSDK_NGX_Version InSDKVersion) { NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); @@ -263,7 +267,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D11_Init_ProjectID(const char* InProj const NVSDK_NGX_FeatureCommonInfo* InFeatureInfo) { NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); diff --git a/OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp b/OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp index 9b07465d..b0ab4408 100644 --- a/OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp +++ b/OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp @@ -152,7 +152,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D12_Init_Ext(unsigned long long InApp LOG_FUNC(); NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); @@ -233,7 +235,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D12_Init(unsigned long long InApplica LOG_FUNC(); NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); @@ -289,7 +293,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D12_Init_ProjectID(const char* InProj LOG_FUNC(); NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); diff --git a/OptiScaler/inputs/NVNGX_DLSS_Vk.cpp b/OptiScaler/inputs/NVNGX_DLSS_Vk.cpp index c9350205..e872002a 100644 --- a/OptiScaler/inputs/NVNGX_DLSS_Vk.cpp +++ b/OptiScaler/inputs/NVNGX_DLSS_Vk.cpp @@ -145,7 +145,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_Init_Ext2( LOG_FUNC(); NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); @@ -282,7 +284,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_Init_Ext(unsigned long long InAp LOG_FUNC(); NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); @@ -325,7 +329,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_Init_ProjectID_Ext( LOG_FUNC(); NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); @@ -373,7 +379,9 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_Init(unsigned long long InApplic LOG_FUNC(); NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo); @@ -416,7 +424,9 @@ NVSDK_NGX_VULKAN_Init_ProjectID(const char* InProjectId, NVSDK_NGX_EngineType In LOG_FUNC(); NVSDK_NGX_FeatureCommonInfo localFeatureInfo = {}; - std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); + + if (InFeatureInfo != nullptr) + std::memcpy(&localFeatureInfo, InFeatureInfo, sizeof(NVSDK_NGX_FeatureCommonInfo)); if (!_skipInit) UpdateInitPaths(&localFeatureInfo);