summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2014-05-17 15:31:32 +0100
committerEmil Velikov <[email protected]>2014-06-19 12:37:14 +0100
commit36ff20027c43cd7115f1b6f073e4094582f643b6 (patch)
tree9cab40c233cfe47dc83ca4fd158b81e074dbadd7 /src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
parent7f00611d780df85cc20474b6695754e36a6c9228 (diff)
pipe-loader: add pipe_loader_ops::configuration()
Required for the dri state-tracker. Will be used to retrieve driver specific configuration parameters: - share_fd (dmabuf) capability - throttle Signed-off-by: Emil Velikov <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c')
-rw-r--r--src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
index 2e5b74bacdc..1bbaf190c5b 100644
--- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
+++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
@@ -261,6 +261,29 @@ pipe_loader_drm_release(struct pipe_loader_device **dev)
*dev = NULL;
}
+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);
+}
+
static struct pipe_screen *
pipe_loader_drm_create_screen(struct pipe_loader_device *dev,
const char *library_paths)
@@ -285,5 +308,6 @@ pipe_loader_drm_create_screen(struct pipe_loader_device *dev,
static struct pipe_loader_ops pipe_loader_drm_ops = {
.create_screen = pipe_loader_drm_create_screen,
+ .configuration = pipe_loader_drm_configuration,
.release = pipe_loader_drm_release
};