pipe-loader: drop support for non-render node devices
Render nodes have been around for quite some time. Removing support via the master/primary node allows us to clean up the conditional compilation and simplify the build greatly. For example currently we the pipe-loader, which explicitly links against xcb and friends (for X auth) if found at compile-time. That would cause problems as one will be forced to use X/xcb, even if it's a headless system that is used for opencl. v2: Clarify the linking topic in the commit message. Cc: Tom Stellard <thomas.stellard@amd.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
@@ -168,14 +168,6 @@ pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
open_drm_minor(int minor)
|
|
||||||
{
|
|
||||||
char path[PATH_MAX];
|
|
||||||
snprintf(path, sizeof(path), DRM_DEV_NAME, DRM_DIR_NAME, minor);
|
|
||||||
return open(path, O_RDWR, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
open_drm_render_node_minor(int minor)
|
open_drm_render_node_minor(int minor)
|
||||||
{
|
{
|
||||||
@@ -188,15 +180,8 @@ open_drm_render_node_minor(int minor)
|
|||||||
int
|
int
|
||||||
pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
|
pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
|
||||||
{
|
{
|
||||||
int i, k, fd, num_render_node_devs;
|
int i, j, fd;
|
||||||
int j = 0;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
unsigned vendor_id;
|
|
||||||
unsigned chip_id;
|
|
||||||
} render_node_devs[DRM_RENDER_NODE_MAX_NODES];
|
|
||||||
|
|
||||||
/* Look for render nodes first */
|
|
||||||
for (i = DRM_RENDER_NODE_MIN_MINOR, j = 0;
|
for (i = DRM_RENDER_NODE_MIN_MINOR, j = 0;
|
||||||
i <= DRM_RENDER_NODE_MAX_MINOR; i++) {
|
i <= DRM_RENDER_NODE_MAX_MINOR; i++) {
|
||||||
fd = open_drm_render_node_minor(i);
|
fd = open_drm_render_node_minor(i);
|
||||||
@@ -209,9 +194,6 @@ pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
render_node_devs[j].vendor_id = dev->u.pci.vendor_id;
|
|
||||||
render_node_devs[j].chip_id = dev->u.pci.chip_id;
|
|
||||||
|
|
||||||
if (j < ndev) {
|
if (j < ndev) {
|
||||||
devs[j] = dev;
|
devs[j] = dev;
|
||||||
} else {
|
} else {
|
||||||
@@ -221,46 +203,6 @@ pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
|
|||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
|
|
||||||
num_render_node_devs = j;
|
|
||||||
|
|
||||||
/* Next look for drm devices. */
|
|
||||||
for (i = 0; i < DRM_MAX_MINOR; i++) {
|
|
||||||
struct pipe_loader_device *dev;
|
|
||||||
boolean duplicate = FALSE;
|
|
||||||
fd = open_drm_minor(i);
|
|
||||||
if (fd < 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!pipe_loader_drm_probe_fd(&dev, fd, true)) {
|
|
||||||
close(fd);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check to make sure we aren't already accessing this device via
|
|
||||||
* render nodes.
|
|
||||||
*/
|
|
||||||
for (k = 0; k < num_render_node_devs; k++) {
|
|
||||||
if (dev->u.pci.vendor_id == render_node_devs[k].vendor_id &&
|
|
||||||
dev->u.pci.chip_id == render_node_devs[k].chip_id) {
|
|
||||||
close(fd);
|
|
||||||
dev->ops->release(&dev);
|
|
||||||
duplicate = TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (duplicate)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (j < ndev) {
|
|
||||||
devs[j] = dev;
|
|
||||||
} else {
|
|
||||||
dev->ops->release(&dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return j;
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user