#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!", LEVEL_DEBUG); LOG("NVSDK_NGX_VULKAN_Init AppId:" + std::to_string(InApplicationId), LEVEL_DEBUG); LOG("NVSDK_NGX_VULKAN_Init SDK:" + std::to_string(InSDKVersion), 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!", LEVEL_DEBUG); std::string pId = InProjectId; LOG("NVSDK_NGX_VULKAN_Init_ProjectID : " + pId, LEVEL_DEBUG); LOG("NVSDK_NGX_VULKAN_Init_ProjectID SDK:" + std::to_string(InSDKVersion), 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, LEVEL_DEBUG); LOG("NVSDK_NGX_VULKAN_Init_with_ProjectID SDK:" + std::to_string(InSDKVersion), 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", 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", 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", 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", 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", 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", 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", 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!", 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", 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", LEVEL_DEBUG); return NVSDK_NGX_Result_FAIL_PlatformError; }