drm render nodes have the same major as drm primary devices but have a
minor offset.
render nodes have a name that reflects the minor node not offset by the
base. I expected it to be the other way around when these non-linux
codepaths were added (before we had render nodes).
Index: xf86drm.c
===================================================================
RCS file: /cvs/xenocara/lib/libdrm/xf86drm.c,v
retrieving revision 1.34
diff -u -p -r1.34 xf86drm.c
--- xf86drm.c 26 Apr 2019 07:45:37 -0000 1.34
+++ xf86drm.c 12 May 2019 02:45:41 -0000
@@ -2931,7 +2931,7 @@ static char *drmGetMinorNameForFD(int fd
char buf[PATH_MAX + 1];
const char *dev_name;
unsigned int maj, min;
- int n, base;
+ int n;
if (fstat(fd, &sbuf))
return NULL;
@@ -2956,11 +2956,7 @@ static char *drmGetMinorNameForFD(int fd
return NULL;
};
- base = drmGetMinorBase(type);
- if (base < 0)
- return NULL;
-
- n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min - base);
+ n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min);
if (n == -1 || n >= sizeof(buf))
return NULL;
@@ -3854,7 +3850,7 @@ drm_public int drmGetDevice2(int fd, uin
char node[PATH_MAX + 1];
const char *dev_name;
int node_type, subsystem_type;
- int maj, min, n, ret, base;
+ int maj, min, n, ret;
if (fd == -1 || device == NULL)
return -EINVAL;
@@ -3886,11 +3882,7 @@ drm_public int drmGetDevice2(int fd, uin
return -EINVAL;
};
- base = drmGetMinorBase(node_type);
- if (base < 0)
- return -EINVAL;
-
- n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min - base);
+ n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min);
if (n == -1 || n >= PATH_MAX)
return -errno;
if (stat(node, &sbuf))
@@ -4110,7 +4102,7 @@ drm_public char *drmGetDeviceNameFromFd2
char node[PATH_MAX + 1];
const char *dev_name;
int node_type;
- int maj, min, n, base;
+ int maj, min, n;
if (fstat(fd, &sbuf))
return NULL;
@@ -4139,11 +4131,7 @@ drm_public char *drmGetDeviceNameFromFd2
return NULL;
};
- base = drmGetMinorBase(node_type);
- if (base < 0)
- return NULL;
-
- n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min - base);
+ n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min);
if (n == -1 || n >= PATH_MAX)
return NULL;