diff --git a/Common/Vulkan/VulkanContext.cpp b/Common/Vulkan/VulkanContext.cpp index 31cb1573d3..2823318e80 100644 --- a/Common/Vulkan/VulkanContext.cpp +++ b/Common/Vulkan/VulkanContext.cpp @@ -619,7 +619,8 @@ bool VulkanContext::EnableDeviceExtension(const char *extension) { VkResult VulkanContext::CreateDevice() { if (!init_error_.empty() || physical_device_ < 0) { - ELOG("Vulkan init failed: %s", init_error_.c_str()); + // Forgot to call ChooseDevice? + ELOG("Vulkan init of physical device %d failed: %s", physical_device_, init_error_.c_str()); return VK_ERROR_INITIALIZATION_FAILED; } diff --git a/Common/Vulkan/VulkanLoader.cpp b/Common/Vulkan/VulkanLoader.cpp index 43298ec9c4..c0573f3940 100644 --- a/Common/Vulkan/VulkanLoader.cpp +++ b/Common/Vulkan/VulkanLoader.cpp @@ -413,6 +413,7 @@ bool VulkanMayBeAvailable() { case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: + ILOG("VulkanMayBeAvailable: Found usable device: '%s'", props.deviceName); anyGood = true; break; default: diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp index a5928d45ba..21c0f02894 100644 --- a/SDL/SDLMain.cpp +++ b/SDL/SDLMain.cpp @@ -793,7 +793,7 @@ int main(int argc, char *argv[]) { g_Config.bFullScreen = fullscreen; // Hide/Show cursor correctly toggling fullscreen - if (lastUIState == UISTATE_INGAME && fullscreen && !g_Config.bShowTouchControls) { + if (lastUIState == UISTATE_INGAME && fullscreen && !g_Config.bShowTouchControls && !g_Config.bShowDeveloperMenu) { SDL_ShowCursor(SDL_DISABLE); } else if (lastUIState != UISTATE_INGAME || !fullscreen) { SDL_ShowCursor(SDL_ENABLE); diff --git a/SDL/SDLVulkanGraphicsContext.cpp b/SDL/SDLVulkanGraphicsContext.cpp index 45898f3826..94c2c09158 100644 --- a/SDL/SDLVulkanGraphicsContext.cpp +++ b/SDL/SDLVulkanGraphicsContext.cpp @@ -56,7 +56,15 @@ bool SDLVulkanGraphicsContext::Init(SDL_Window *&window, int x, int y, int mode, vulkan_ = nullptr; return false; } - vulkan_->ChooseDevice(vulkan_->GetBestPhysicalDevice()); + + int deviceNum = vulkan_->GetPhysicalDeviceByName(g_Config.sVulkanDevice); + if (deviceNum < 0) { + deviceNum = vulkan_->GetBestPhysicalDevice(); + if (!g_Config.sVulkanDevice.empty()) + g_Config.sVulkanDevice = vulkan_->GetPhysicalDeviceProperties(deviceNum).properties.deviceName; + } + vulkan_->ChooseDevice(deviceNum); + if (vulkan_->CreateDevice() != VK_SUCCESS) { *error_message = vulkan_->InitError(); delete vulkan_; @@ -65,7 +73,7 @@ bool SDLVulkanGraphicsContext::Init(SDL_Window *&window, int x, int y, int mode, } SDL_SysWMinfo sys_info{}; - SDL_VERSION(&sys_info.version); //Set SDL version + SDL_VERSION(&sys_info.version); // Set SDL version if (!SDL_GetWindowWMInfo(window, &sys_info)) { fprintf(stderr, "Error getting SDL window wm info: %s\n", SDL_GetError()); exit(1);