Differential D10842 Diff 28644 head/graphics/mesa-dri/files/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c
Changeset View
Changeset View
Standalone View
Standalone View
head/graphics/mesa-dri/files/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c
Show All 19 Lines | |||||
v2: Clarify the linking topic in the commit message. | v2: Clarify the linking topic in the commit message. | ||||
Cc: Tom Stellard <thomas.stellard@amd.com> | Cc: Tom Stellard <thomas.stellard@amd.com> | ||||
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> | Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> | ||||
Reviewed-by: Francisco Jerez <currojerez@riseup.net> | Reviewed-by: Francisco Jerez <currojerez@riseup.net> | ||||
--- src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c.orig 2017-04-01 15:33:37 UTC | --- src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c.orig 2017-05-10 14:13:57 UTC | ||||
+++ src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c | +++ src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c | ||||
@@ -225,6 +225,14 @@ pipe_loader_drm_probe_fd(struct pipe_loa | @@ -209,6 +209,14 @@ pipe_loader_drm_probe_fd(struct pipe_loa | ||||
} | } | ||||
static int | static int | ||||
+open_drm_minor(int minor) | +open_drm_minor(int minor) | ||||
+{ | +{ | ||||
+ char path[PATH_MAX]; | + char path[PATH_MAX]; | ||||
+ snprintf(path, sizeof(path), DRM_DEV_NAME, DRM_DIR_NAME, minor); | + snprintf(path, sizeof(path), DRM_DEV_NAME, DRM_DIR_NAME, minor); | ||||
+ return open(path, O_RDWR, 0); | + return open(path, O_RDWR, 0); | ||||
+} | +} | ||||
+ | + | ||||
+static int | +static int | ||||
open_drm_render_node_minor(int minor) | open_drm_render_node_minor(int minor) | ||||
{ | { | ||||
char path[PATH_MAX]; | char path[PATH_MAX]; | ||||
@@ -236,8 +244,15 @@ open_drm_render_node_minor(int minor) | @@ -220,8 +228,15 @@ 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, j, fd; | - int i, j, fd; | ||||
+ int i, k, fd, num_render_node_devs; | + int i, k, fd, num_render_node_devs; | ||||
+ int j = 0; | + int j = 0; | ||||
+ | + | ||||
+ struct { | + struct { | ||||
+ unsigned vendor_id; | + unsigned vendor_id; | ||||
+ unsigned chip_id; | + unsigned chip_id; | ||||
+ } render_node_devs[DRM_RENDER_NODE_MAX_NODES]; | + } render_node_devs[DRM_RENDER_NODE_MAX_NODES]; | ||||
+ /* Look for render nodes first */ | + /* 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++) { | ||||
struct pipe_loader_device *dev; | struct pipe_loader_device *dev; | ||||
@@ -251,6 +266,9 @@ pipe_loader_drm_probe(struct pipe_loader | @@ -235,6 +250,9 @@ pipe_loader_drm_probe(struct pipe_loader | ||||
continue; | continue; | ||||
} | } | ||||
+ render_node_devs[j].vendor_id = dev->u.pci.vendor_id; | + render_node_devs[j].vendor_id = dev->u.pci.vendor_id; | ||||
+ render_node_devs[j].chip_id = dev->u.pci.chip_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 { | ||||
@@ -260,6 +278,46 @@ pipe_loader_drm_probe(struct pipe_loader | @@ -244,6 +262,46 @@ pipe_loader_drm_probe(struct pipe_loader | ||||
j++; | j++; | ||||
} | } | ||||
+ num_render_node_devs = j; | + num_render_node_devs = j; | ||||
+ | + | ||||
+ /* Next look for drm devices. */ | + /* Next look for drm devices. */ | ||||
+ for (i = 0; i < DRM_MAX_MINOR; i++) { | + for (i = 0; i < DRM_MAX_MINOR; i++) { | ||||
+ struct pipe_loader_device *dev; | + struct pipe_loader_device *dev; | ||||
Show All 38 Lines |