Ejemplo n.º 1
0
static struct pipe_screen *
pipe_loader_sw_create_screen(struct pipe_loader_device *dev,
                             const char *library_paths)
{
    struct pipe_loader_sw_device *sdev = pipe_loader_sw_device(dev);
    struct pipe_screen *(*init)(struct sw_winsys *);

    if (!sdev->lib)
        sdev->lib = pipe_loader_find_module(dev, library_paths);
    if (!sdev->lib)
        return NULL;

    init = (void *)util_dl_get_proc_address(sdev->lib, "swrast_create_screen");
    if (!init)
        return NULL;

    return init(sdev->ws);
}
Ejemplo n.º 2
0
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);
}