From ff44547ea443977edabf46dc4dcce17f8cf038d4 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Wed, 15 Dec 2021 17:53:04 -0800 Subject: [PATCH] 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 Reviewed-by: Emma Anholt Part-of: --- 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,