From f93b7d14d66d8ba70d44772d1a1b6696310b7d17 Mon Sep 17 00:00:00 2001 From: Witold Baryluk Date: Mon, 7 Dec 2020 20:45:42 +0000 Subject: [PATCH] vulkan/device_select: Store Vulkan vendorID and deviceID as uint32_t Vulkan uses 32-bit IDs, compared to PCI/USB 16-bit ones. Some driver vendorIDs do exceed 0xffff, including MESA (used by lavapipe). Without this, the value will be truncated, and device select layer will not match expected (or any) device. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3935 Reviewed-by: Dave Airlie Part-of: --- src/vulkan/device-select-layer/device_select.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/vulkan/device-select-layer/device_select.h b/src/vulkan/device-select-layer/device_select.h index 23350707a33..248878fbc71 100644 --- a/src/vulkan/device-select-layer/device_select.h +++ b/src/vulkan/device-select-layer/device_select.h @@ -24,10 +24,18 @@ #define DEVICE_SELECT_H #include +#include #include "xf86drm.h" +/* We don't use `drmPciDeviceInfo` because it uses 16-bit ids, + * instead of Vulkan's 32-bit ones. */ +struct device_info { + uint32_t vendor_id; + uint32_t device_id; +}; + struct device_pci_info { - drmPciDeviceInfo dev_info; + struct device_info dev_info; drmPciBusInfo bus_info; bool has_bus_info; bool cpu_device; -- GitLab