diff --git a/rpcs3/Emu/RSX/VK/VKHelpers.cpp b/rpcs3/Emu/RSX/VK/VKHelpers.cpp index 9360215797..4a3bfc1c99 100644 --- a/rpcs3/Emu/RSX/VK/VKHelpers.cpp +++ b/rpcs3/Emu/RSX/VK/VKHelpers.cpp @@ -149,6 +149,13 @@ namespace vk case driver_vendor::ARM_MALI: // Needs more testing break; + case driver_vendor::QUALCOMM: + // Needs more testing + break; + case driver_vendor::TURNIP: + // GPU hangs in some titles due to waiting for a query result + g_drv_strict_query_scopes = true; + break; default: rsx_log.warning("Unsupported device: %s", gpu_name); } diff --git a/rpcs3/Emu/RSX/VK/vkutils/chip_class.h b/rpcs3/Emu/RSX/VK/vkutils/chip_class.h index 3f7d39e95e..8472142eef 100644 --- a/rpcs3/Emu/RSX/VK/vkutils/chip_class.h +++ b/rpcs3/Emu/RSX/VK/vkutils/chip_class.h @@ -57,7 +57,9 @@ namespace vk V3DV, HONEYKRISP, PANVK, - ARM_MALI + ARM_MALI, + QUALCOMM, + TURNIP }; driver_vendor get_driver_vendor(); diff --git a/rpcs3/Emu/RSX/VK/vkutils/device.cpp b/rpcs3/Emu/RSX/VK/vkutils/device.cpp index d0435133ee..5926f89013 100644 --- a/rpcs3/Emu/RSX/VK/vkutils/device.cpp +++ b/rpcs3/Emu/RSX/VK/vkutils/device.cpp @@ -353,6 +353,15 @@ namespace vk return driver_vendor::ARM_MALI; } + if (gpu_name.find("Adreno") != umax) + { +#if defined(_WIN32) || defined(ANDROID) + return driver_vendor::QUALCOMM; +#else + return driver_vendor::TURNIP; +#endif + } + return driver_vendor::unknown; } else @@ -384,6 +393,10 @@ namespace vk return driver_vendor::PANVK; case VK_DRIVER_ID_ARM_PROPRIETARY: return driver_vendor::ARM_MALI; + case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: + return driver_vendor::QUALCOMM; + case VK_DRIVER_ID_MESA_TURNIP: + return driver_vendor::TURNIP; default: // Mobile? return driver_vendor::unknown;