diff --git a/OptiScaler/hooks/Vulkan_Hooks.cpp b/OptiScaler/hooks/Vulkan_Hooks.cpp index 55502d78..126096c8 100644 --- a/OptiScaler/hooks/Vulkan_Hooks.cpp +++ b/OptiScaler/hooks/Vulkan_Hooks.cpp @@ -325,6 +325,9 @@ PFN_vkVoidFunction hkvkGetDeviceProcAddr(VkDevice device, const char* pName) void VulkanHooks::Hook(HMODULE vulkan1) { + if (vulkanModule == nullptr) + vulkanModule = vulkan1; + VulkanSpoofing::HookForVulkanSpoofing(vulkan1); VulkanSpoofing::HookForVulkanExtensionSpoofing(vulkan1); VulkanSpoofing::HookForVulkanVRAMSpoofing(vulkan1); diff --git a/OptiScaler/menu/menu_common.cpp b/OptiScaler/menu/menu_common.cpp index c9d847a9..d8fddbf8 100644 --- a/OptiScaler/menu/menu_common.cpp +++ b/OptiScaler/menu/menu_common.cpp @@ -2152,8 +2152,8 @@ bool MenuCommon::RenderMenu() } else { - firstLine = StrFmt("%s | FPS: %6.1f %s", api.c_str(), frameRate, fgText.c_str()); - } + firstLine = StrFmt("%s | FPS: %6.1f %s", api.c_str(), frameRate, fgText.c_str()); + } } else if (config->FpsOverlayType.value_or_default() == FpsOverlay_Simple) { @@ -2169,11 +2169,11 @@ bool MenuCommon::RenderMenu() } else { - firstLine = StrFmt("%s | FPS: %6.1f, %7.2f ms %s | %s -> %s %u.%u.%u", api.c_str(), frameRate, - frameTime, fgText.c_str(), state.currentInputApiName.c_str(), - currentFeature->Name().c_str(), currentFeature->Version().major, - currentFeature->Version().minor, currentFeature->Version().patch); - } + firstLine = StrFmt("%s | FPS: %6.1f, %7.2f ms %s | %s -> %s %u.%u.%u", api.c_str(), frameRate, + frameTime, fgText.c_str(), state.currentInputApiName.c_str(), + currentFeature->Name().c_str(), currentFeature->Version().major, + currentFeature->Version().minor, currentFeature->Version().patch); + } } else { @@ -2183,13 +2183,13 @@ bool MenuCommon::RenderMenu() frameRate / (float) (fg->GetInterpolatedFrameCount() + 1), frameTime, fgText.c_str()); } - else - { - firstLine = - StrFmt("%s | FPS: %6.1f, %7.2f ms %s", api.c_str(), frameRate, frameTime, fgText.c_str()); + else + { + firstLine = + StrFmt("%s | FPS: %6.1f, %7.2f ms %s", api.c_str(), frameRate, frameTime, fgText.c_str()); + } } } - } else { if (currentFeature != nullptr && !currentFeature->IsFrozen()) @@ -2207,10 +2207,10 @@ bool MenuCommon::RenderMenu() { firstLine = StrFmt("%s | FPS: %6.1f, Avg: %6.1f %s | %s -> %s %u.%u.%u", api.c_str(), frameRate, - 1000.0f / averageFrameTime, fgText.c_str(), state.currentInputApiName.c_str(), - currentFeature->Name().c_str(), currentFeature->Version().major, - currentFeature->Version().minor, currentFeature->Version().patch); - } + 1000.0f / averageFrameTime, fgText.c_str(), state.currentInputApiName.c_str(), + currentFeature->Name().c_str(), currentFeature->Version().major, + currentFeature->Version().minor, currentFeature->Version().patch); + } } else { @@ -2222,11 +2222,11 @@ bool MenuCommon::RenderMenu() } else { - firstLine = StrFmt("%s | FPS: %6.1f, Avg: %6.1f %s", api.c_str(), frameRate, - 1000.0f / averageFrameTime, fgText.c_str()); + firstLine = StrFmt("%s | FPS: %6.1f, Avg: %6.1f %s", api.c_str(), frameRate, + 1000.0f / averageFrameTime, fgText.c_str()); + } } } - } // Prepare Line 2 if (config->FpsOverlayType.value_or_default() >= FpsOverlay_Detailed) diff --git a/OptiScaler/spoofing/Vulkan_Spoofing.cpp b/OptiScaler/spoofing/Vulkan_Spoofing.cpp index 92a6e9b9..de6a10d0 100644 --- a/OptiScaler/spoofing/Vulkan_Spoofing.cpp +++ b/OptiScaler/spoofing/Vulkan_Spoofing.cpp @@ -272,26 +272,35 @@ VkResult VulkanSpoofing::hkvkCreateInstance(VkInstanceCreateInfo* pCreateInfo, c auto enumarate = o_vkEnumerateInstanceExtensionProperties; if (o_vkEnumerateInstanceExtensionProperties == nullptr) { - enumarate = (PFN_vkEnumerateInstanceExtensionProperties) KernelBaseProxy::GetProcAddress_()( - vulkanModule, "vkEnumerateInstanceExtensionProperties"); + if (vulkanModule == nullptr) + vulkanModule = KernelBaseProxy::GetModuleHandleA_()("vulkan-1.dll"); + + if (vulkanModule != nullptr) + { + enumarate = (PFN_vkEnumerateInstanceExtensionProperties) KernelBaseProxy::GetProcAddress_()( + vulkanModule, "vkEnumerateInstanceExtensionProperties"); + } + + if (enumarate == nullptr) + { + enumarate = vkEnumerateInstanceExtensionProperties; + } } - if (o_vkEnumerateInstanceExtensionProperties == nullptr) + if (enumarate != nullptr) { - enumarate = vkEnumerateInstanceExtensionProperties; - } + LOG_INFO("vkInstanceExtensions is empty, enumerating instance extensions"); + vkEnumerateInstanceExtensionPropertiesListed = true; + vkEnumerateInstanceExtensionPropertiesCount = 0; - LOG_INFO("vkInstanceExtensions is empty, enumerating instance extensions"); - vkEnumerateInstanceExtensionPropertiesListed = true; - vkEnumerateInstanceExtensionPropertiesCount = 0; - - enumarate(VK_NULL_HANDLE, &vkEnumerateInstanceExtensionPropertiesCount, VK_NULL_HANDLE); - std::vector extensions(vkEnumerateInstanceExtensionPropertiesCount); - enumarate(VK_NULL_HANDLE, &vkEnumerateInstanceExtensionPropertiesCount, extensions.data()); - for (const auto& ext : extensions) - { - vkInstanceExtensions[ext.extensionName] = true; - LOG_DEBUG(" {}", ext.extensionName); + enumarate(VK_NULL_HANDLE, &vkEnumerateInstanceExtensionPropertiesCount, VK_NULL_HANDLE); + std::vector extensions(vkEnumerateInstanceExtensionPropertiesCount); + enumarate(VK_NULL_HANDLE, &vkEnumerateInstanceExtensionPropertiesCount, extensions.data()); + for (const auto& ext : extensions) + { + vkInstanceExtensions[ext.extensionName] = true; + LOG_DEBUG(" {}", ext.extensionName); + } } } @@ -411,26 +420,35 @@ VkResult VulkanSpoofing::hkvkCreateDevice(VkPhysicalDevice physicalDevice, VkDev auto enumarate = o_vkEnumerateDeviceExtensionProperties; if (o_vkEnumerateDeviceExtensionProperties == nullptr) { - enumarate = (PFN_vkEnumerateDeviceExtensionProperties) KernelBaseProxy::GetProcAddress_()( - vulkanModule, "vkEnumerateDeviceExtensionProperties"); + if (vulkanModule == nullptr) + vulkanModule = KernelBaseProxy::GetModuleHandleA_()("vulkan-1.dll"); + + if (vulkanModule != nullptr) + { + enumarate = (PFN_vkEnumerateDeviceExtensionProperties) KernelBaseProxy::GetProcAddress_()( + vulkanModule, "vkEnumerateDeviceExtensionProperties"); + } + + if (enumarate == nullptr) + { + enumarate = vkEnumerateDeviceExtensionProperties; + } } - if (o_vkEnumerateDeviceExtensionProperties == nullptr) + if (enumarate != nullptr) { - enumarate = vkEnumerateDeviceExtensionProperties; - } + vkEnumerateDeviceExtensionPropertiesListed = true; + vkEnumerateDeviceExtensionPropertiesCount = 0; - vkEnumerateDeviceExtensionPropertiesListed = true; - vkEnumerateDeviceExtensionPropertiesCount = 0; + enumarate(physicalDevice, nullptr, &vkEnumerateDeviceExtensionPropertiesCount, nullptr); + std::vector extensions(vkEnumerateDeviceExtensionPropertiesCount); + enumarate(physicalDevice, nullptr, &vkEnumerateDeviceExtensionPropertiesCount, extensions.data()); - enumarate(physicalDevice, nullptr, &vkEnumerateDeviceExtensionPropertiesCount, nullptr); - std::vector extensions(vkEnumerateDeviceExtensionPropertiesCount); - enumarate(physicalDevice, nullptr, &vkEnumerateDeviceExtensionPropertiesCount, extensions.data()); - - for (const auto& ext : extensions) - { - vkDeviceExtensions[ext.extensionName] = true; - LOG_DEBUG(" {}", ext.extensionName); + for (const auto& ext : extensions) + { + vkDeviceExtensions[ext.extensionName] = true; + LOG_DEBUG(" {}", ext.extensionName); + } } }