intel: Fix checking for compatible render node

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2015-02-10 12:22:59 +00:00
parent 88db217705
commit d50eb8d57a
1 changed files with 11 additions and 1 deletions

View File

@ -464,6 +464,7 @@ static char *find_render_node(int fd)
#if defined(USE_RENDERNODE)
struct stat master, render;
char buf[128];
int i;
/* Are we a render-node ourselves? */
if (is_render_node(fd, &master))
@ -472,8 +473,17 @@ static char *find_render_node(int fd)
sprintf(buf, "/dev/dri/renderD%d", (int)((master.st_rdev | 0x80) & 0xbf));
if (stat(buf, &render) == 0 &&
master.st_mode == render.st_mode &&
render.st_rdev == ((master.st_rdev | 0x80) & 0xbf))
render.st_rdev == (master.st_rdev | 0x80))
return strdup(buf);
/* Misaligned card <-> renderD, do a full search */
for (i = 0; i < 16; i++) {
sprintf(buf, "/dev/dri/renderD%d", i + 128);
if (stat(buf, &render) == 0 &&
master.st_mode == render.st_mode &&
render.st_rdev == (master.st_rdev | 0x80))
return strdup(buf);
}
#endif
return NULL;