diff --git a/src/gallium/drivers/iris/i915/iris_bufmgr.c b/src/gallium/drivers/iris/i915/iris_bufmgr.c index e269c578d07..ba9e948048c 100644 --- a/src/gallium/drivers/iris/i915/iris_bufmgr.c +++ b/src/gallium/drivers/iris/i915/iris_bufmgr.c @@ -27,12 +27,3 @@ #include "drm-uapi/i915_drm.h" -int iris_i915_bo_set_caching(struct iris_bo *bo, bool cached) -{ - struct drm_i915_gem_caching arg = { - .handle = bo->gem_handle, - .caching = cached ? I915_CACHING_CACHED : I915_CACHING_NONE, - }; - return intel_ioctl(iris_bufmgr_get_fd(bo->bufmgr), - DRM_IOCTL_I915_GEM_SET_CACHING, &arg); -} diff --git a/src/gallium/drivers/iris/i915/iris_bufmgr.h b/src/gallium/drivers/iris/i915/iris_bufmgr.h index 0278a264abd..1dcb27008f0 100644 --- a/src/gallium/drivers/iris/i915/iris_bufmgr.h +++ b/src/gallium/drivers/iris/i915/iris_bufmgr.h @@ -26,4 +26,3 @@ struct iris_bo; -int iris_i915_bo_set_caching(struct iris_bo *bo, bool cached); diff --git a/src/gallium/drivers/iris/i915/iris_kmd_backend.c b/src/gallium/drivers/iris/i915/iris_kmd_backend.c index b67b2eaf201..b20e68caffd 100644 --- a/src/gallium/drivers/iris/i915/iris_kmd_backend.c +++ b/src/gallium/drivers/iris/i915/iris_kmd_backend.c @@ -107,11 +107,23 @@ i915_bo_madvise(struct iris_bo *bo, enum iris_madvice state) return madv.retained; } +static int +i915_bo_set_caching(struct iris_bo *bo, bool cached) +{ + struct drm_i915_gem_caching arg = { + .handle = bo->gem_handle, + .caching = cached ? I915_CACHING_CACHED : I915_CACHING_NONE, + }; + return intel_ioctl(iris_bufmgr_get_fd(bo->bufmgr), + DRM_IOCTL_I915_GEM_SET_CACHING, &arg); +} + const struct iris_kmd_backend *i915_get_backend(void) { static const struct iris_kmd_backend i915_backend = { .gem_create = i915_gem_create, .bo_madvise = i915_bo_madvise, + .bo_set_caching = i915_bo_set_caching, }; return &i915_backend; } diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index e48bcd535da..aa17bf63755 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -1034,17 +1034,6 @@ iris_heap_to_string[IRIS_HEAP_MAX] = { [IRIS_HEAP_DEVICE_LOCAL_PREFERRED] = "local-preferred", }; -static int iris_bo_set_caching(struct iris_bo *bo, bool cached) -{ - switch (iris_bufmgr_get_device_info(bo->bufmgr)->kmd_type) { - case INTEL_KMD_TYPE_I915: - return iris_i915_bo_set_caching(bo, cached); - default: - unreachable("missing"); - return 0; - } -} - struct iris_bo * iris_bo_alloc(struct iris_bufmgr *bufmgr, const char *name, @@ -1138,7 +1127,7 @@ iris_bo_alloc(struct iris_bufmgr *bufmgr, */ if ((flags & BO_ALLOC_COHERENT) && !bufmgr->devinfo.has_llc && bufmgr->devinfo.has_caching_uapi) { - if (iris_bo_set_caching(bo, true) != 0) + if (bufmgr->kmd_backend->bo_set_caching(bo, true) != 0) goto err_free; bo->real.reusable = false; diff --git a/src/gallium/drivers/iris/iris_kmd_backend.h b/src/gallium/drivers/iris/iris_kmd_backend.h index 7013dd394af..8280247f992 100644 --- a/src/gallium/drivers/iris/iris_kmd_backend.h +++ b/src/gallium/drivers/iris/iris_kmd_backend.h @@ -39,6 +39,7 @@ struct iris_kmd_backend { uint16_t regions_count, uint64_t size, enum iris_heap heap_flags, unsigned alloc_flags); bool (*bo_madvise)(struct iris_bo *bo, enum iris_madvice state); + int (*bo_set_caching)(struct iris_bo *bo, bool cached); }; const struct iris_kmd_backend *