mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 06:40:08 +01:00
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>
56 lines
2.1 KiB
C
56 lines
2.1 KiB
C
/*
|
|
* Copyright © 2019 Red Hat
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice (including the next
|
|
* paragraph) shall be included in all copies or substantial portions of the
|
|
* Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
* IN THE SOFTWARE.
|
|
*/
|
|
#ifndef DEVICE_SELECT_H
|
|
#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 {
|
|
struct device_info dev_info;
|
|
drmPciBusInfo bus_info;
|
|
bool has_bus_info;
|
|
bool cpu_device;
|
|
};
|
|
|
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
int device_select_find_xcb_pci_default(struct device_pci_info *devices, uint32_t device_count);
|
|
#else
|
|
static inline int device_select_find_xcb_pci_default(struct device_pci_info *devices, uint32_t device_count) { return -1; }
|
|
#endif
|
|
|
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
int device_select_find_wayland_pci_default(struct device_pci_info *devices, uint32_t device_count);
|
|
#else
|
|
static inline int device_select_find_wayland_pci_default(struct device_pci_info *devices, uint32_t device_count) { return -1; }
|
|
#endif
|
|
|
|
#endif
|