From ff56446dd411f62e4a3b011fdcbc12849d8ff98d Mon Sep 17 00:00:00 2001 From: cdozdil Date: Fri, 5 Jul 2024 01:39:56 +0300 Subject: [PATCH] added mising NVSDK_NGX_VULKAN_GetFeatureRequirements --- OptiScaler/NVNGX_DLSS_Vk.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/OptiScaler/NVNGX_DLSS_Vk.cpp b/OptiScaler/NVNGX_DLSS_Vk.cpp index 5dd0fe34..3f869fc5 100644 --- a/OptiScaler/NVNGX_DLSS_Vk.cpp +++ b/OptiScaler/NVNGX_DLSS_Vk.cpp @@ -285,6 +285,42 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_AllocateParameters(NVSDK_NGX_Par return NVSDK_NGX_Result_Success; } +NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_GetFeatureRequirements(VkInstance VulkanInstance, VkPhysicalDevice PhysicalDevice, const NVSDK_NGX_FeatureDiscoveryInfo* FeatureDiscoveryInfo, NVSDK_NGX_FeatureRequirement* OutSupported) +{ + spdlog::debug("NVSDK_NGX_VULKAN_GetFeatureRequirements for ({0})", (int)FeatureDiscoveryInfo->FeatureID); + + if (FeatureDiscoveryInfo->FeatureID == NVSDK_NGX_Feature_SuperSampling) + { + if (OutSupported == nullptr) + *OutSupported = NVSDK_NGX_FeatureRequirement(); + + OutSupported->FeatureSupported = NVSDK_NGX_FeatureSupportResult_Supported; + OutSupported->MinHWArchitecture = 0; + + //Some old windows 10 os version + strcpy_s(OutSupported->MinOSVersion, "10.0.10240.16384"); + return NVSDK_NGX_Result_Success; + } + + if (Config::Instance()->DLSSEnabled.value_or(true) && NVNGXProxy::NVNGXModule() == nullptr) + NVNGXProxy::InitNVNGX(); + + if (Config::Instance()->DLSSEnabled.value_or(true) && NVNGXProxy::D3D12_GetFeatureRequirements() != nullptr) + { + spdlog::debug("NVSDK_NGX_D3D12_GetFeatureRequirements NVSDK_NGX_VULKAN_GetFeatureRequirements for ({0})", (int)FeatureDiscoveryInfo->FeatureID); + auto result = NVNGXProxy::VULKAN_GetFeatureRequirements()(VulkanInstance, PhysicalDevice, FeatureDiscoveryInfo, OutSupported); + spdlog::debug("NVSDK_NGX_D3D12_EvaluateFeature NVSDK_NGX_VULKAN_GetFeatureRequirements result for ({0}): {1:X}", (int)FeatureDiscoveryInfo->FeatureID, (UINT)result); + return result; + } + else + { + spdlog::debug("NVSDK_NGX_VULKAN_GetFeatureRequirements VULKAN_GetFeatureRequirements not available for ({0})", (int)FeatureDiscoveryInfo->FeatureID); + } + + OutSupported->FeatureSupported = NVSDK_NGX_FeatureSupportResult_AdapterUnsupported; + return NVSDK_NGX_Result_FAIL_FeatureNotSupported; +} + NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_GetCapabilityParameters(NVSDK_NGX_Parameter** OutParameters) { spdlog::debug("NVSDK_NGX_VULKAN_GetCapabilityParameters");