vulkan/device_select: Store Vulkan vendorID and deviceID as uint32_t
authorWitold Baryluk <witold.baryluk@gmail.com>
Mon, 7 Dec 2020 20:45:42 +0000 (20:45 +0000)
committerMarge Bot <eric+marge@anholt.net>
Tue, 8 Dec 2020 16:19:25 +0000 (16:19 +0000)
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 <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7977>

src/vulkan/device-select-layer/device_select.h

index 2335070..248878f 100644 (file)
 #define DEVICE_SELECT_H
 
 #include <stdbool.h>
+#include <stdint.h>
 #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;