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);

Reply via email to