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: 953a4ca6fe
("intel: Add has_bit6_swizzle to devinfo")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14218>
This commit is contained in:
parent
2dc7c24b80
commit
ff44547ea4
|
@ -46,6 +46,8 @@ struct i915_device {
|
||||||
|
|
||||||
struct i915_bo {
|
struct i915_bo {
|
||||||
struct shim_bo base;
|
struct shim_bo base;
|
||||||
|
uint32_t tiling_mode;
|
||||||
|
uint32_t stride;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct i915_device i915 = {};
|
static struct i915_device i915 = {};
|
||||||
|
@ -58,6 +60,39 @@ i915_ioctl_noop(int fd, unsigned long request, void *arg)
|
||||||
return 0;
|
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
|
static int
|
||||||
i915_ioctl_gem_create(int fd, unsigned long request, void *arg)
|
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_CREATE] = i915_ioctl_gem_create,
|
||||||
[DRM_I915_GEM_MMAP] = i915_ioctl_gem_mmap,
|
[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_CREATE] = i915_ioctl_gem_context_create,
|
||||||
[DRM_I915_GEM_CONTEXT_DESTROY] = i915_ioctl_noop,
|
[DRM_I915_GEM_CONTEXT_DESTROY] = i915_ioctl_noop,
|
||||||
[DRM_I915_GEM_CONTEXT_GETPARAM] = i915_ioctl_gem_context_getparam,
|
[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_SET_DOMAIN] = i915_ioctl_noop,
|
||||||
[DRM_I915_GEM_GET_CACHING] = i915_ioctl_noop,
|
[DRM_I915_GEM_GET_CACHING] = i915_ioctl_noop,
|
||||||
[DRM_I915_GEM_SET_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_MADVISE] = i915_ioctl_noop,
|
||||||
[DRM_I915_GEM_WAIT] = i915_ioctl_noop,
|
[DRM_I915_GEM_WAIT] = i915_ioctl_noop,
|
||||||
[DRM_I915_GEM_BUSY] = i915_ioctl_noop,
|
[DRM_I915_GEM_BUSY] = i915_ioctl_noop,
|
||||||
|
|
Loading…
Reference in New Issue