From ccde1dc18ea81f20139d4f1933b0bf73147a654a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Thu, 7 Sep 2023 14:07:13 -0700 Subject: [PATCH] anv: Move PAT entry selection to common code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Lionel Landwerlin Part-of: --- 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);