On 10 January 2017 at 10:51, Qiang Yu <[email protected]> wrote: > Get PCI information from info->fd with drmGetDevice instead of > assuming the info->fd is the first entity of scrn which is not > true for multi entities scrn. > IIRC you want to bump the libdrm version in configure to one that provides the API.
> Signed-off-by: Qiang Yu <[email protected]> > --- > hw/xfree86/dri2/dri2.c | 35 ++++++++++++++++++----------------- > 1 file changed, 18 insertions(+), 17 deletions(-) > > diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c > index 2165603..adc59a6 100644 > --- a/hw/xfree86/dri2/dri2.c > +++ b/hw/xfree86/dri2/dri2.c > @@ -1440,21 +1440,16 @@ get_prime_id(void) > static char * > dri2_probe_driver_name(ScreenPtr pScreen, DRI2InfoPtr info) > { > - ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); > - EntityInfoPtr pEnt = xf86GetEntityInfo(pScrn->entityList[0]); > - struct pci_device *pdev = NULL; > int i, j; > - > - if (pEnt) > - pdev = xf86GetPciInfoForEntity(pEnt->index); > + char *driver = NULL; > + drmDevicePtr dev; > > /* For non-PCI devices, just assume that the 3D driver is named > * the same as the kernel driver. This is currently true for vc4 > * and msm (freedreno). > */ > - if (!pdev) { > + if (drmGetDevice(info->fd, &dev)) { This does not align with the comment above. Bail out in the [very] unlikely case that the function fails. Then honour _drmDevice::bustype for the respective PCI vs other case(s). > drmVersionPtr version = drmGetVersion(info->fd); > - char *kernel_driver; > > if (!version) { > xf86DrvMsg(pScreen->myNum, X_ERROR, > @@ -1463,29 +1458,35 @@ dri2_probe_driver_name(ScreenPtr pScreen, DRI2InfoPtr > info) > return NULL; > } > > - kernel_driver = strndup(version->name, version->name_len); > + driver = strndup(version->name, version->name_len); > drmFreeVersion(version); > - return kernel_driver; > + return driver; > } > > for (i = 0; driver_map[i].driver; i++) { > - if (pdev->vendor_id != driver_map[i].vendor_id) > + if (dev->deviceinfo.pci->vendor_id != driver_map[i].vendor_id) ... or in other words. This will cause a _lot_ of grief as we merge Thierry's work to support !PCI devices. Thanks Emil _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
