bool pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd, boolean auth_x) { struct pipe_loader_drm_device *ddev = CALLOC_STRUCT(pipe_loader_drm_device); int vendor_id, chip_id; if (!ddev) return false; if (loader_get_pci_id_for_fd(fd, &vendor_id, &chip_id)) { ddev->base.type = PIPE_LOADER_DEVICE_PCI; ddev->base.u.pci.vendor_id = vendor_id; ddev->base.u.pci.chip_id = chip_id; } else { ddev->base.type = PIPE_LOADER_DEVICE_PLATFORM; } ddev->base.ops = &pipe_loader_drm_ops; ddev->fd = fd; if (auth_x) pipe_loader_drm_x_auth(fd); ddev->base.driver_name = loader_get_driver_for_fd(fd, _LOADER_GALLIUM); if (!ddev->base.driver_name) goto fail; *dev = &ddev->base; return true; fail: FREE(ddev); return false; }
boolean pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd) { struct pipe_loader_drm_device *ddev = CALLOC_STRUCT(pipe_loader_drm_device); ddev->base.type = PIPE_LOADER_DEVICE_PCI; ddev->base.ops = &pipe_loader_drm_ops; ddev->fd = fd; pipe_loader_drm_x_auth(fd); if (!find_drm_pci_id(ddev)) goto fail; if (!find_drm_driver_name(ddev)) goto fail; *dev = &ddev->base; return TRUE; fail: FREE(ddev); return FALSE; }