xf86drm: use drm device name to identify drm node type

Currently drm node's minor range is used to identify node's type.
Since kernel drm uses node type name and minor to generate drm
device name, It will be more general to use drm device name to
identify drm node type.

Signed-off-by: James Zhu <James.Zhu@amd.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
This commit is contained in:
James Zhu 2023-08-07 10:14:18 -04:00 committed by Marek Olšák
parent 7130cb163e
commit 3bc3cca230

View file

@ -1051,18 +1051,20 @@ static int drmGetMinorType(int major, int minor)
minor = id;
#endif
int type = minor >> 6;
char path[DRM_NODE_NAME_MAX];
const char *dev_name;
int i;
if (minor < 0)
return -1;
switch (type) {
case DRM_NODE_PRIMARY:
case DRM_NODE_RENDER:
return type;
default:
return -1;
for (i = DRM_NODE_PRIMARY; i < DRM_NODE_MAX; i++) {
dev_name = drmGetDeviceName(i);
if (!dev_name)
continue;
snprintf(path, sizeof(path), dev_name, DRM_DIR_NAME, minor);
if (!access(path, F_OK))
return i;
}
return -1;
}
static const char *drmGetMinorName(int type)