Skip to content

Commit b5bf5ce

Browse files
committed
added check for null context
1 parent 4490e41 commit b5bf5ce

File tree

3 files changed

+60
-51
lines changed

3 files changed

+60
-51
lines changed

OptiScaler/apis/NVNGX_DLSS_Dx11.cpp

+18-15
Original file line numberDiff line numberDiff line change
@@ -661,24 +661,27 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D11_EvaluateFeature(ID3D11DeviceConte
661661

662662
auto dc = Dx11Contexts[handleId].get();
663663

664-
if (Config::Instance()->newBackend != "dlssd" && Config::Instance()->newBackend != "dlss")
665-
createParams = GetNGXParameters("OptiDx11");
666-
else
667-
createParams = InParameters;
664+
if (dc != nullptr)
665+
{
666+
if (Config::Instance()->newBackend != "dlssd" && Config::Instance()->newBackend != "dlss")
667+
createParams = GetNGXParameters("OptiDx11");
668+
else
669+
createParams = InParameters;
668670

669-
createParams->Set(NVSDK_NGX_Parameter_DLSS_Feature_Create_Flags, dc->GetFeatureFlags());
670-
createParams->Set(NVSDK_NGX_Parameter_Width, dc->RenderWidth());
671-
createParams->Set(NVSDK_NGX_Parameter_Height, dc->RenderHeight());
672-
createParams->Set(NVSDK_NGX_Parameter_OutWidth, dc->DisplayWidth());
673-
createParams->Set(NVSDK_NGX_Parameter_OutHeight, dc->DisplayHeight());
674-
createParams->Set(NVSDK_NGX_Parameter_PerfQualityValue, dc->PerfQualityValue());
671+
createParams->Set(NVSDK_NGX_Parameter_DLSS_Feature_Create_Flags, dc->GetFeatureFlags());
672+
createParams->Set(NVSDK_NGX_Parameter_Width, dc->RenderWidth());
673+
createParams->Set(NVSDK_NGX_Parameter_Height, dc->RenderHeight());
674+
createParams->Set(NVSDK_NGX_Parameter_OutWidth, dc->DisplayWidth());
675+
createParams->Set(NVSDK_NGX_Parameter_OutHeight, dc->DisplayHeight());
676+
createParams->Set(NVSDK_NGX_Parameter_PerfQualityValue, dc->PerfQualityValue());
675677

676-
LOG_TRACE("sleeping before reset of current feature for 1000ms");
677-
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
678+
LOG_TRACE("sleeping before reset of current feature for 1000ms");
679+
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
678680

679-
Dx11Contexts[handleId].reset();
680-
auto it = std::find_if(Dx11Contexts.begin(), Dx11Contexts.end(), [&handleId](const auto& p) { return p.first == handleId; });
681-
Dx11Contexts.erase(it);
681+
Dx11Contexts[handleId].reset();
682+
auto it = std::find_if(Dx11Contexts.begin(), Dx11Contexts.end(), [&handleId](const auto& p) { return p.first == handleId; });
683+
Dx11Contexts.erase(it);
684+
}
682685

683686
Config::Instance()->CurrentFeature = nullptr;
684687
}

OptiScaler/apis/NVNGX_DLSS_Dx12.cpp

+19-16
Original file line numberDiff line numberDiff line change
@@ -960,26 +960,29 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D12_EvaluateFeature(ID3D12GraphicsCom
960960

961961
auto dc = Dx12Contexts[handleId].get();
962962

963-
if (Config::Instance()->newBackend != "dlssd" && Config::Instance()->newBackend != "dlss")
964-
createParams = GetNGXParameters("OptiDx12");
965-
else
966-
createParams = InParameters;
963+
if (dc != nullptr)
964+
{
965+
if (Config::Instance()->newBackend != "dlssd" && Config::Instance()->newBackend != "dlss")
966+
createParams = GetNGXParameters("OptiDx12");
967+
else
968+
createParams = InParameters;
967969

968-
createParams->Set(NVSDK_NGX_Parameter_DLSS_Feature_Create_Flags, dc->GetFeatureFlags());
969-
createParams->Set(NVSDK_NGX_Parameter_Width, dc->RenderWidth());
970-
createParams->Set(NVSDK_NGX_Parameter_Height, dc->RenderHeight());
971-
createParams->Set(NVSDK_NGX_Parameter_OutWidth, dc->DisplayWidth());
972-
createParams->Set(NVSDK_NGX_Parameter_OutHeight, dc->DisplayHeight());
973-
createParams->Set(NVSDK_NGX_Parameter_PerfQualityValue, dc->PerfQualityValue());
970+
createParams->Set(NVSDK_NGX_Parameter_DLSS_Feature_Create_Flags, dc->GetFeatureFlags());
971+
createParams->Set(NVSDK_NGX_Parameter_Width, dc->RenderWidth());
972+
createParams->Set(NVSDK_NGX_Parameter_Height, dc->RenderHeight());
973+
createParams->Set(NVSDK_NGX_Parameter_OutWidth, dc->DisplayWidth());
974+
createParams->Set(NVSDK_NGX_Parameter_OutHeight, dc->DisplayHeight());
975+
createParams->Set(NVSDK_NGX_Parameter_PerfQualityValue, dc->PerfQualityValue());
974976

975-
dc = nullptr;
977+
dc = nullptr;
976978

977-
LOG_DEBUG("sleeping before reset of current feature for 1000ms");
978-
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
979+
LOG_DEBUG("sleeping before reset of current feature for 1000ms");
980+
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
979981

980-
Dx12Contexts[handleId].reset();
981-
auto it = std::find_if(Dx12Contexts.begin(), Dx12Contexts.end(), [&handleId](const auto& p) { return p.first == handleId; });
982-
Dx12Contexts.erase(it);
982+
Dx12Contexts[handleId].reset();
983+
auto it = std::find_if(Dx12Contexts.begin(), Dx12Contexts.end(), [&handleId](const auto& p) { return p.first == handleId; });
984+
Dx12Contexts.erase(it);
985+
}
983986

984987
Config::Instance()->CurrentFeature = nullptr;
985988

OptiScaler/apis/NVNGX_DLSS_Vk.cpp

+23-20
Original file line numberDiff line numberDiff line change
@@ -806,26 +806,29 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_EvaluateFeature(VkCommandBuffer
806806

807807
auto dc = VkContexts[handleId].get();
808808

809-
if (Config::Instance()->newBackend != "dlssd" && Config::Instance()->newBackend != "dlss")
810-
createParams = GetNGXParameters("OptiVk");
811-
else
812-
createParams = InParameters;
813-
814-
createParams->Set(NVSDK_NGX_Parameter_DLSS_Feature_Create_Flags, dc->GetFeatureFlags());
815-
createParams->Set(NVSDK_NGX_Parameter_Width, dc->RenderWidth());
816-
createParams->Set(NVSDK_NGX_Parameter_Height, dc->RenderHeight());
817-
createParams->Set(NVSDK_NGX_Parameter_OutWidth, dc->DisplayWidth());
818-
createParams->Set(NVSDK_NGX_Parameter_OutHeight, dc->DisplayHeight());
819-
createParams->Set(NVSDK_NGX_Parameter_PerfQualityValue, dc->PerfQualityValue());
820-
821-
dc = nullptr;
822-
823-
LOG_DEBUG("sleeping before reset of current feature for 1000ms");
824-
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
825-
826-
VkContexts[handleId].reset();
827-
auto it = std::find_if(VkContexts.begin(), VkContexts.end(), [&handleId](const auto& p) { return p.first == handleId; });
828-
VkContexts.erase(it);
809+
if (dc != nullptr)
810+
{
811+
if (Config::Instance()->newBackend != "dlssd" && Config::Instance()->newBackend != "dlss")
812+
createParams = GetNGXParameters("OptiVk");
813+
else
814+
createParams = InParameters;
815+
816+
createParams->Set(NVSDK_NGX_Parameter_DLSS_Feature_Create_Flags, dc->GetFeatureFlags());
817+
createParams->Set(NVSDK_NGX_Parameter_Width, dc->RenderWidth());
818+
createParams->Set(NVSDK_NGX_Parameter_Height, dc->RenderHeight());
819+
createParams->Set(NVSDK_NGX_Parameter_OutWidth, dc->DisplayWidth());
820+
createParams->Set(NVSDK_NGX_Parameter_OutHeight, dc->DisplayHeight());
821+
createParams->Set(NVSDK_NGX_Parameter_PerfQualityValue, dc->PerfQualityValue());
822+
823+
dc = nullptr;
824+
825+
LOG_DEBUG("sleeping before reset of current feature for 1000ms");
826+
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
827+
828+
VkContexts[handleId].reset();
829+
auto it = std::find_if(VkContexts.begin(), VkContexts.end(), [&handleId](const auto& p) { return p.first == handleId; });
830+
VkContexts.erase(it);
831+
}
829832

830833
Config::Instance()->CurrentFeature = nullptr;
831834
}

0 commit comments

Comments
 (0)