static void pipe_loader_drm_release(struct pipe_loader_device **dev) { struct pipe_loader_drm_device *ddev = pipe_loader_drm_device(*dev); FREE(ddev); *dev = NULL; }
static void pipe_loader_drm_release(struct pipe_loader_device **dev) { struct pipe_loader_drm_device *ddev = pipe_loader_drm_device(*dev); if (ddev->lib) util_dl_close(ddev->lib); close(ddev->fd); FREE(ddev); *dev = NULL; }
static struct pipe_screen * pipe_loader_drm_create_screen(struct pipe_loader_device *dev, const char *library_paths) { struct pipe_loader_drm_device *ddev = pipe_loader_drm_device(dev); const struct drm_driver_descriptor *dd; if (!ddev->lib) ddev->lib = pipe_loader_find_module(dev, library_paths); if (!ddev->lib) return NULL; dd = (const struct drm_driver_descriptor *) util_dl_get_proc_address(ddev->lib, "driver_descriptor"); /* sanity check on the name */ if (!dd || strcmp(dd->name, ddev->base.driver_name) != 0) return NULL; return dd->create_screen(ddev->fd); }
static const struct drm_conf_ret * pipe_loader_drm_configuration(struct pipe_loader_device *dev, enum drm_conf conf) { struct pipe_loader_drm_device *ddev = pipe_loader_drm_device(dev); const struct drm_driver_descriptor *dd; if (!ddev->lib) return NULL; dd = (const struct drm_driver_descriptor *) util_dl_get_proc_address(ddev->lib, "driver_descriptor"); /* sanity check on the name */ if (!dd || strcmp(dd->name, ddev->base.driver_name) != 0) return NULL; if (!dd->configuration) return NULL; return dd->configuration(conf); }