tests/gem_exec_parse: Test for OACONTROL tracking
authorBrad Volkin <bradley.d.volkin@intel.com>
Thu, 27 Mar 2014 18:44:45 +0000 (11:44 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 9 Apr 2014 12:25:17 +0000 (14:25 +0200)
Signed-off-by: Brad Volkin <bradley.d.volkin@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
tests/gem_exec_parse.c

index eb48963..35d579d 100644 (file)
@@ -205,6 +205,8 @@ int fd;
 #define   PIPE_CONTROL_QW_WRITE        (1<<14)
 #define   PIPE_CONTROL_LRI_POST_OP (1<<23)
 
+#define OACONTROL 0x2360
+
 igt_main
 {
        igt_fixture {
@@ -341,6 +343,52 @@ igt_main
                                            0));
        }
 
+       igt_subtest("oacontrol-tracking") {
+               uint32_t lri_ok[] = {
+                       MI_LOAD_REGISTER_IMM,
+                       OACONTROL,
+                       0x31337000,
+                       MI_LOAD_REGISTER_IMM,
+                       OACONTROL,
+                       0x0,
+                       MI_BATCH_BUFFER_END,
+                       0
+               };
+               uint32_t lri_bad[] = {
+                       MI_LOAD_REGISTER_IMM,
+                       OACONTROL,
+                       0x31337000,
+                       MI_BATCH_BUFFER_END,
+               };
+               uint32_t lri_extra_bad[] = {
+                       MI_LOAD_REGISTER_IMM,
+                       OACONTROL,
+                       0x31337000,
+                       MI_LOAD_REGISTER_IMM,
+                       OACONTROL,
+                       0x0,
+                       MI_LOAD_REGISTER_IMM,
+                       OACONTROL,
+                       0x31337000,
+                       MI_BATCH_BUFFER_END,
+               };
+               igt_assert(
+                       exec_batch(fd, handle,
+                                     lri_ok, sizeof(lri_ok),
+                                     I915_EXEC_RENDER,
+                                     0));
+               igt_assert(
+                       exec_batch(fd, handle,
+                                     lri_bad, sizeof(lri_bad),
+                                     I915_EXEC_RENDER,
+                                     -EINVAL));
+               igt_assert(
+                       exec_batch(fd, handle,
+                                     lri_extra_bad, sizeof(lri_extra_bad),
+                                     I915_EXEC_RENDER,
+                                     -EINVAL));
+       }
+
        igt_fixture {
                gem_close(fd, handle);