Mesa (master): anv: Support i915 query (DRM_IOCTL_I915_QUERY) from Linux v4.17

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jan 28 18:34:22 UTC 2021


Module: Mesa
Branch: master
Commit: c0d07c838a9fcd67e4ae8cf948ced2daa3edf8c6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0d07c838a9fcd67e4ae8cf948ced2daa3edf8c6

Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Sat Mar 23 00:17:57 2019 -0700

anv: Support i915 query (DRM_IOCTL_I915_QUERY) from Linux v4.17

Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8667>

---

 src/intel/vulkan/anv_gem.c       | 21 +++++++++++++++++++++
 src/intel/vulkan/anv_gem_stubs.c |  7 +++++++
 src/intel/vulkan/anv_private.h   |  2 ++
 3 files changed, 30 insertions(+)

diff --git a/src/intel/vulkan/anv_gem.c b/src/intel/vulkan/anv_gem.c
index 7cd37d60e27..587cf4b2ef4 100644
--- a/src/intel/vulkan/anv_gem.c
+++ b/src/intel/vulkan/anv_gem.c
@@ -660,3 +660,24 @@ anv_gem_syncobj_timeline_query(struct anv_device *device,
 
    return gen_ioctl(device->fd, DRM_IOCTL_SYNCOBJ_QUERY, &args);
 }
+
+int
+anv_i915_query(int fd, uint64_t query_id, void *buffer,
+               int32_t *buffer_len)
+{
+   struct drm_i915_query_item item = {
+      .query_id = query_id,
+      .length = *buffer_len,
+      .data_ptr = (uintptr_t)buffer,
+   };
+
+   struct drm_i915_query args = {
+      .num_items = 1,
+      .flags = 0,
+      .items_ptr = (uintptr_t)&item,
+   };
+
+   int ret = gen_ioctl(fd, DRM_IOCTL_I915_QUERY, &args);
+   *buffer_len = item.length;
+   return ret;
+}
diff --git a/src/intel/vulkan/anv_gem_stubs.c b/src/intel/vulkan/anv_gem_stubs.c
index 699502ad618..c34f9945e9c 100644
--- a/src/intel/vulkan/anv_gem_stubs.c
+++ b/src/intel/vulkan/anv_gem_stubs.c
@@ -245,6 +245,13 @@ anv_gem_supports_syncobj_wait(int fd)
    return false;
 }
 
+int
+anv_i915_query(int fd, uint64_t query_id, void *buffer,
+               int32_t *buffer_len)
+{
+   unreachable("Unused");
+}
+
 int
 anv_gem_syncobj_wait(struct anv_device *device,
                      const uint32_t *handles, uint32_t num_handles,
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index c36ba42aa98..b478ddedaf4 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -1660,6 +1660,8 @@ int anv_gem_syncobj_timeline_signal(struct anv_device *device,
 int anv_gem_syncobj_timeline_query(struct anv_device *device,
                                    const uint32_t *handles, uint64_t *points,
                                    uint32_t num_items);
+int anv_i915_query(int fd, uint64_t query_id, void *buffer,
+                   int32_t *buffer_len);
 
 uint64_t anv_vma_alloc(struct anv_device *device,
                        uint64_t size, uint64_t align,



More information about the mesa-commit mailing list