From: Jason Ekstrand Date: Tue, 24 May 2016 19:06:35 +0000 (-0700) Subject: anv: Try the first 8 render nodes instead of just renderD128 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b93b5935a71279a4b9dc58b01eab8a49e91b815b;p=mesa.git anv: Try the first 8 render nodes instead of just renderD128 This way, if you have other cards installed, the Vulkan driver will still work. No guarantees about WSI working correctly but offscreen should at least work. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95537 --- diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index 1ab6c745a26..da7a39471c1 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -73,8 +73,7 @@ anv_physical_device_init(struct anv_physical_device *device, device->chipset_id = anv_gem_get_param(fd, I915_PARAM_CHIPSET_ID); if (!device->chipset_id) { - result = vk_errorf(VK_ERROR_INITIALIZATION_FAILED, - "failed to get chipset id: %m"); + result = VK_ERROR_INITIALIZATION_FAILED; goto fail; } @@ -314,8 +313,15 @@ VkResult anv_EnumeratePhysicalDevices( VkResult result; if (instance->physicalDeviceCount < 0) { - result = anv_physical_device_init(&instance->physicalDevice, - instance, "/dev/dri/renderD128"); + char path[20]; + for (unsigned i = 0; i < 8; i++) { + snprintf(path, sizeof(path), "/dev/dri/renderD%d", 128 + i); + result = anv_physical_device_init(&instance->physicalDevice, + instance, path); + if (result == VK_SUCCESS) + break; + } + if (result == VK_ERROR_INCOMPATIBLE_DRIVER) { instance->physicalDeviceCount = 0; } else if (result == VK_SUCCESS) {