summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergii Romantsov <sergii.romantsov@globallogic.com>2019-05-22 20:42:29 +0300
committerMarek Olšák <marek.olsak@amd.com>2019-06-03 14:56:03 -0400
commit6f7912e6434869920586a0439496635ac594fa20 (patch)
tree88fb165f3394f31c1134179e04527f695e2ef1e8
parent7c67c7c18555d2b3505365feaa6ff588d2630f30 (diff)
util/dma_buf: allow custom rendernode
Piglit tests based on dma-buf may not finish properly due to wrongly selected rendernode. Patch adds possibility to override device by variable WAFFLE_GBM_DEVICE (in format /dev/dri/renderD128). -v2: added WAFFLE_GBM_DEVICE (Marek Olšák) CC: Chad Versace <chad.versace@intel.com> Fixes: 8147ec81a71d (util/dma_buf: Use rendernode if available) Fixes: https://gitlab.freedesktop.org/mesa/piglit/issues/15 Signed-off-by: Sergii Romantsov <sergii.romantsov@globallogic.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
-rw-r--r--tests/util/piglit-framework-gl/piglit_drm_dma_buf.c39
1 files changed, 29 insertions, 10 deletions
diff --git a/tests/util/piglit-framework-gl/piglit_drm_dma_buf.c b/tests/util/piglit-framework-gl/piglit_drm_dma_buf.c
index 28c38de39..4a83e6dc4 100644
--- a/tests/util/piglit-framework-gl/piglit_drm_dma_buf.c
+++ b/tests/util/piglit-framework-gl/piglit_drm_dma_buf.c
@@ -410,6 +410,17 @@ piglit_gbm_buf_destroy(struct piglit_dma_buf *buf)
}
#endif /* PIGLIT_HAS_GBM_BO_MAP */
+static int
+piglit_drm_get_user_fd(void)
+{
+ int fd_res = -1;
+ char *nodename = getenv("WAFFLE_GBM_DEVICE");
+ if (nodename && strlen(nodename))
+ fd_res = open(nodename, O_RDWR);
+
+ return fd_res;
+}
+
static const struct piglit_drm_driver *
piglit_drm_get_driver(void)
{
@@ -419,25 +430,33 @@ piglit_drm_get_driver(void)
if (drv.fd != -1)
return &drv;
- drv.fd = open("/dev/dri/renderD128", O_RDWR);
-
+ drv.fd = piglit_drm_get_user_fd();
if (drv.fd == -1) {
- drv.fd = open("/dev/dri/card0", O_RDWR);
+ drv.fd = open("/dev/dri/renderD128", O_RDWR);
+
if (drv.fd == -1) {
- fprintf(stderr, "error: failed to open /dev/dri/renderD128 and "
- "/dev/dri/card0\n");
- goto fail;
+ drv.fd = open("/dev/dri/card0", O_RDWR);
+ if (drv.fd == -1) {
+ fprintf(stderr, "error: failed to open /dev/dri/renderD128 and "
+ "/dev/dri/card0\n");
+ goto fail;
- }
+ }
- if (!piglit_drm_x11_authenticate(drv.fd))
- goto fail;
+ if (!piglit_drm_x11_authenticate(drv.fd))
+ goto fail;
+ }
}
-
version = drmGetVersion(drv.fd);
+
if (!version || !version->name) {
fprintf(stderr, "error: drmGetVersion() failed\n");
goto fail;
+ } else {
+#if 0
+ fprintf(stderr, "version: %s %d:%d\n",
+ version->name, version->version_major, version->version_minor);
+#endif
}
drv.name = strdup(version->name);