lib: make sure all rings are idle in gpu_quiescent_gpu()
authorImre Deak <imre.deak@intel.com>
Tue, 28 May 2013 14:22:57 +0000 (17:22 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 28 May 2013 16:32:29 +0000 (18:32 +0200)
Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
lib/drmtest.c

index 16f5be1..2d37fb6 100644 (file)
@@ -109,6 +109,7 @@ int gem_available_fences(int fd)
 }
 
 
+#define LOCAL_I915_EXEC_VEBOX  (4 << 0)
 /* Ensure the gpu is idle by launching a nop execbuf and stalling for it. */
 void gem_quiescent_gpu(int fd)
 {
@@ -143,6 +144,21 @@ void gem_quiescent_gpu(int fd)
 
        do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
 
+       if (gem_has_blt(fd)) {
+               execbuf.flags = I915_EXEC_BLT;
+               do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+       }
+
+       if (gem_has_bsd(fd)) {
+               execbuf.flags = I915_EXEC_BSD;
+               do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+       }
+
+       if (gem_has_vebox(fd)) {
+               execbuf.flags = LOCAL_I915_EXEC_VEBOX;
+               do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf);
+       }
+
        gem_sync(fd, handle);
 }