diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2013-11-18 10:29:49 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-11-22 14:54:18 +1000 |
commit | 1addf315792bbfcd7f02d0b26ffe68809248e7d9 (patch) | |
tree | 835f6f3377eba80705203468245b0165b9518a24 | |
parent | b213d4e79a4633003700d52e179baa61c3a64f71 (diff) | |
download | xorg-driver-xf86-video-nouveau-1addf315792bbfcd7f02d0b26ffe68809248e7d9.tar.gz |
dri: open drm render-node if possible
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | src/nv_driver.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/nv_driver.c b/src/nv_driver.c index 5131dcd..078be99 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -21,6 +21,7 @@ */ #include <stdio.h> +#include <sys/stat.h> #include "nv_include.h" @@ -743,6 +744,8 @@ static Bool NVPreInitDRM(ScrnInfoPtr pScrn) { NVPtr pNv = NVPTR(pScrn); + struct stat sb; + char name[128]; int ret; if (!xf86LoadSubModule(pScrn, "dri2")) @@ -760,7 +763,13 @@ NVPreInitDRM(ScrnInfoPtr pScrn) if (ret) return FALSE; - pNv->drm_device_name = drmGetDeviceNameFromFd(pNv->dev->fd); + fstat(pNv->dev->fd, &sb); + snprintf(name, sizeof(name), "/dev/dri/render%d", + minor(sb.st_rdev) + 128); + if (stat(name, &sb) != 0) + pNv->drm_device_name = drmGetDeviceNameFromFd(pNv->dev->fd); + else + pNv->drm_device_name = strdup(name); return TRUE; } |