Mesa (master): intel/devinfo: Add function to check for DRM_I915_GEM_GET_TILING.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jun 22 21:04:12 UTC 2020


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

Author: Rafael Antognolli <rafael.antognolli at intel.com>
Date:   Wed Jun  3 17:19:50 2020 +0000

intel/devinfo: Add function to check for DRM_I915_GEM_GET_TILING.

Future (discrete) platforms won't have support for get/set tiling. This
function allows our drivers to query for that, by simply trying to get
the tiling from a dummy buffer.

Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4956>

---

 src/intel/dev/gen_device_info.c | 28 ++++++++++++++++++++++++++++
 src/intel/dev/gen_device_info.h |  1 +
 2 files changed, 29 insertions(+)

diff --git a/src/intel/dev/gen_device_info.c b/src/intel/dev/gen_device_info.c
index 8fd87b5d53d..917f493a672 100644
--- a/src/intel/dev/gen_device_info.c
+++ b/src/intel/dev/gen_device_info.c
@@ -1408,6 +1408,33 @@ gen_get_aperture_size(int fd, uint64_t *size)
    return ret;
 }
 
+static bool
+gen_has_get_tiling(int fd)
+{
+   int ret;
+
+   struct drm_i915_gem_create gem_create = {
+      .size = 4096,
+   };
+
+   if (gen_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &gem_create)) {
+      unreachable("Failed to create GEM BO");
+      return false;
+   }
+
+   struct drm_i915_gem_get_tiling get_tiling = {
+      .handle = gem_create.handle,
+   };
+   ret = gen_ioctl(fd, DRM_IOCTL_I915_GEM_SET_TILING, &get_tiling);
+
+   struct drm_gem_close close = {
+      .handle = gem_create.handle,
+   };
+   gen_ioctl(fd, DRM_IOCTL_GEM_CLOSE, &close);
+
+   return ret == 0;
+}
+
 bool
 gen_get_device_info_from_fd(int fd, struct gen_device_info *devinfo)
 {
@@ -1476,6 +1503,7 @@ gen_get_device_info_from_fd(int fd, struct gen_device_info *devinfo)
    }
 
    gen_get_aperture_size(fd, &devinfo->aperture_bytes);
+   devinfo->has_tiling_uapi = gen_has_get_tiling(fd);
 
    return true;
 }
diff --git a/src/intel/dev/gen_device_info.h b/src/intel/dev/gen_device_info.h
index 37e9c4231fa..d3514a195e7 100644
--- a/src/intel/dev/gen_device_info.h
+++ b/src/intel/dev/gen_device_info.h
@@ -80,6 +80,7 @@ struct gen_device_info
    bool has_resource_streamer;
    bool disable_ccs_repack;
    bool has_aux_map;
+   bool has_tiling_uapi;
 
    /**
     * \name Intel hardware quirks



More information about the mesa-commit mailing list