diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 8cb2ebfb62..3d98f2cbf7 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -850,56 +850,7 @@ bool Device::IsFormatSupported(VkFormat wanted_format, VkFormatFeatureFlags want } std::string Device::GetDriverName() const { - switch (properties.driver.driverID) { - case VK_DRIVER_ID_AMD_PROPRIETARY: - return "AMD"; - case VK_DRIVER_ID_AMD_OPEN_SOURCE: - return "AMDVLK"; - case VK_DRIVER_ID_MESA_RADV: - return "RADV"; - case VK_DRIVER_ID_NVIDIA_PROPRIETARY: - return "NVIDIA"; - case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS: - return "Intel"; - case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA: - return "ANV"; - case VK_DRIVER_ID_IMAGINATION_PROPRIETARY: - return "PowerVR"; - case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: - return "Qualcomm"; - case VK_DRIVER_ID_ARM_PROPRIETARY: - return "Mali"; - case VK_DRIVER_ID_SAMSUNG_PROPRIETARY: - return "Xclipse"; - case VK_DRIVER_ID_GOOGLE_SWIFTSHADER: - return "SwiftShader"; - case VK_DRIVER_ID_BROADCOM_PROPRIETARY: - return "Broadcom"; - case VK_DRIVER_ID_MESA_LLVMPIPE: - return "Lavapipe"; - case VK_DRIVER_ID_MOLTENVK: - return "MoltenVK"; - case VK_DRIVER_ID_VERISILICON_PROPRIETARY: - return "Vivante"; - case VK_DRIVER_ID_MESA_TURNIP: - return "Turnip"; - case VK_DRIVER_ID_MESA_V3DV: - return "V3DV"; - case VK_DRIVER_ID_MESA_PANVK: - return "PanVK"; - case VK_DRIVER_ID_MESA_VENUS: - return "Venus"; - case VK_DRIVER_ID_MESA_DOZEN: - return "Dozen"; - case VK_DRIVER_ID_MESA_NVK: - return "NVK"; - case VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA: - return "PVR"; - // case VK_DRIVER_ID_MESA_AGXV: - // return "Asahi"; - default: - return properties.driver.driverName; - } + return vk::GetDriverName(properties.driver); } bool Device::ShouldBoostClocks() const { diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp index 534a11edd4..926f48de89 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.cpp +++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project @@ -1012,4 +1012,64 @@ std::optional> EnumerateInstanceLayerProperties( return properties; } +std::string GetDriverName(VkPhysicalDeviceDriverProperties driver) { + switch (driver.driverID) { + case VK_DRIVER_ID_AMD_PROPRIETARY: + return "AMD"; + case VK_DRIVER_ID_AMD_OPEN_SOURCE: + return "AMDVLK"; + case VK_DRIVER_ID_MESA_RADV: + return "RADV"; + case VK_DRIVER_ID_NVIDIA_PROPRIETARY: + return "Nvidia"; + case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS: + return "Intel"; + case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA: + return "ANV"; + case VK_DRIVER_ID_IMAGINATION_PROPRIETARY: + return "PowerVR"; + case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: + return "Qualcomm"; + case VK_DRIVER_ID_ARM_PROPRIETARY: + return "Mali"; + case VK_DRIVER_ID_SAMSUNG_PROPRIETARY: + return "Xclipse"; + case VK_DRIVER_ID_GOOGLE_SWIFTSHADER: + return "SwiftShader"; + case VK_DRIVER_ID_BROADCOM_PROPRIETARY: + return "Broadcom"; + case VK_DRIVER_ID_MESA_LLVMPIPE: + return "llvmpipe"; + case VK_DRIVER_ID_MOLTENVK: + return "MoltenVK"; + case VK_DRIVER_ID_VERISILICON_PROPRIETARY: + return "Vivante"; + case VK_DRIVER_ID_MESA_TURNIP: + return "Turnip"; + case VK_DRIVER_ID_MESA_V3DV: + return "V3DV"; + case VK_DRIVER_ID_MESA_PANVK: + return "PanVK"; + case VK_DRIVER_ID_MESA_VENUS: + return "Venus"; + case VK_DRIVER_ID_MESA_DOZEN: + return "Dozen"; + case VK_DRIVER_ID_MESA_NVK: + return "NVK"; + case VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA: + return "PVR"; + case VK_DRIVER_ID_MESA_HONEYKRISP: + return "HoneyKrisp"; + case VK_DRIVER_ID_MESA_KOSMICKRISP: + return "KosmicKrisp"; + case VK_DRIVER_ID_GGP_PROPRIETARY: + case VK_DRIVER_ID_COREAVI_PROPRIETARY: + case VK_DRIVER_ID_JUICE_PROPRIETARY: + case VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN: + case VK_DRIVER_ID_MAX_ENUM: + default: + return driver.driverName; + } +} + } // namespace Vulkan::vk diff --git a/src/video_core/vulkan_common/vulkan_wrapper.h b/src/video_core/vulkan_common/vulkan_wrapper.h index 04b9420d98..5c04132f7b 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.h +++ b/src/video_core/vulkan_common/vulkan_wrapper.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include "common/common_types.h" #include "video_core/vulkan_common/vulkan.h" @@ -1601,4 +1603,6 @@ std::optional> EnumerateInstanceExtensionProp std::optional> EnumerateInstanceLayerProperties( const InstanceDispatch& dld); +std::string GetDriverName(VkPhysicalDeviceDriverProperties driver); + } // namespace Vulkan::vk diff --git a/src/yuzu/vk_device_info.cpp b/src/yuzu/vk_device_info.cpp index d961d550a1..45faecb95d 100644 --- a/src/yuzu/vk_device_info.cpp +++ b/src/yuzu/vk_device_info.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -47,7 +47,8 @@ void PopulateRecords(std::vector& records, QWindow* window) try { records.reserve(physical_devices.size()); for (const VkPhysicalDevice device : physical_devices) { const auto physical_device = vk::PhysicalDevice(device, dld); - const std::string name = physical_device.GetProperties().deviceName; + std::string name = physical_device.GetProperties().deviceName; + const std::vector present_modes = physical_device.GetSurfacePresentModesKHR(*surface); @@ -59,8 +60,16 @@ void PopulateRecords(std::vector& records, QWindow* window) try { properties.pNext = &driver_properties; dld.vkGetPhysicalDeviceProperties2(physical_device, &properties); + const auto driverID = driver_properties.driverID; + bool has_broken_compute{Vulkan::Device::CheckBrokenCompute( - driver_properties.driverID, properties.properties.driverVersion)}; + driverID, properties.properties.driverVersion)}; + + std::string driver_string = Vulkan::vk::GetDriverName(driver_properties); + + if (driver_string.empty()) driver_string = "Unknown"; + + name = fmt::format("{} ({})", name, driver_string); records.push_back(VkDeviceInfo::Record(name, present_modes, has_broken_compute)); }