Mesa (main): intel/stub: Implement shell versions of DRM_I915_GEM_GET_TILING and DRM_I915_SEM_GET_TILING

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Dec 16 23:20:02 UTC 2021


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

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Wed Dec 15 17:53:04 2021 -0800

intel/stub: Implement shell versions of DRM_I915_GEM_GET_TILING and DRM_I915_SEM_GET_TILING

This is necessary to use intel_stub_gpu with Crocus.

v2: Remove unused i915_bo::swizzle_mode. Noticed by Emma.

Fixes: 953a4ca6fec ("intel: Add has_bit6_swizzle to devinfo")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Emma Anholt <emma at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14218>

---

 src/intel/tools/intel_noop_drm_shim.c | 39 +++++++++++++++++++++++++++++++++--
 1 file changed, 37 insertions(+), 2 deletions(-)

diff --git a/src/intel/tools/intel_noop_drm_shim.c b/src/intel/tools/intel_noop_drm_shim.c
index 655be753292..42b0a7a8212 100644
--- a/src/intel/tools/intel_noop_drm_shim.c
+++ b/src/intel/tools/intel_noop_drm_shim.c
@@ -46,6 +46,8 @@ struct i915_device {
 
 struct i915_bo {
    struct shim_bo base;
+   uint32_t tiling_mode;
+   uint32_t stride;
 };
 
 static struct i915_device i915 = {};
@@ -58,6 +60,39 @@ i915_ioctl_noop(int fd, unsigned long request, void *arg)
    return 0;
 }
 
+static int
+i915_ioctl_gem_set_tiling(int fd, unsigned long request, void *arg)
+{
+   struct shim_fd *shim_fd = drm_shim_fd_lookup(fd);
+   struct drm_i915_gem_set_tiling *tiling_arg = arg;
+   struct i915_bo *bo = (struct i915_bo *) drm_shim_bo_lookup(shim_fd, tiling_arg->handle);
+
+   if (!bo)
+      return -1;
+
+   bo->tiling_mode = tiling_arg->tiling_mode;
+   bo->stride = tiling_arg->stride;
+
+   return 0;
+}
+
+static int
+i915_ioctl_gem_get_tiling(int fd, unsigned long request, void *arg)
+{
+   struct shim_fd *shim_fd = drm_shim_fd_lookup(fd);
+   struct drm_i915_gem_get_tiling *tiling_arg = arg;
+   struct i915_bo *bo = (struct i915_bo *) drm_shim_bo_lookup(shim_fd, tiling_arg->handle);
+
+   if (!bo)
+      return -1;
+
+   tiling_arg->tiling_mode = bo->tiling_mode;
+   tiling_arg->swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
+   tiling_arg->phys_swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
+
+   return 0;
+}
+
 static int
 i915_ioctl_gem_create(int fd, unsigned long request, void *arg)
 {
@@ -424,7 +459,7 @@ static ioctl_fn_t driver_ioctls[] = {
 
    [DRM_I915_GEM_CREATE] = i915_ioctl_gem_create,
    [DRM_I915_GEM_MMAP] = i915_ioctl_gem_mmap,
-   [DRM_I915_GEM_SET_TILING] = i915_ioctl_noop,
+   [DRM_I915_GEM_SET_TILING] = i915_ioctl_gem_set_tiling,
    [DRM_I915_GEM_CONTEXT_CREATE] = i915_ioctl_gem_context_create,
    [DRM_I915_GEM_CONTEXT_DESTROY] = i915_ioctl_noop,
    [DRM_I915_GEM_CONTEXT_GETPARAM] = i915_ioctl_gem_context_getparam,
@@ -442,7 +477,7 @@ static ioctl_fn_t driver_ioctls[] = {
    [DRM_I915_GEM_SET_DOMAIN] = i915_ioctl_noop,
    [DRM_I915_GEM_GET_CACHING] = i915_ioctl_noop,
    [DRM_I915_GEM_SET_CACHING] = i915_ioctl_noop,
-   [DRM_I915_GEM_GET_TILING] = i915_ioctl_noop,
+   [DRM_I915_GEM_GET_TILING] = i915_ioctl_gem_get_tiling,
    [DRM_I915_GEM_MADVISE] = i915_ioctl_noop,
    [DRM_I915_GEM_WAIT] = i915_ioctl_noop,
    [DRM_I915_GEM_BUSY] = i915_ioctl_noop,



More information about the mesa-commit mailing list