On Thu, Oct 24, 2013 at 03:40:54PM +0100, Damien Lespiau wrote: > I was fedup with having to run my tests as root and not being able to > use my usual setup for tests that only exercise the GT part of the GPU. > > Render nodes to the rescue! I think usually this is a bad idea except for pretty isolated proof of concept kind of things. Mostly intel-gpu-tools is testing our kernel driver, and therefore running without a reboot anyway is sort of unusual. What do you think about providing some sort of option (maybe via env var) instead of what you did in patch 5? > > Signed-off-by: Damien Lespiau <damien.lespiau@xxxxxxxxx> > --- > lib/drmtest.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > lib/drmtest.h | 1 + > 2 files changed, 59 insertions(+) > > diff --git a/lib/drmtest.c b/lib/drmtest.c > index 3b80920..8164ef9 100644 > --- a/lib/drmtest.c > +++ b/lib/drmtest.c > @@ -222,6 +222,35 @@ static int __drm_open_any(void) > return fd; > } > > +static int __drm_open_any_render(void) > +{ > + char *name; > + int i, fd; > + > + for (i = 128; i < (128 + 16); i++) { > + int ret; > + > + ret = asprintf(&name, "/dev/dri/renderD%u", i); > + igt_assert(ret != -1); > + > + fd = open(name, O_RDWR); > + free(name); > + > + if (fd == -1) > + continue; > + > + if (!is_intel(fd)) { > + close(fd); > + fd = -1; > + continue; > + } > + > + return fd; > + } > + > + return fd; > +} > + > static void quiescent_gpu_at_exit(int sig) > { > int fd; > @@ -233,6 +262,17 @@ static void quiescent_gpu_at_exit(int sig) > } > } > > +static void quiescent_gpu_at_exit_render(int sig) > +{ > + int fd; > + > + fd = __drm_open_any_render(); > + if (fd >= 0) { > + gem_quiescent_gpu(fd); > + close(fd); > + } > +} > + > int drm_open_any(void) > { > static int open_count; > @@ -249,6 +289,24 @@ int drm_open_any(void) > return fd; > } > > +int drm_open_any_render(void) > +{ > + static int open_count; > + int fd = __drm_open_any_render(); > + > + /* no render nodes, fallback to drm_open_any() */ > + if (fd == -1) > + return drm_open_any(); > + > + if (__sync_fetch_and_add(&open_count, 1)) > + return fd; > + > + gem_quiescent_gpu(fd); > + igt_install_exit_handler(quiescent_gpu_at_exit_render); > + > + return fd; > +} > + > int __gem_set_tiling(int fd, uint32_t handle, int tiling, int stride) > { > struct drm_i915_gem_set_tiling st; > diff --git a/lib/drmtest.h b/lib/drmtest.h > index 609e7d8..f5e2708 100644 > --- a/lib/drmtest.h > +++ b/lib/drmtest.h > @@ -50,6 +50,7 @@ drm_intel_bo * gem_handle_to_libdrm_bo(drm_intel_bufmgr *bufmgr, int fd, > > int drm_get_card(void); > int drm_open_any(void); > +int drm_open_any_render(void); > > void gem_quiescent_gpu(int fd); > > -- > 1.8.3.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ben Widawsky, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx