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