From: José Roberto de Souza Date: Mon, 6 Mar 2023 17:04:53 +0000 (-0800) Subject: iris: Move bo_madvise to kmd backend X-Git-Tag: upstream/23.3.3~12021 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bdfcc980016e87f175c98645fc84b411a96058da;p=platform%2Fupstream%2Fmesa.git iris: Move bo_madvise to kmd backend bo_madvise() is on hot path, so moving it to kmd backend. Signed-off-by: José Roberto de Souza Reviewed-by: Lionel Landwerlin Part-of: --- diff --git a/src/gallium/drivers/iris/i915/iris_bufmgr.c b/src/gallium/drivers/iris/i915/iris_bufmgr.c index 4a1b4e5..e269c57 100644 --- a/src/gallium/drivers/iris/i915/iris_bufmgr.c +++ b/src/gallium/drivers/iris/i915/iris_bufmgr.c @@ -27,22 +27,6 @@ #include "drm-uapi/i915_drm.h" -bool -iris_i915_bo_madvise(struct iris_bo *bo, enum iris_madvice state) -{ - uint32_t i915_state = state == IRIS_MADVICE_WILL_NEED ? - I915_MADV_WILLNEED : I915_MADV_DONTNEED; - struct drm_i915_gem_madvise madv = { - .handle = bo->gem_handle, - .madv = i915_state, - .retained = 1, - }; - - intel_ioctl(iris_bufmgr_get_fd(bo->bufmgr), DRM_IOCTL_I915_GEM_MADVISE, &madv); - - return madv.retained; -} - int iris_i915_bo_set_caching(struct iris_bo *bo, bool cached) { struct drm_i915_gem_caching arg = { diff --git a/src/gallium/drivers/iris/i915/iris_bufmgr.h b/src/gallium/drivers/iris/i915/iris_bufmgr.h index 1efcd67..0278a26 100644 --- a/src/gallium/drivers/iris/i915/iris_bufmgr.h +++ b/src/gallium/drivers/iris/i915/iris_bufmgr.h @@ -25,7 +25,5 @@ #include struct iris_bo; -enum iris_madvice; -bool iris_i915_bo_madvise(struct iris_bo *bo, enum iris_madvice state); 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 b40fda9..b67b2ea 100644 --- a/src/gallium/drivers/iris/i915/iris_kmd_backend.c +++ b/src/gallium/drivers/iris/i915/iris_kmd_backend.c @@ -91,10 +91,27 @@ i915_gem_create(struct iris_bufmgr *bufmgr, return create.handle; } +static bool +i915_bo_madvise(struct iris_bo *bo, enum iris_madvice state) +{ + uint32_t i915_state = state == IRIS_MADVICE_WILL_NEED ? + I915_MADV_WILLNEED : I915_MADV_DONTNEED; + struct drm_i915_gem_madvise madv = { + .handle = bo->gem_handle, + .madv = i915_state, + .retained = 1, + }; + + intel_ioctl(iris_bufmgr_get_fd(bo->bufmgr), DRM_IOCTL_I915_GEM_MADVISE, &madv); + + return madv.retained; +} + 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, }; return &i915_backend; } diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index 41cee45..e48bcd5 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -540,19 +540,13 @@ iris_bo_busy(struct iris_bo *bo) * Returns true if the buffer was retained, or false if it was discarded * whilst marked as IRIS_MADVICE_DONT_NEED. */ -static bool +static inline bool iris_bo_madvise(struct iris_bo *bo, enum iris_madvice state) { /* We can't madvise suballocated BOs. */ assert(iris_bo_is_real(bo)); - switch (iris_bufmgr_get_device_info(bo->bufmgr)->kmd_type) { - case INTEL_KMD_TYPE_I915: - return iris_i915_bo_madvise(bo, state); - default: - unreachable("missing"); - return false; - } + return bo->bufmgr->kmd_backend->bo_madvise(bo, state); } static struct iris_bo * diff --git a/src/gallium/drivers/iris/iris_kmd_backend.h b/src/gallium/drivers/iris/iris_kmd_backend.h index 5f1faab..7013dd3 100644 --- a/src/gallium/drivers/iris/iris_kmd_backend.h +++ b/src/gallium/drivers/iris/iris_kmd_backend.h @@ -28,14 +28,17 @@ #include "dev/intel_device_info.h" #include "dev/intel_kmd.h" +struct iris_bo; struct iris_bufmgr; enum iris_heap; +enum iris_madvice; struct iris_kmd_backend { uint32_t (*gem_create)(struct iris_bufmgr *bufmgr, const struct intel_memory_class_instance **regions, 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); }; const struct iris_kmd_backend *