From d7dbe0d963fb7fab2f1d1d7fa70500b3478fe566 Mon Sep 17 00:00:00 2001 From: Aleksey Komarov Date: Wed, 1 Jan 2025 22:25:43 +0300 Subject: [PATCH] vk: Add driver vendor PANVK (Mali GPU on Mesa) --- rpcs3/Emu/RSX/VK/VKCompute.cpp | 1 + rpcs3/Emu/RSX/VK/VKHelpers.cpp | 3 +++ rpcs3/Emu/RSX/VK/VKRenderTargets.h | 1 + rpcs3/Emu/RSX/VK/vkutils/chip_class.h | 3 ++- rpcs3/Emu/RSX/VK/vkutils/device.cpp | 7 +++++++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/RSX/VK/VKCompute.cpp b/rpcs3/Emu/RSX/VK/VKCompute.cpp index 499976b660..e7cfb617ba 100644 --- a/rpcs3/Emu/RSX/VK/VKCompute.cpp +++ b/rpcs3/Emu/RSX/VK/VKCompute.cpp @@ -78,6 +78,7 @@ namespace vk break; case vk::driver_vendor::LAVAPIPE: case vk::driver_vendor::V3DV: + case vk::driver_vendor::PANVK: // TODO: Actually bench this. Using 32 for now to match other common configurations. case vk::driver_vendor::DOZEN: // Actual optimal size depends on the D3D device. Use 32 since it should work well on both AMD and NVIDIA diff --git a/rpcs3/Emu/RSX/VK/VKHelpers.cpp b/rpcs3/Emu/RSX/VK/VKHelpers.cpp index 7789661ef2..2a31ffa51d 100644 --- a/rpcs3/Emu/RSX/VK/VKHelpers.cpp +++ b/rpcs3/Emu/RSX/VK/VKHelpers.cpp @@ -144,6 +144,9 @@ namespace vk case driver_vendor::HONEYKRISP: // Needs more testing break; + case driver_vendor::PANVK: + // Needs more testing + break; default: rsx_log.warning("Unsupported device: %s", gpu_name); } diff --git a/rpcs3/Emu/RSX/VK/VKRenderTargets.h b/rpcs3/Emu/RSX/VK/VKRenderTargets.h index 4bee28227a..19c9f04f63 100644 --- a/rpcs3/Emu/RSX/VK/VKRenderTargets.h +++ b/rpcs3/Emu/RSX/VK/VKRenderTargets.h @@ -190,6 +190,7 @@ namespace vk case driver_vendor::LAVAPIPE: case driver_vendor::V3DV: case driver_vendor::HONEYKRISP: + case driver_vendor::PANVK: break; } diff --git a/rpcs3/Emu/RSX/VK/vkutils/chip_class.h b/rpcs3/Emu/RSX/VK/vkutils/chip_class.h index 07b087d403..a905b7cc07 100644 --- a/rpcs3/Emu/RSX/VK/vkutils/chip_class.h +++ b/rpcs3/Emu/RSX/VK/vkutils/chip_class.h @@ -54,7 +54,8 @@ namespace vk LAVAPIPE, NVK, V3DV, - HONEYKRISP + HONEYKRISP, + PANVK }; driver_vendor get_driver_vendor(); diff --git a/rpcs3/Emu/RSX/VK/vkutils/device.cpp b/rpcs3/Emu/RSX/VK/vkutils/device.cpp index 25b2a57d62..ad80b3786f 100644 --- a/rpcs3/Emu/RSX/VK/vkutils/device.cpp +++ b/rpcs3/Emu/RSX/VK/vkutils/device.cpp @@ -302,6 +302,11 @@ namespace vk return driver_vendor::HONEYKRISP; } + if (gpu_name.find("Panfrost") != umax) + { + return driver_vendor::PANVK; + } + return driver_vendor::unknown; } else @@ -329,6 +334,8 @@ namespace vk return driver_vendor::V3DV; case VK_DRIVER_ID_MESA_HONEYKRISP: return driver_vendor::HONEYKRISP; + case VK_DRIVER_ID_MESA_PANVK: + return driver_vendor::PANVK; default: // Mobile? return driver_vendor::unknown;