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
