Module: Mesa
Branch: main
Commit: 7a67ea0a6ed81ca9ae4542b70377f2f53129586f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a67ea0a6ed81ca9ae4542b70377f2f53129586f

Author: Kenneth Graunke <[email protected]>
Date:   Tue Sep 26 00:40:01 2023 -0700

iris: Make an iris_heap_is_device_local() helper

We're going to have two system memory heaps and two device local heaps
shortly.  Make a helper to avoid having to check for both every time.

Reviewed-by: José Roberto de Souza <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25447>

---

 src/gallium/drivers/iris/i915/iris_kmd_backend.c | 2 +-
 src/gallium/drivers/iris/iris_bufmgr.c           | 4 ++--
 src/gallium/drivers/iris/iris_bufmgr.h           | 9 ++++++++-
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/iris/i915/iris_kmd_backend.c 
b/src/gallium/drivers/iris/i915/iris_kmd_backend.c
index 20b229ff609..1a188f4efc1 100644
--- a/src/gallium/drivers/iris/i915/iris_kmd_backend.c
+++ b/src/gallium/drivers/iris/i915/iris_kmd_backend.c
@@ -176,7 +176,7 @@ i915_gem_mmap_offset(struct iris_bufmgr *bufmgr, struct 
iris_bo *bo)
        * across PCIe, it's always snooped.  The only caching mode allowed by
        * DG1 hardware for LMEM is WC.
        */
-      if (bo->real.heap != IRIS_HEAP_SYSTEM_MEMORY)
+      if (iris_heap_is_device_local(bo->real.heap))
          assert(bo->real.mmap_mode == IRIS_MMAP_WC);
       else
          assert(bo->real.mmap_mode == IRIS_MMAP_WB);
diff --git a/src/gallium/drivers/iris/iris_bufmgr.c 
b/src/gallium/drivers/iris/iris_bufmgr.c
index 4b9a505863f..ae1932603fb 100644
--- a/src/gallium/drivers/iris/iris_bufmgr.c
+++ b/src/gallium/drivers/iris/iris_bufmgr.c
@@ -1103,7 +1103,7 @@ iris_bo_alloc_get_mmap_mode(struct iris_bufmgr *bufmgr, 
enum iris_heap heap,
       return iris_xe_bo_flags_to_mmap_mode(bufmgr, heap, flags);
 
    /* i915 */
-   const bool local = heap != IRIS_HEAP_SYSTEM_MEMORY;
+   const bool local = iris_heap_is_device_local(heap);
    const bool is_coherent = bufmgr->devinfo.has_llc ||
                             (bufmgr->vram.size > 0 && !local) ||
                             (flags & BO_ALLOC_COHERENT);
@@ -2155,7 +2155,7 @@ iris_bo_alloc_aux_map_get_mmap_mode(struct iris_bufmgr 
*bufmgr,
 {
    switch (bufmgr->devinfo.kmd_type) {
    case INTEL_KMD_TYPE_I915:
-      return heap != IRIS_HEAP_SYSTEM_MEMORY ||
+      return iris_heap_is_device_local(heap) ||
          bufmgr->devinfo.has_set_pat_uapi ?
          IRIS_MMAP_WC : IRIS_MMAP_WB;
    case INTEL_KMD_TYPE_XE:
diff --git a/src/gallium/drivers/iris/iris_bufmgr.h 
b/src/gallium/drivers/iris/iris_bufmgr.h
index ae04a04be2c..9391b65d951 100644
--- a/src/gallium/drivers/iris/iris_bufmgr.h
+++ b/src/gallium/drivers/iris/iris_bufmgr.h
@@ -164,6 +164,13 @@ enum iris_heap {
 
 extern const char *iris_heap_to_string[];
 
+static inline bool
+iris_heap_is_device_local(enum iris_heap heap)
+{
+   return heap == IRIS_HEAP_DEVICE_LOCAL ||
+          heap == IRIS_HEAP_DEVICE_LOCAL_PREFERRED;
+}
+
 #define IRIS_BATCH_COUNT 3
 
 struct iris_bo_screen_deps {
@@ -455,7 +462,7 @@ iris_bo_likely_local(const struct iris_bo *bo)
       return false;
 
    bo = iris_get_backing_bo((struct iris_bo *) bo);
-   return bo->real.heap != IRIS_HEAP_SYSTEM_MEMORY;
+   return iris_heap_is_device_local(bo->real.heap);
 }
 
 static inline enum iris_mmap_mode

Reply via email to