summaryrefslogtreecommitdiffstats
path: root/source/x/mesa/patches/mesa.f93b7d14d66d8ba70d44772d1a1b6696310b7d17.patch
blob: bf3483a4119f54cc80e071bc75ec25e2d1550b48 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
From f93b7d14d66d8ba70d44772d1a1b6696310b7d17 Mon Sep 17 00:00:00 2001
From: Witold Baryluk <witold.baryluk@gmail.com>
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 <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7977>
---
 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 <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;
-- 
GitLab