From 8481d208cee0e10250d5f34487defec414470bb5 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Mon, 27 Jan 2014 10:34:16 -0500 Subject: [PATCH] pipe-loader: Add auth_x parameter to pipe_loader_drm_probe_fd() The caller can use this boolean parameter to tell the pipe-loader to authenticate with the X server when probing a file descriptor. --- src/gallium/auxiliary/pipe-loader/pipe_loader.h | 6 +++++- src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c | 8 +++++--- src/gallium/targets/gbm/gbm.c | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader.h b/src/gallium/auxiliary/pipe-loader/pipe_loader.h index e0525dfbe02..006401150da 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader.h +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader.h @@ -128,9 +128,13 @@ pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev); * This function is platform-specific. * * \sa pipe_loader_probe + * + * \param auth_x If true, the pipe-loader will attempt to + * authenticate with the X server. */ boolean -pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd); +pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd, + boolean auth_x); #endif diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c index 597a9b5a3d8..7abdec33428 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c @@ -112,7 +112,8 @@ disconnect: } boolean -pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd) +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; @@ -127,7 +128,8 @@ pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd) ddev->base.ops = &pipe_loader_drm_ops; ddev->fd = fd; - pipe_loader_drm_x_auth(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) @@ -159,7 +161,7 @@ pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev) if (fd < 0) continue; - if (j >= ndev || !pipe_loader_drm_probe_fd(&devs[j], fd)) + if (j >= ndev || !pipe_loader_drm_probe_fd(&devs[j], fd, true)) close(fd); j++; diff --git a/src/gallium/targets/gbm/gbm.c b/src/gallium/targets/gbm/gbm.c index 8f460573b56..deaa401ad11 100644 --- a/src/gallium/targets/gbm/gbm.c +++ b/src/gallium/targets/gbm/gbm.c @@ -52,7 +52,7 @@ gallium_screen_create(struct gbm_gallium_drm_device *gdrm) #ifdef HAVE_PIPE_LOADER_DRM int ret; - ret = pipe_loader_drm_probe_fd(&dev, gdrm->base.base.fd); + ret = pipe_loader_drm_probe_fd(&dev, gdrm->base.base.fd, true); if (!ret) return -1; #endif /* HAVE_PIPE_LOADER_DRM */ -- 2.30.2