Files
OptiScaler/CyberXeSS/CyberXessVk.cpp
T
2024-01-10 00:16:53 +03:00

129 lines
6.1 KiB
C++

#include "pch.h"
#include "Config.h"
#include "CyberXess.h"
#include "Util.h"
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_Init(unsigned long long InApplicationId, const wchar_t* InApplicationDataPath, VkInstance InInstance, VkPhysicalDevice InPD, VkDevice InDevice, PFN_vkGetInstanceProcAddr InGIPA, PFN_vkGetDeviceProcAddr InGDPA, const NVSDK_NGX_FeatureCommonInfo* InFeatureInfo, NVSDK_NGX_Version InSDKVersion)
{
LOG("NVSDK_NGX_VULKAN_Init Init!", spdlog::level::debug);
LOG("NVSDK_NGX_VULKAN_Init AppId:" + std::to_string(InApplicationId), spdlog::level::debug);
LOG("NVSDK_NGX_VULKAN_Init SDK:" + std::to_string(InSDKVersion), spdlog::level::debug);
CyberXessContext::instance()->VulkanInstance = InInstance;
CyberXessContext::instance()->VulkanPhysicalDevice = InPD;
CyberXessContext::instance()->VulkanDevice = InDevice;
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_Init_ProjectID(const char* InProjectId, NVSDK_NGX_EngineType InEngineType, const char* InEngineVersion, const wchar_t* InApplicationDataPath, VkInstance InInstance, VkPhysicalDevice InPD, VkDevice InDevice, PFN_vkGetInstanceProcAddr InGIPA, PFN_vkGetDeviceProcAddr InGDPA, const NVSDK_NGX_FeatureCommonInfo* InFeatureInfo, NVSDK_NGX_Version InSDKVersion)
{
LOG("NVSDK_NGX_VULKAN_Init_ProjectID Init!", spdlog::level::debug);
std::string pId = InProjectId;
LOG("NVSDK_NGX_VULKAN_Init_ProjectID : " + pId, spdlog::level::debug);
LOG("NVSDK_NGX_VULKAN_Init_ProjectID SDK:" + std::to_string(InSDKVersion), spdlog::level::debug);
return NVSDK_NGX_VULKAN_Init(0x1337, InApplicationDataPath, InInstance, InPD, InDevice, InGIPA, InGDPA, InFeatureInfo, InSDKVersion);
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_VULKAN_Init_with_ProjectID(const char* InProjectId, NVSDK_NGX_EngineType InEngineType, const char* InEngineVersion, const wchar_t* InApplicationDataPath, VkInstance InInstance, VkPhysicalDevice InPD, VkDevice InDevice, PFN_vkGetInstanceProcAddr InGIPA, PFN_vkGetDeviceProcAddr InGDPA, const NVSDK_NGX_FeatureCommonInfo* InFeatureInfo, NVSDK_NGX_Version InSDKVersion)
{
std::string pId = InProjectId;
LOG("NVSDK_NGX_VULKAN_Init_with_ProjectID : " + pId, spdlog::level::debug);
LOG("NVSDK_NGX_VULKAN_Init_with_ProjectID SDK:" + std::to_string(InSDKVersion), spdlog::level::debug);
return NVSDK_NGX_VULKAN_Init(0x1337, InApplicationDataPath, InInstance, InPD, InDevice, InGIPA, InGDPA, InFeatureInfo, InSDKVersion);
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_Shutdown(void)
{
LOG("NVSDK_NGX_VULKAN_Shutdown", spdlog::level::debug);
CyberXessContext::instance()->VulkanDevice = nullptr;
CyberXessContext::instance()->VulkanInstance = nullptr;
CyberXessContext::instance()->VulkanPhysicalDevice = nullptr;
CyberXessContext::instance()->NvParameterInstance->Params.clear();
CyberXessContext::instance()->Contexts.clear();
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_Shutdown1(VkDevice InDevice)
{
LOG("NVSDK_NGX_VULKAN_Shutdown1", spdlog::level::debug);
CyberXessContext::instance()->VulkanDevice = nullptr;
CyberXessContext::instance()->VulkanInstance = nullptr;
CyberXessContext::instance()->VulkanPhysicalDevice = nullptr;
CyberXessContext::instance()->NvParameterInstance->Params.clear();
CyberXessContext::instance()->Contexts.clear();
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_Result NVSDK_NGX_VULKAN_GetParameters(NVSDK_NGX_Parameter** OutParameters)
{
LOG("NVSDK_NGX_VULKAN_GetParameters", spdlog::level::debug);
*OutParameters = CyberXessContext::instance()->NvParameterInstance->AllocateParameters();
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_AllocateParameters(NVSDK_NGX_Parameter** OutParameters)
{
LOG("NVSDK_NGX_VULKAN_AllocateParameters", spdlog::level::debug);
*OutParameters = NvParameter::instance()->AllocateParameters();
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_GetCapabilityParameters(NVSDK_NGX_Parameter** OutParameters)
{
LOG("NVSDK_NGX_VULKAN_GetCapabilityParameters", spdlog::level::debug);
*OutParameters = NvParameter::instance()->AllocateParameters();
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_DestroyParameters(NVSDK_NGX_Parameter* InParameters)
{
LOG("NVSDK_NGX_VULKAN_DestroyParameters", spdlog::level::debug);
NvParameter::instance()->DeleteParameters((NvParameter*)InParameters);
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_GetScratchBufferSize(NVSDK_NGX_Feature InFeatureId, const NVSDK_NGX_Parameter* InParameters, size_t* OutSizeInBytes)
{
LOG("NVSDK_NGX_VULKAN_GetScratchBufferSize -> 52428800", spdlog::level::debug);
*OutSizeInBytes = 52428800;
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_CreateFeature(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Feature InFeatureID, NVSDK_NGX_Parameter* InParameters, NVSDK_NGX_Handle** OutHandle)
{
return NVSDK_NGX_VULKAN_CreateFeature1(CyberXessContext::instance()->VulkanDevice, InCmdBuffer, InFeatureID, InParameters, OutHandle);
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_CreateFeature1(VkDevice InDevice, VkCommandBuffer InCmdList, NVSDK_NGX_Feature InFeatureID, NVSDK_NGX_Parameter* InParameters, NVSDK_NGX_Handle** OutHandle)
{
LOG("NVSDK_NGX_VULKAN_CreateFeature1 Fail!", spdlog::level::debug);
return NVSDK_NGX_Result_FAIL_PlatformError;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_ReleaseFeature(NVSDK_NGX_Handle* InHandle)
{
LOG("NVSDK_NGX_VULKAN_ReleaseFeature", spdlog::level::debug);
auto deviceContext = CyberXessContext::instance()->Contexts[InHandle->Id].get();
CyberXessContext::instance()->DeleteContext(InHandle);
return NVSDK_NGX_Result_Success;
}
NVSDK_NGX_API NVSDK_NGX_Result NVSDK_CONV NVSDK_NGX_VULKAN_EvaluateFeature(VkCommandBuffer InCmdList, const NVSDK_NGX_Handle* InFeatureHandle, const NVSDK_NGX_Parameter* InParameters, PFN_NVSDK_NGX_ProgressCallback InCallback)
{
LOG("NVSDK_NGX_VULKAN_EvaluateFeature", spdlog::level::debug);
return NVSDK_NGX_Result_FAIL_PlatformError;
}