diff options
author | Maarten Lankhorst <dev@mblankhorst.nl> | 2015-03-20 23:17:13 +0100 |
---|---|---|
committer | Maarten Lankhorst <dev@mblankhorst.nl> | 2015-03-20 23:17:44 +0100 |
commit | 91e51a7571e6e8cb9338fc168f817f56438b1901 (patch) | |
tree | b4704aedd8242eb8cbb0c1a4c88c8cb734d23d6c /src | |
parent | d29d8baad4d845ec9d3d1d1bc8d1c1e1f6f6f086 (diff) |
Use drmGetRenderDeviceNameFromFd to obtain the dri3 node.
Diffstat (limited to 'src')
-rw-r--r-- | src/nouveau_dri2.c | 16 |
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; |