From ec86cffd8eec12d657afec63d5da1ad84b43d510 Mon Sep 17 00:00:00 2001 From: Patrick J Volkerding Date: Thu, 14 Jan 2021 20:36:17 +0000 Subject: Thu Jan 14 20:36:17 UTC 2021 a/gptfdisk-1.0.6-x86_64-1.txz: Upgraded. a/usb_modeswitch-2.6.1-x86_64-1.txz: Upgraded. ap/nano-5.5-x86_64-1.txz: Upgraded. l/Mako-1.1.4-x86_64-1.txz: Upgraded. l/gst-plugins-base-1.18.3-x86_64-1.txz: Upgraded. l/gst-plugins-good-1.18.3-x86_64-1.txz: Upgraded. l/gst-plugins-libav-1.18.3-x86_64-1.txz: Upgraded. l/gstreamer-1.18.3-x86_64-1.txz: Upgraded. l/system-config-printer-1.5.15-x86_64-1.txz: Upgraded. l/wavpack-5.4.0-x86_64-1.txz: Upgraded. WavPack 5.4.0 fixes an issue where a specially crafted WAV file could cause the wavpack command-line program to crash with an out-of-bounds write. For more information, see: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-35738 (* Security fix *) l/xapian-core-1.4.18-x86_64-1.txz: Upgraded. tcl/tk-8.6.11.1-x86_64-1.txz: Upgraded. x/mesa-20.3.3-x86_64-1.txz: Upgraded. Added options: -Dvulkan-device-select-layer=true -Dopengl=true -Dglx=dri Add a symlink for libGLX_system.so.0. Use a more complete patch for converting from drmPciDeviceInfo to uint32_t in device_select.h and device_select_layer.c. xfce/thunar-4.16.2-x86_64-1.txz: Upgraded. --- .../patches/MESA_VK_DEVICE_SELECT.uint32_t.patch | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 source/x/mesa/patches/MESA_VK_DEVICE_SELECT.uint32_t.patch (limited to 'source/x/mesa/patches/MESA_VK_DEVICE_SELECT.uint32_t.patch') diff --git a/source/x/mesa/patches/MESA_VK_DEVICE_SELECT.uint32_t.patch b/source/x/mesa/patches/MESA_VK_DEVICE_SELECT.uint32_t.patch new file mode 100644 index 000000000..8f9bc2312 --- /dev/null +++ b/source/x/mesa/patches/MESA_VK_DEVICE_SELECT.uint32_t.patch @@ -0,0 +1,78 @@ +diff --git a/src/vulkan/device-select-layer/device_select.h b/src/vulkan/device-select-layer/device_select.h +index 2335070..8debb77 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; +diff --git a/src/vulkan/device-select-layer/device_select_layer.c b/src/vulkan/device-select-layer/device_select_layer.c +index 5b708bc..bd18511 100644 +--- a/src/vulkan/device-select-layer/device_select_layer.c ++++ b/src/vulkan/device-select-layer/device_select_layer.c +@@ -222,7 +222,7 @@ static void print_gpu(const struct instance_info *info, unsigned index, VkPhysic + type = "CPU"; + break; + } +- fprintf(stderr, " GPU %d: %x:%x \"%s\" %s", index, properties.properties.vendorID, ++ fprintf(stderr, " GPU %d: 0x%04x:0x%04x \"%s\" %s", index, properties.properties.vendorID, + properties.properties.deviceID, properties.properties.deviceName, type); + if (info->has_pci_bus) + fprintf(stderr, " %04x:%02x:%02x.%x", ext_pci_properties.pciDomain, +@@ -267,18 +267,18 @@ static int device_select_find_explicit_default(struct device_pci_info *pci_infos + uint32_t device_count, + const char *selection) + { +- int default_idx = -1; +- unsigned vendor_id, device_id; ++ uint32_t vendor_id, device_id; + int matched = sscanf(selection, "%x:%x", &vendor_id, &device_id); +- if (matched != 2) +- return default_idx; ++ if (matched != 2) { ++ return -1; ++ } + + for (unsigned i = 0; i < device_count; ++i) { + if (pci_infos[i].dev_info.vendor_id == vendor_id && + pci_infos[i].dev_info.device_id == device_id) +- default_idx = i; ++ return i; + } +- return default_idx; ++ return -1; + } + + static int device_select_find_dri_prime_tag_default(struct device_pci_info *pci_infos, +@@ -378,8 +378,14 @@ static uint32_t get_default_device(const struct instance_info *info, + cpu_count += fill_drm_device_info(info, &pci_infos[i], pPhysicalDevices[i]) ? 1 : 0; + } + +- if (selection) ++ if (selection) { + default_idx = device_select_find_explicit_default(pci_infos, physical_device_count, selection); ++ if (default_idx == -1) { ++ fprintf(stderr, "device-select: cannot find device vendorID:deviceID match " ++ "using MESA_VK_DEVICE_SELECT=%s. Use 'list' for available devices.\n", selection); ++ exit(0); ++ } ++ } + if (default_idx == -1 && info->has_pci_bus && dri_prime && !dri_prime_is_one) + default_idx = device_select_find_dri_prime_tag_default(pci_infos, physical_device_count, dri_prime); + if (default_idx == -1 && info->has_wayland) -- cgit v1.2.3