aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp51
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.cpp62
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.h6
-rw-r--r--src/yuzu/vk_device_info.cpp15
4 files changed, 79 insertions, 55 deletions
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<std::vector<VkLayerProperties>> 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 <type_traits>
#include <utility>
#include <vector>
+#include <vulkan/vulkan_core.h>
+#include <string>
#include "common/common_types.h"
#include "video_core/vulkan_common/vulkan.h"
@@ -1601,4 +1603,6 @@ std::optional<std::vector<VkExtensionProperties>> EnumerateInstanceExtensionProp
std::optional<std::vector<VkLayerProperties>> 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<Record>& 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<VkPresentModeKHR> present_modes =
physical_device.GetSurfacePresentModesKHR(*surface);
@@ -59,8 +60,16 @@ void PopulateRecords(std::vector<Record>& 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));
}