@@ -660,23 +660,7 @@ SK_AKEF_GetExistingEndfieldPids (void)
660660 Global Variables and Plugin Settings (Hooks, CodePatches, etc.)
661661*/
662662
663- // Update the struct-layout if reflex.cpp is updated
664- extern struct SK_VK_REFLEX {
665- VkDevice device;
666- VkSwapchainKHR swapchain;
667- uint64_t last_frame;
668- VkSemaphore NvLL_semaphore;
669- };
670-
671- extern struct NVLL_VK_SET_SLEEP_MODE_PARAMS {
672- bool bLowLatencyMode;
673- bool bLowLatencyBoost;
674- uint32_t minimumIntervalUs;
675- };
676-
677- extern DWORD NvLL_VK_SetSleepMode_Detour (VkDevice device, NVLL_VK_SET_SLEEP_MODE_PARAMS * sleepModeParams);
678- extern SK_VK_REFLEX SK_VK_Reflex;
679- extern NVLL_VK_SET_SLEEP_MODE_PARAMS SK_NVLL_LastSleepParams;
663+ extern DWORD NvLL_VK_Sleep_Detour (VkDevice device, uint64_t signalValue);
680664extern PFN_vkWaitSemaphores vkWaitSemaphores_SK = nullptr ;
681665
682666bool __g_SK_AKEF_KeepOriginalSwapchain = false ;
@@ -838,11 +822,11 @@ namespace SK::ArknightsEndfield
838822 }
839823
840824 __forceinline int __fastcall
841- NvLL_VK_Sleep (const NvLL_VK_Sleep_pfn NvLL_VK_Sleep_Original, NvLowLatencyVk* nvLowLatencyVk)
825+ NvLL_VK_Sleep (NvLowLatencyVk* nvLowLatencyVk)
842826 {
843827 ++nvLowLatencyVk->reflexSemaphoreValue ;
844828
845- const int ret = NvLL_VK_Sleep_Original (nvLowLatencyVk->device , nvLowLatencyVk->reflexSemaphoreValue );
829+ const int ret = NvLL_VK_Sleep_Detour (nvLowLatencyVk->device , nvLowLatencyVk->reflexSemaphoreValue );
846830
847831 if (ret == 0 )
848832 {
@@ -858,16 +842,9 @@ namespace SK::ArknightsEndfield
858842 const auto result = vkWaitSemaphores_SK (nvLowLatencyVk->device , &waitInfo, 500000000 );
859843 if (result == VK_TIMEOUT )
860844 {
845+ SK_LOGi0 (L" Timeout while waiting (500 ms) for Reflex semaphore." );
861846 config.nvidia .reflex .use_limiter = false ;
862847 }
863- else if (result == VK_SUCCESS )
864- {
865- auto & rb =
866- SK_GetCurrentRenderBackend ();
867-
868- if (config.render .framerate .enforcement_policy == 2 && rb.vulkan_reflex .isPacingEligible ())
869- SK::Framerate::Tick (true , 0.0 , { 0 ,0 }, rb.swapchain .p );
870- }
871848 }
872849 return ret;
873850 }
@@ -876,49 +853,14 @@ namespace SK::ArknightsEndfield
876853 slCommon_ReflexSleep_Detour (NvLowLatencyVk* nvLowLatencyVk)
877854 {
878855 SK_LOG_FIRST_CALL
879-
880- SK_VK_Reflex.device = nvLowLatencyVk->device ;
881- if (config.nvidia .reflex .override || __SK_ForceDLSSGPacing)
882- NvLL_VK_SetSleepMode_Detour (nvLowLatencyVk->device , &SK_NVLL_LastSleepParams);
883-
884- static NvLL_VK_Sleep_pfn NvLL_VK_Sleep_Original = nullptr ;
885- if (NvLL_VK_Sleep_Original == nullptr )
886- {
887- if (nvLowLatencyVk->m_hmodReflex != nullptr )
888- {
889- NvLL_VK_Sleep_Original = reinterpret_cast <NvLL_VK_Sleep_pfn> (
890- SK_GetProcAddress (nvLowLatencyVk->m_hmodReflex , " NvLL_VK_Sleep" ));
891-
892- if (NvLL_VK_Sleep_Original == nullptr )
893- return slCommon_ReflexSleep_Hook.call <int > (nvLowLatencyVk);
894- }
895- }
896-
897- return NvLL_VK_Sleep (NvLL_VK_Sleep_Original, nvLowLatencyVk);
856+ return NvLL_VK_Sleep (nvLowLatencyVk);
898857 }
899858
900859 static int __fastcall
901860 slCommon_ReflexSleep_OTA_Detour (NvLowLatencyVk* nvLowLatencyVk)
902861 {
903862 SK_LOG_FIRST_CALL
904-
905- if (config.nvidia .reflex .override || __SK_ForceDLSSGPacing)
906- NvLL_VK_SetSleepMode_Detour (nvLowLatencyVk->device , &SK_NVLL_LastSleepParams);
907-
908- static NvLL_VK_Sleep_pfn NvLL_VK_Sleep_Original = nullptr ;
909- if (NvLL_VK_Sleep_Original == nullptr )
910- {
911- if (nvLowLatencyVk->m_hmodReflex != nullptr )
912- {
913- NvLL_VK_Sleep_Original = reinterpret_cast <NvLL_VK_Sleep_pfn> (
914- SK_GetProcAddress (nvLowLatencyVk->m_hmodReflex , " NvLL_VK_Sleep" ));
915-
916- if (NvLL_VK_Sleep_Original == nullptr )
917- return slCommon_ReflexSleep_OTA_Hook.call <int > (nvLowLatencyVk);
918- }
919- }
920-
921- return NvLL_VK_Sleep (NvLL_VK_Sleep_Original, nvLowLatencyVk);
863+ return NvLL_VK_Sleep (nvLowLatencyVk);
922864 }
923865 }
924866
0 commit comments