Since I accidentally broke the build for some, by putting the pretty
printer for submission inside ifdef HAVE_PROCPS, it's time to move the
whole thing into lib/i915 while fixing this mistake.
Let's also rename the pretty printer and add a doc to it as well as the
section.

Fixes: f6dfe556659f ("lib: Extract helpers for determining submission method")
Signed-off-by: Michał Winiarski <michal.winiar...@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hi...@intel.com>
Cc: Chris Wilson <ch...@chris-wilson.co.uk>
---
 .../intel-gpu-tools/intel-gpu-tools-docs.xml       |   1 +
 lib/Makefile.sources                               |   2 +
 lib/i915/gem_submission.c                          | 128 +++++++++++++++++++++
 lib/i915/gem_submission.h                          |  35 ++++++
 lib/igt_aux.c                                      |  18 ---
 lib/igt_aux.h                                      |   4 +-
 lib/igt_gt.c                                       |  63 ----------
 lib/igt_gt.h                                       |   7 --
 lib/meson.build                                    |   2 +
 tests/gem_eio.c                                    |   2 +-
 tests/gem_exec_await.c                             |   2 +-
 tests/gem_exec_fence.c                             |   2 +-
 tests/gem_exec_latency.c                           |   2 +-
 tests/gem_exec_nop.c                               |   2 +-
 tests/gem_exec_schedule.c                          |   2 +-
 tests/gem_exec_whisper.c                           |   2 +-
 tests/gem_read_read_speed.c                        |   2 +-
 tests/gem_sync.c                                   |   2 +-
 18 files changed, 179 insertions(+), 99 deletions(-)
 create mode 100644 lib/i915/gem_submission.c
 create mode 100644 lib/i915/gem_submission.h

diff --git a/docs/reference/intel-gpu-tools/intel-gpu-tools-docs.xml 
b/docs/reference/intel-gpu-tools/intel-gpu-tools-docs.xml
index c5be60d0..8d77cecd 100644
--- a/docs/reference/intel-gpu-tools/intel-gpu-tools-docs.xml
+++ b/docs/reference/intel-gpu-tools/intel-gpu-tools-docs.xml
@@ -50,6 +50,7 @@
     <title>igt/i915 API Reference</title>
     <xi:include href="xml/gem_context.xml"/>
     <xi:include href="xml/gem_scheduler.xml"/>
+    <xi:include href="xml/gem_submission.xml"/>
   </chapter>
   <xi:include href="xml/igt_test_programs.xml"/>
 
diff --git a/lib/Makefile.sources b/lib/Makefile.sources
index 09c9ef9f..6e968d9f 100644
--- a/lib/Makefile.sources
+++ b/lib/Makefile.sources
@@ -7,6 +7,8 @@ lib_source_list =               \
        i915/gem_context.h      \
        i915/gem_scheduler.c    \
        i915/gem_scheduler.h    \
+       i915/gem_submission.c   \
+       i915/gem_submission.h   \
        i915_3d.h               \
        i915_reg.h              \
        i915_pciids.h           \
diff --git a/lib/i915/gem_submission.c b/lib/i915/gem_submission.c
new file mode 100644
index 00000000..efc3151f
--- /dev/null
+++ b/lib/i915/gem_submission.c
@@ -0,0 +1,128 @@
+/*
+ * Copyright © 2017 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include <stdbool.h>
+
+#include "igt_core.h"
+#include "igt_sysfs.h"
+
+#include "i915/gem_submission.h"
+
+/**
+ * SECTION:gem_submission
+ * @short_description: Helpers for determining submission method
+ * @title: GEM Submission
+ *
+ * This helper library contains functions used for getting information on
+ * currently used hardware submission method. Different generations of hardware
+ * support different submission backends, currently we're distinguishing 3
+ * different methods: legacy ringbuffer submission, execlists, GuC submission.
+ * For legacy ringbuffer submission, there's also a variation where we're using
+ * semaphores for synchronization between engines.
+ */
+
+/**
+ * gem_submission_method:
+ * @fd: open i915 drm file descriptor
+ *
+ * Returns: Submission method bitmap.
+ */
+unsigned gem_submission_method(int fd)
+{
+       unsigned flags = 0;
+       bool active;
+       int dir;
+
+       dir = igt_sysfs_open_parameters(fd);
+       if (dir < 0)
+               return 0;
+
+       active = igt_sysfs_get_boolean(dir, "enable_guc_submission");
+       if (active) {
+               flags |= GEM_SUBMISSION_GUC | GEM_SUBMISSION_EXECLISTS;
+               goto out;
+       }
+
+       active = igt_sysfs_get_boolean(dir, "enable_execlists");
+       if (active) {
+               flags |= GEM_SUBMISSION_EXECLISTS;
+               goto out;
+       }
+
+       active = igt_sysfs_get_boolean(dir, "semaphores");
+       if (active) {
+               flags |= GEM_SUBMISSION_SEMAPHORES;
+       }
+
+out:
+       close(dir);
+       return flags;
+}
+
+/**
+ * gem_submission_print_method:
+ * @fd: open i915 drm file descriptor
+ *
+ * Helper for pretty-printing currently used submission method
+ */
+void gem_submission_print_method(int fd)
+{
+       const unsigned flags = gem_submission_method(fd);
+
+       if (flags & GEM_SUBMISSION_GUC) {
+               igt_info("Using GuC submission\n");
+               return;
+       }
+
+       if (flags & GEM_SUBMISSION_EXECLISTS) {
+               igt_info("Using Execlists submission\n");
+               return;
+       }
+
+       igt_info("Using Legacy submission%s\n",
+                flags & GEM_SUBMISSION_SEMAPHORES ? ", with semaphores" : "");
+}
+
+/**
+ * gem_has_semaphores:
+ * @fd: open i915 drm file descriptor
+ *
+ * Feature test macro to query whether the driver is using semaphores for
+ * synchronization between engines.
+ */
+bool gem_has_semaphores(int fd)
+{
+       return gem_submission_method(fd) & GEM_SUBMISSION_SEMAPHORES;
+}
+
+/**
+ * gem_has_execlists:
+ * @fd: open i915 drm file descriptor
+ *
+ * Feature test macro to query whether the driver is using execlists as a
+ * hardware submission method.
+ */
+bool gem_has_execlists(int fd)
+{
+       return gem_submission_method(fd) & GEM_SUBMISSION_EXECLISTS;
+}
diff --git a/lib/i915/gem_submission.h b/lib/i915/gem_submission.h
new file mode 100644
index 00000000..783ed7a0
--- /dev/null
+++ b/lib/i915/gem_submission.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright © 2017 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef GEM_SUBMISSION_H
+#define GEM_SUBMISSION_H
+
+#define GEM_SUBMISSION_SEMAPHORES      (1 << 0)
+#define GEM_SUBMISSION_EXECLISTS       (1 << 1)
+#define GEM_SUBMISSION_GUC             (1 << 2)
+unsigned gem_submission_method(int fd);
+void gem_submission_print_method(int fd);
+bool gem_has_semaphores(int fd);
+bool gem_has_execlists(int fd);
+
+#endif /* GEM_SUBMISSION_H */
diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index c1082143..ee53559c 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -1493,24 +1493,6 @@ igt_show_stat(proc_t *info, int *state, const char *fn)
        ++*state;
 }
 
-void gem_show_submission_method(int fd)
-{
-       const unsigned flags = gem_submission_method(fd);
-
-       if (flags & GEM_SUBMISSION_GUC) {
-               igt_info("Using GuC submission\n");
-               return;
-       }
-
-       if (flags & GEM_SUBMISSION_EXECLISTS) {
-               igt_info("Using Execlists submission\n");
-               return;
-       }
-
-       igt_info("Using Legacy submission%s\n",
-                flags & GEM_SUBMISSION_SEMAPHORES ? ", with semaphores" : "");
-}
-
 static void
 __igt_lsof_fds(proc_t *proc_info, int *state, char *proc_path, const char *dir)
 {
diff --git a/lib/igt_aux.h b/lib/igt_aux.h
index e4a48eba..0bd226be 100644
--- a/lib/igt_aux.h
+++ b/lib/igt_aux.h
@@ -33,6 +33,8 @@
 #include <stddef.h>
 #include <sys/time.h>
 
+#include <i915/gem_submission.h>
+
 extern drm_intel_bo **trash_bos;
 extern int num_trash_bos;
 
@@ -280,8 +282,6 @@ void igt_unlock_mem(void);
        ret_;                                                           \
 })
 
-void gem_show_submission_method(int fd);
-
 struct igt_mean;
 void igt_start_siglatency(int sig); /* 0 => SIGRTMIN (default) */
 double igt_stop_siglatency(struct igt_mean *result);
diff --git a/lib/igt_gt.c b/lib/igt_gt.c
index 601b03f6..f6cc20b0 100644
--- a/lib/igt_gt.c
+++ b/lib/igt_gt.c
@@ -607,66 +607,3 @@ bool gem_can_store_dword(int fd, unsigned int engine)
 
        return true;
 }
-
-/**
- * gem_submission_method:
- * @fd: open i915 drm file descriptor
- *
- * Returns: Submission method bitmap.
- */
-unsigned gem_submission_method(int fd)
-{
-       unsigned flags = 0;
-       bool active;
-       int dir;
-
-       dir = igt_sysfs_open_parameters(fd);
-       if (dir < 0)
-               return 0;
-
-       active = igt_sysfs_get_boolean(dir, "enable_guc_submission");
-       if (active) {
-               flags |= GEM_SUBMISSION_GUC | GEM_SUBMISSION_EXECLISTS;
-               goto out;
-       }
-
-       active = igt_sysfs_get_boolean(dir, "enable_execlists");
-       if (active) {
-               flags |= GEM_SUBMISSION_EXECLISTS;
-               goto out;
-       }
-
-       active = igt_sysfs_get_boolean(dir, "semaphores");
-       if (active) {
-               flags |= GEM_SUBMISSION_SEMAPHORES;
-       }
-
-out:
-       close(dir);
-       return flags;
-}
-
-
-/**
- * gem_has_semaphores:
- * @fd: open i915 drm file descriptor
- *
- * Feature test macro to query whether the driver is using semaphores for
- * synchronization between engines.
- */
-bool gem_has_semaphores(int fd)
-{
-       return gem_submission_method(fd) & GEM_SUBMISSION_SEMAPHORES;
-}
-
-/**
- * gem_has_execlists:
- * @fd: open i915 drm file descriptor
- *
- * Feature test macro to query whether the driver is using execlists as a
- * hardware submission method.
- */
-bool gem_has_execlists(int fd)
-{
-       return gem_submission_method(fd) & GEM_SUBMISSION_EXECLISTS;
-}
diff --git a/lib/igt_gt.h b/lib/igt_gt.h
index 6b8f78eb..2579cbd3 100644
--- a/lib/igt_gt.h
+++ b/lib/igt_gt.h
@@ -80,11 +80,4 @@ extern const struct intel_execution_engine {
 
 bool gem_can_store_dword(int fd, unsigned int engine);
 
-#define GEM_SUBMISSION_SEMAPHORES      (1 << 0)
-#define GEM_SUBMISSION_EXECLISTS       (1 << 1)
-#define GEM_SUBMISSION_GUC             (1 << 2)
-unsigned gem_submission_method(int fd);
-bool gem_has_semaphores(int fd);
-bool gem_has_execlists(int fd);
-
 #endif /* IGT_GT_H */
diff --git a/lib/meson.build b/lib/meson.build
index f0125a6d..b31c68e4 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -4,6 +4,7 @@ lib_headers = [
        'i830_reg.h',
        'i915/gem_context.h',
        'i915/gem_scheduler.h',
+       'i915/gem_submission.h',
        'i915_3d.h',
        'i915_reg.h',
        'i915_pciids.h',
@@ -52,6 +53,7 @@ lib_sources = [
        'drmtest.c',
        'i915/gem_context.c',
        'i915/gem_scheduler.c',
+       'i915/gem_submission.c',
        'igt_debugfs.c',
        'igt_aux.c',
        'igt_gt.c',
diff --git a/tests/gem_eio.c b/tests/gem_eio.c
index c30212f4..2d4c95f4 100644
--- a/tests/gem_eio.c
+++ b/tests/gem_eio.c
@@ -431,7 +431,7 @@ igt_main
                igt_force_gpu_reset(fd);
                igt_install_exit_handler(exit_handler);
 
-               gem_show_submission_method(fd);
+               gem_submission_print_method(fd);
                igt_require_gem(fd);
                igt_require_hang_ring(fd, I915_EXEC_DEFAULT);
        }
diff --git a/tests/gem_exec_await.c b/tests/gem_exec_await.c
index 326783a1..9c446792 100644
--- a/tests/gem_exec_await.c
+++ b/tests/gem_exec_await.c
@@ -343,7 +343,7 @@ igt_main
 
                device = drm_open_driver(DRIVER_INTEL);
                igt_require_gem(device);
-               gem_show_submission_method(device);
+               gem_submission_print_method(device);
 
                ring_size = measure_ring_size(device) - 10;
                if (!gem_has_execlists(device))
diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
index ae3760c9..2ea23b62 100644
--- a/tests/gem_exec_fence.c
+++ b/tests/gem_exec_fence.c
@@ -1434,7 +1434,7 @@ igt_main
                igt_require(gem_has_exec_fence(i915));
                gem_require_mmap_wc(i915);
 
-               gem_show_submission_method(i915);
+               gem_submission_print_method(i915);
        }
 
        for (e = intel_execution_engines; e->name; e++) {
diff --git a/tests/gem_exec_latency.c b/tests/gem_exec_latency.c
index a942c205..e9d93440 100644
--- a/tests/gem_exec_latency.c
+++ b/tests/gem_exec_latency.c
@@ -417,7 +417,7 @@ igt_main
                igt_require_gem(device);
                gem_require_mmap_wc(device);
 
-               gem_show_submission_method(device);
+               gem_submission_print_method(device);
 
                ring_size = measure_ring_size(device);
                igt_info("Ring size: %d batches\n", ring_size);
diff --git a/tests/gem_exec_nop.c b/tests/gem_exec_nop.c
index 37cddd8c..ce3a8ef7 100644
--- a/tests/gem_exec_nop.c
+++ b/tests/gem_exec_nop.c
@@ -652,7 +652,7 @@ igt_main
 
                device = drm_open_driver(DRIVER_INTEL);
                igt_require_gem(device);
-               gem_show_submission_method(device);
+               gem_submission_print_method(device);
                gem_scheduler_print_capability(device);
 
                handle = gem_create(device, 4096);
diff --git a/tests/gem_exec_schedule.c b/tests/gem_exec_schedule.c
index baf1112d..a2f4419a 100644
--- a/tests/gem_exec_schedule.c
+++ b/tests/gem_exec_schedule.c
@@ -957,7 +957,7 @@ igt_main
 
        igt_fixture {
                fd = drm_open_driver_master(DRIVER_INTEL);
-               gem_show_submission_method(fd);
+               gem_submission_print_method(fd);
                gem_scheduler_print_capability(fd);
                igt_require_gem(fd);
                gem_require_mmap_wc(fd);
diff --git a/tests/gem_exec_whisper.c b/tests/gem_exec_whisper.c
index dfa8a3b4..51921ba3 100644
--- a/tests/gem_exec_whisper.c
+++ b/tests/gem_exec_whisper.c
@@ -553,7 +553,7 @@ igt_main
                fd = drm_open_driver_master(DRIVER_INTEL);
                igt_require_gem(fd);
                igt_require(gem_can_store_dword(fd, 0));
-               gem_show_submission_method(fd);
+               gem_submission_print_method(fd);
 
                igt_fork_hang_detector(fd);
        }
diff --git a/tests/gem_read_read_speed.c b/tests/gem_read_read_speed.c
index bbd8e54e..3dcf440c 100644
--- a/tests/gem_read_read_speed.c
+++ b/tests/gem_read_read_speed.c
@@ -197,7 +197,7 @@ igt_main
 
                batch =  intel_batchbuffer_alloc(bufmgr, devid);
 
-               gem_show_submission_method(fd);
+               gem_submission_print_method(fd);
        }
 
        for (i = 0; sizes[i] != 0; i++) {
diff --git a/tests/gem_sync.c b/tests/gem_sync.c
index 6ead76b8..36180aee 100644
--- a/tests/gem_sync.c
+++ b/tests/gem_sync.c
@@ -793,7 +793,7 @@ igt_main
        igt_fixture {
                fd = drm_open_driver(DRIVER_INTEL);
                igt_require_gem(fd);
-               gem_show_submission_method(fd);
+               gem_submission_print_method(fd);
                gem_scheduler_print_capability(fd);
 
                igt_fork_hang_detector(fd);
-- 
2.13.6

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

Reply via email to