nv2a/vk: Add preferred physical device to config

This commit is contained in:
Erik Abair
2025-11-29 13:56:36 -07:00
committed by GitHub
parent aa496f863f
commit eb8e4519ed
2 changed files with 25 additions and 7 deletions
+1
View File
@@ -146,6 +146,7 @@ display:
validation_layers: bool
debug_shaders: bool
assert_on_validation_msg: bool
preferred_physical_device: string
quality:
surface_scale:
type: integer
+24 -7
View File
@@ -451,19 +451,33 @@ static bool select_physical_device(PGRAPHState *pg, Error **errp)
g_malloc_n(num_physical_devices, sizeof(VkPhysicalDevice));
vkEnumeratePhysicalDevices(r->instance, &num_physical_devices, devices);
const char *preferred_device = g_config.display.vulkan.preferred_physical_device;
int preferred_device_index = -1;
fprintf(stderr, "Available physical devices:\n");
for (int i = 0; i < num_physical_devices; i++) {
vkGetPhysicalDeviceProperties(devices[i], &r->device_props);
fprintf(stderr, "- %s\n", r->device_props.deviceName);
bool is_preferred =
preferred_device &&
!strcmp(r->device_props.deviceName, preferred_device);
if (is_preferred) {
preferred_device_index = i;
}
fprintf(stderr, "- %s%s\n", r->device_props.deviceName,
is_preferred ? " *" : "");
}
// FIXME: Store preferred device
r->physical_device = VK_NULL_HANDLE;
for (int i = 0; i < num_physical_devices; i++) {
if (is_device_compatible(devices[i])) {
r->physical_device = devices[i];
break;
if (preferred_device_index >= 0 &&
is_device_compatible(devices[preferred_device_index])) {
r->physical_device = devices[preferred_device_index];
} else {
for (int i = 0; i < num_physical_devices; i++) {
if (is_device_compatible(devices[i])) {
r->physical_device = devices[i];
break;
}
}
}
if (r->physical_device == VK_NULL_HANDLE) {
@@ -472,6 +486,9 @@ static bool select_physical_device(PGRAPHState *pg, Error **errp)
}
vkGetPhysicalDeviceProperties(r->physical_device, &r->device_props);
xemu_settings_set_string(&g_config.display.vulkan.preferred_physical_device,
r->device_props.deviceName);
fprintf(stderr,
"Selected physical device: %s\n"
"- Vendor: %x, Device: %x\n"