summaryrefslogtreecommitdiffstats
path: root/source/x/mesa/patches/mesa.f93b7d14d66d8ba70d44772d1a1b6696310b7d17.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/x/mesa/patches/mesa.f93b7d14d66d8ba70d44772d1a1b6696310b7d17.patch')
-rw-r--r--source/x/mesa/patches/mesa.f93b7d14d66d8ba70d44772d1a1b6696310b7d17.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/source/x/mesa/patches/mesa.f93b7d14d66d8ba70d44772d1a1b6696310b7d17.patch b/source/x/mesa/patches/mesa.f93b7d14d66d8ba70d44772d1a1b6696310b7d17.patch
new file mode 100644
index 000000000..bf3483a41
--- /dev/null
+++ b/source/x/mesa/patches/mesa.f93b7d14d66d8ba70d44772d1a1b6696310b7d17.patch
@@ -0,0 +1,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
+
+