diff --git a/FSR3UnityPlugin.cpp b/FSR3UnityPlugin.cpp index e1a69d0..c2baf1c 100644 --- a/FSR3UnityPlugin.cpp +++ b/FSR3UnityPlugin.cpp @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -198,6 +199,33 @@ static bool LoadFidelityFXLibrary(_In_ LPCWSTR lpLibFileName) return false; } + // Check that we can actually create an upscaler with this library + ffx::QueryDescGetVersions versionQuery{}; + versionQuery.createDescType = FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE; + versionQuery.device = s_DX12BackendDesc.device; + uint64_t versionCount = 0; + versionQuery.outputCount = &versionCount; + s_ffxFunctions.Query(nullptr, &versionQuery.header); + + if (versionCount == 0) + { + UNITY_LOG_ERROR(s_Log, "Failed to load FidelityFX upscaler versions!"); + return false; + } + + // Obtain the default upscaler version and log its name + std::vector versionNames; + std::vector versionIds; + versionIds.resize(versionCount); + versionNames.resize(versionCount); + versionQuery.versionIds = versionIds.data(); + versionQuery.versionNames = versionNames.data(); + s_ffxFunctions.Query(nullptr, &versionQuery.header); + + std::stringstream ss; + ss << "Loaded FidelityFX upscaler: FSR " << versionNames[0]; + UNITY_LOG(s_Log, ss.str().c_str()); + return true; }