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 | |
parent | d29d8baad4d845ec9d3d1d1bc8d1c1e1f6f6f086 (diff) |
Use drmGetRenderDeviceNameFromFd to obtain the dri3 node.
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/nouveau_dri2.c | 16 |
2 files changed, 8 insertions, 10 deletions
diff --git a/configure.ac b/configure.ac index ccf320a..03563c1 100644 --- a/configure.ac +++ b/configure.ac @@ -80,7 +80,7 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) XORG_DRIVER_CHECK_EXT(DRI2, [dri2proto >= 2.6]) # Checks for pkg-config packages -PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.17]) +PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.60]) PKG_CHECK_MODULES(LIBDRM_NOUVEAU, [libdrm_nouveau >= 2.4.25]) AC_SUBST(LIBDRM_NOUVEAU_CFLAGS) AC_SUBST(LIBDRM_NOUVEAU_LIBS) 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; |