---
 lib/drmtest.c              |   61 ++++++++++++++++++++++++++++++++++++++------
 lib/drmtest.h              |    6 ++++-
 tests/gem_ring_sync_loop.c |   38 +--------------------------
 3 files changed, 59 insertions(+), 46 deletions(-)

diff --git a/lib/drmtest.c b/lib/drmtest.c
index 2ddaff0..ea308b7 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -270,19 +270,64 @@ void gem_set_tiling(int fd, uint32_t handle, int tiling, 
int stride)
        assert(st.tiling_mode == tiling);
 }
 
+bool gem_has_enable_ring(int fd,int param)
+{
+       drm_i915_getparam_t gp;
+       int ret, tmp;
+       memset(&gp, 0, sizeof(gp));
+       
+       gp.value = &tmp;
+       gp.param = param;
+       
+       ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
+       
+       if ((ret == 0) && (*gp.value > 0))
+               return true;
+       else
+               return false;
+}
+
+bool gem_has_bsd(int fd)
+{
+
+       return gem_has_enable_ring(fd,I915_PARAM_HAS_BSD);
+}
+
+bool gem_has_blt(int fd)
+{
+
+       return gem_has_enable_ring(fd,I915_PARAM_HAS_BLT);
+}
+
 #define LOCAL_I915_PARAM_HAS_VEBOX 22
-int gem_has_vebox(int fd)
+bool gem_has_vebox(int fd)
 {
-       struct drm_i915_getparam gp;
-       int val;
 
-       gp.param = LOCAL_I915_PARAM_HAS_VEBOX;
-       gp.value = &val;
+       return gem_has_enable_ring(fd,LOCAL_I915_PARAM_HAS_VEBOX);
+}
+
+int gem_get_num_rings(int fd)
+{
+       int num_rings = 1;      /* render ring is always available */
+
+       if (gem_has_bsd(fd))
+               num_rings++;
+       else
+               goto skip;
+
+       if (gem_has_blt(fd)
+               num_rings++;
+       else
+               goto skip;
+
+       if (gem_has_vebox(fd))
+               num_rings++;
+       else
+               goto skip;
 
-       if (ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp)))
-               return 0;
 
-       return val != 0;
+skip:
+       return num_rings;
 }
 
 struct local_drm_i915_gem_cacheing {
diff --git a/lib/drmtest.h b/lib/drmtest.h
index f15c074..18aeb85 100644
--- a/lib/drmtest.h
+++ b/lib/drmtest.h
@@ -47,8 +47,12 @@ int drm_open_any_master(void);
 void gem_quiescent_gpu(int fd);
 
 /* ioctl wrappers and similar stuff for bare metal testing */
-int gem_has_vebox(int fd);
 void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride);
+bool gem_has_enable_ring(int fd,int param);
+bool gem_has_bsd(int fd);
+bool gem_has_bls(int fd);
+bool gem_has_vebox(int fd);
+int gem_get_num_rings(int fd);
 int gem_has_cacheing(int fd);
 void gem_set_cacheing(int fd, uint32_t handle, int cacheing);
 int gem_get_cacheing(int fd, uint32_t handle);
diff --git a/tests/gem_ring_sync_loop.c b/tests/gem_ring_sync_loop.c
index 501e97c..af40590 100644
--- a/tests/gem_ring_sync_loop.c
+++ b/tests/gem_ring_sync_loop.c
@@ -55,47 +55,11 @@ static drm_intel_bo *target_buffer;
 #define MI_COND_BATCH_BUFFER_END       (0x36<<23 | 1)
 #define MI_DO_COMPARE                  (1<<21)
 
-static int
-get_num_rings(int fd)
-{
-       int num_rings = 1;      /* render ring is always available */
-       drm_i915_getparam_t gp;
-       int ret, tmp;
-
-       memset(&gp, 0, sizeof(gp));
-       gp.value = &tmp;
-
-       gp.param = I915_PARAM_HAS_BSD;
-       ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
-
-       if ((ret == 0) && (*gp.value > 0))
-               num_rings++;
-       else
-               goto skip;
-
-       gp.param = I915_PARAM_HAS_BLT;
-       ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
-
-       if ((ret == 0) && (*gp.value > 0))
-               num_rings++;
-       else
-               goto skip;
-
-       if (gem_has_vebox(fd))
-               num_rings++;
-       else
-               goto skip;
-
-
-skip:
-       return num_rings;
-}
-
 static void
 store_dword_loop(int fd)
 {
        int i;
-       int num_rings = get_num_rings(fd);
+       int num_rings = gem_get_num_rings(fd);
 
        srandom(0xdeadbeef);
 
-- 
1.7.9.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to