mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-10 03:18:55 +02:00
[desktop] Show basic driver info on GPU selector box (#3636)
Shows a short driver identification string in the Graphics Device combo box (desktop only, Android doesn't need this at all) Largely meant for debugging, especially macOS. Maybe Windows in the future once MESA begins working on FOSS drivers over there. Linux on ARM platforms too maybe? And Nvidia Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3636 Reviewed-by: DraVee <dravee@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
This commit is contained in:
parent
0ff84ef312
commit
ee67853636
4 changed files with 79 additions and 55 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue