summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaarten Lankhorst <dev@mblankhorst.nl>2015-03-20 23:17:13 +0100
committerMaarten Lankhorst <dev@mblankhorst.nl>2015-03-20 23:17:44 +0100
commit91e51a7571e6e8cb9338fc168f817f56438b1901 (patch)
treeb4704aedd8242eb8cbb0c1a4c88c8cb734d23d6c /src
parentd29d8baad4d845ec9d3d1d1bc8d1c1e1f6f6f086 (diff)
Use drmGetRenderDeviceNameFromFd to obtain the dri3 node.
Diffstat (limited to 'src')
-rw-r--r--src/nouveau_dri2.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
index e3445b2..f22e319 100644
--- a/src/nouveau_dri2.c
+++ b/src/nouveau_dri2.c
@@ -1121,20 +1121,18 @@ nouveau_dri3_screen_init(ScreenPtr screen)
ScrnInfoPtr pScrn = xf86ScreenToScrn(screen);
NVPtr pNv = NVPTR(pScrn);
struct stat master, render;
- char buf[32];
+ char *buf;
if (is_render_node(pNv->dev->fd, &master))
return TRUE;
- sprintf(buf, "/dev/dri/renderD%d", (int)((master.st_rdev & 0x3f) | 0x80));
-
- if (stat(buf, &render) == 0 &&
- master.st_mode == render.st_mode &&
- (render.st_rdev & ~0x80) == master.st_rdev)
- pNv->render_node = strdup(buf);
-
- if (pNv->render_node)
+ buf = drmGetRenderDeviceNameFromFd(pNv->dev->fd);
+ if (buf && stat(buf, &render) == 0 &&
+ master.st_mode == render.st_mode) {
+ pNv->render_node = buf;
return dri3_screen_init(screen, &nouveau_dri3_screen_info);
+ } else
+ free(buf);
#endif
return TRUE;