Module: Mesa Branch: main Commit: 533082f38470311e59d01c19c72e628c7bdf5ec0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=533082f38470311e59d01c19c72e628c7bdf5ec0
Author: José Roberto de Souza <jose.so...@intel.com> Date: Mon Sep 11 09:44:33 2023 -0700 iris: Add iris_bufmgr_get_pat_entry_for_bo_flags() Next patches will make of intel_device_info_pat_entry parameters other than index, so here adding a function to return it. While at it also renaming and adjusting parameter of iris_pat_index_for_bo_flags() to match other functions in iris_bufmgr.c/h. No changes in behavior expected here. Signed-off-by: José Roberto de Souza <jose.so...@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26099> --- src/gallium/drivers/iris/i915/iris_kmd_backend.c | 2 +- src/gallium/drivers/iris/iris_bufmgr.c | 20 +++++++++++++++++++- src/gallium/drivers/iris/iris_bufmgr.h | 16 +++++++--------- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/gallium/drivers/iris/i915/iris_kmd_backend.c b/src/gallium/drivers/iris/i915/iris_kmd_backend.c index 18277ad5de7..20b229ff609 100644 --- a/src/gallium/drivers/iris/i915/iris_kmd_backend.c +++ b/src/gallium/drivers/iris/i915/iris_kmd_backend.c @@ -111,7 +111,7 @@ i915_gem_create(struct iris_bufmgr *bufmgr, struct drm_i915_gem_create_ext_set_pat set_pat_param = { 0 }; if (devinfo->has_set_pat_uapi) { set_pat_param.pat_index = - iris_pat_index_for_bo_flags(devinfo, alloc_flags); + iris_bufmgr_get_pat_index_for_bo_flags(bufmgr, alloc_flags); intel_i915_gem_add_ext(&create.extensions, I915_GEM_CREATE_EXT_SET_PAT, &set_pat_param.base); diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index f12f3edae87..e36b204fc68 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -320,7 +320,7 @@ bucket_for_size(struct iris_bufmgr *bufmgr, uint64_t size, const struct intel_device_info *devinfo = &bufmgr->devinfo; if (devinfo->has_set_pat_uapi && - iris_pat_index_for_bo_flags(devinfo, flags) != devinfo->pat.writeback.index) + iris_bufmgr_get_pat_entry_for_bo_flags(bufmgr, flags) != &devinfo->pat.writeback) return NULL; if (devinfo->kmd_type == INTEL_KMD_TYPE_XE && @@ -2616,3 +2616,21 @@ iris_bufmgr_use_global_vm_id(struct iris_bufmgr *bufmgr) { return bufmgr->use_global_vm; } + +/** + * Return the pat entry based on the bo heap and allocation flags. + */ +const struct intel_device_info_pat_entry * +iris_bufmgr_get_pat_entry_for_bo_flags(const struct iris_bufmgr *bufmgr, + unsigned alloc_flags) +{ + const struct intel_device_info *devinfo = &bufmgr->devinfo; + + if (alloc_flags & BO_ALLOC_COHERENT) + return &devinfo->pat.coherent; + + if (alloc_flags & (BO_ALLOC_SHARED | BO_ALLOC_SCANOUT)) + return &devinfo->pat.scanout; + + return &devinfo->pat.writeback; +} diff --git a/src/gallium/drivers/iris/iris_bufmgr.h b/src/gallium/drivers/iris/iris_bufmgr.h index 97a2690e808..ae04a04be2c 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.h +++ b/src/gallium/drivers/iris/iris_bufmgr.h @@ -539,20 +539,18 @@ iris_bo_bump_seqno(struct iris_bo *bo, uint64_t seqno, prev_seqno = tmp; } +const struct intel_device_info_pat_entry * +iris_bufmgr_get_pat_entry_for_bo_flags(const struct iris_bufmgr *bufmgr, + unsigned alloc_flags); + /** * Return the pat index based on the bo allocation flags. */ static inline uint32_t -iris_pat_index_for_bo_flags(const struct intel_device_info *devinfo, - unsigned alloc_flags) +iris_bufmgr_get_pat_index_for_bo_flags(const struct iris_bufmgr *bufmgr, + unsigned alloc_flags) { - if (alloc_flags & BO_ALLOC_COHERENT) - return devinfo->pat.coherent.index; - - if (alloc_flags & (BO_ALLOC_SHARED | BO_ALLOC_SCANOUT)) - return devinfo->pat.scanout.index; - - return devinfo->pat.writeback.index; + return iris_bufmgr_get_pat_entry_for_bo_flags(bufmgr, alloc_flags)->index; } enum iris_memory_zone iris_memzone_for_address(uint64_t address);