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

Author: José Roberto de Souza <jose.so...@intel.com>
Date:   Thu Sep  7 14:07:13 2023 -0700

anv: Move PAT entry selection to common code

PAT entry will be needed to calculate mmap mode and also will be
used during BO creating in Xe KMD when PAT uAPi lands.

So here moving the PAT entry selection to common code.

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/intel/vulkan/anv_device.c           | 12 ++++++++++++
 src/intel/vulkan/anv_private.h          |  3 +++
 src/intel/vulkan/i915/anv_kmd_backend.c |  7 +------
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 90197b4dcf3..206f384868c 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -4955,3 +4955,15 @@ VkResult anv_GetPhysicalDeviceFragmentShadingRatesKHR(
 
    return vk_outarray_status(&out);
 }
+
+const struct intel_device_info_pat_entry *
+anv_device_get_pat_entry(struct anv_device *device,
+                         enum anv_bo_alloc_flags alloc_flags)
+{
+   if (alloc_flags & (ANV_BO_ALLOC_SNOOPED))
+      return &device->info->pat.coherent;
+   else if (alloc_flags & (ANV_BO_ALLOC_EXTERNAL | ANV_BO_ALLOC_SCANOUT))
+      return &device->info->pat.scanout;
+   else
+      return &device->info->pat.writeback;
+}
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index d964c3bb05b..3da57fbd78d 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -1874,6 +1874,9 @@ anv_gem_import_bo_alloc_flags_to_bo_flags(struct 
anv_device *device,
                                           struct anv_bo *bo,
                                           enum anv_bo_alloc_flags alloc_flags,
                                           uint32_t *bo_flags);
+const struct intel_device_info_pat_entry *
+anv_device_get_pat_entry(struct anv_device *device,
+                         enum anv_bo_alloc_flags alloc_flags);
 
 uint64_t anv_vma_alloc(struct anv_device *device,
                        uint64_t size, uint64_t align,
diff --git a/src/intel/vulkan/i915/anv_kmd_backend.c 
b/src/intel/vulkan/i915/anv_kmd_backend.c
index e01c0264596..38a266780b6 100644
--- a/src/intel/vulkan/i915/anv_kmd_backend.c
+++ b/src/intel/vulkan/i915/anv_kmd_backend.c
@@ -91,12 +91,7 @@ i915_gem_create(struct anv_device *device,
    struct drm_i915_gem_create_ext_set_pat set_pat_param = { 0 };
    if (device->info->has_set_pat_uapi) {
       /* Set PAT param */
-      if (alloc_flags & (ANV_BO_ALLOC_SNOOPED))
-         set_pat_param.pat_index = device->info->pat.coherent.index;
-      else if (alloc_flags & (ANV_BO_ALLOC_EXTERNAL | ANV_BO_ALLOC_SCANOUT))
-         set_pat_param.pat_index = device->info->pat.scanout.index;
-      else
-         set_pat_param.pat_index = device->info->pat.writeback.index;
+      set_pat_param.pat_index = anv_device_get_pat_entry(device, 
alloc_flags)->index;
       intel_i915_gem_add_ext(&gem_create.extensions,
                              I915_GEM_CREATE_EXT_SET_PAT,
                              &set_pat_param.base);

Reply via email to