diff options
Diffstat (limited to 'devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp')
-rw-r--r-- | devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp deleted file mode 100644 index f58198ba716e..000000000000 --- a/devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp +++ /dev/null @@ -1,90 +0,0 @@ ---- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2021-01-07 00:39:27 UTC -+++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp -@@ -12,6 +12,11 @@ - #include <pci/pci.h> - #include <unistd.h> - -+#if defined(__FreeBSD__) -+#include <fcntl.h> -+#include <sys/pciio.h> -+#endif -+ - #include "common/angleutils.h" - #include "common/debug.h" - -@@ -82,6 +87,75 @@ struct LibPCI : private angle::NonCopyable - }; - - } // anonymous namespace -+ -+#if defined(__FreeBSD__) -+// Adds an entry per PCI GPU found and fills the device and vendor ID. -+bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices) -+{ -+ int fd; -+ struct pci_conf_io conf; -+ struct pci_conf *matches; -+ uint32_t offset = 0; -+ -+ fd = open("/dev/pci", O_RDONLY); -+ if (fd < 0) -+ return false; -+ -+ matches = new struct pci_conf[32]; -+ conf.generation = 0; -+ do { -+ conf.pat_buf_len = 0; -+ conf.num_patterns = 0; -+ conf.patterns = NULL; -+ conf.match_buf_len = 32 * sizeof(struct pci_conf); -+ conf.num_matches = 32; -+ conf.matches = matches; -+ conf.offset = offset; -+ conf.status = PCI_GETCONF_ERROR; -+ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) { -+ if (errno == ENODEV) -+ break; -+ } -+ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */ -+ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) { -+ break; -+ } -+ -+ for (unsigned int i = 0; i < conf.num_matches; i++) { -+ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass; -+ -+ // Skip non-GPU devices -+ switch (device_class) -+ { -+ case PCI_CLASS_DISPLAY_VGA: -+ case PCI_CLASS_DISPLAY_XGA: -+ case PCI_CLASS_DISPLAY_3D: -+ break; -+ default: -+ continue; -+ } -+ -+ // Skip unknown devices -+ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) { -+ continue; -+ } -+ -+ GPUDeviceInfo info; -+ info.vendorId = matches[i].pc_vendor; -+ info.deviceId = matches[i].pc_device; -+ -+ devices->push_back(info); -+ } -+ offset += conf.num_matches; -+ } while (conf.status == PCI_GETCONF_MORE_DEVS); -+ -+ delete[] matches; -+ -+ close(fd); -+ -+ return true; -+} -+#endif - - // Adds an entry per PCI GPU found and fills the device and vendor ID. - bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices) |