summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2013-11-18 10:29:49 +1000
committerBen Skeggs <bskeggs@redhat.com>2013-11-22 14:54:18 +1000
commit1addf315792bbfcd7f02d0b26ffe68809248e7d9 (patch)
tree835f6f3377eba80705203468245b0165b9518a24
parentb213d4e79a4633003700d52e179baa61c3a64f71 (diff)
downloadxorg-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.c11
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;
}