Module: Mesa Branch: main Commit: 099b9e5058ce3a5ca597af1cce92708906149ee8 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=099b9e5058ce3a5ca597af1cce92708906149ee8
Author: José Roberto de Souza <[email protected]> Date: Fri Oct 21 11:53:17 2022 -0700 anv: Convert drm_i915_gem_memory_class_instance to intel_memory_class_instance Also using pointers to intel_device_info struct instead of replicate the same information. Signed-off-by: José Roberto de Souza <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20948> --- src/intel/vulkan/anv_allocator.c | 2 +- src/intel/vulkan/anv_device.c | 12 +++--------- src/intel/vulkan/anv_gem.c | 12 ++++++++++-- src/intel/vulkan/anv_gem_stubs.c | 2 +- src/intel/vulkan/anv_private.h | 4 ++-- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index 1e816978e1d..2569c4984ff 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -1457,7 +1457,7 @@ anv_device_alloc_bo(struct anv_device *device, * one of them. */ if (anv_physical_device_has_vram(device->physical)) { - struct drm_i915_gem_memory_class_instance regions[2]; + const struct intel_memory_class_instance *regions[2]; uint32_t nregions = 0; /* This always try to put the object in local memory. Here diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index b2cbe3f19aa..97ce7430412 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -406,22 +406,16 @@ anv_init_meminfo(struct anv_physical_device *device, int fd) { const struct intel_device_info *devinfo = &device->info; - device->sys.region.memory_class = devinfo->mem.sram.mem.klass; - device->sys.region.memory_instance = devinfo->mem.sram.mem.instance; + device->sys.region = &devinfo->mem.sram.mem; device->sys.size = anv_compute_sys_heap_size(device, devinfo->mem.sram.mappable.size); device->sys.available = devinfo->mem.sram.mappable.free; - device->vram_mappable.region.memory_class = devinfo->mem.vram.mem.klass; - device->vram_mappable.region.memory_instance = - devinfo->mem.vram.mem.instance; + device->vram_mappable.region = &devinfo->mem.vram.mem; device->vram_mappable.size = devinfo->mem.vram.mappable.size; device->vram_mappable.available = devinfo->mem.vram.mappable.free; - device->vram_non_mappable.region.memory_class = - devinfo->mem.vram.mem.klass; - device->vram_non_mappable.region.memory_instance = - devinfo->mem.vram.mem.instance; + device->vram_non_mappable.region = &devinfo->mem.vram.mem; device->vram_non_mappable.size = devinfo->mem.vram.unmappable.size; device->vram_non_mappable.available = devinfo->mem.vram.unmappable.free; diff --git a/src/intel/vulkan/anv_gem.c b/src/intel/vulkan/anv_gem.c index 1bfc3a88d6e..1892e4e35d5 100644 --- a/src/intel/vulkan/anv_gem.c +++ b/src/intel/vulkan/anv_gem.c @@ -66,15 +66,23 @@ anv_gem_close(struct anv_device *device, uint32_t gem_handle) uint32_t anv_gem_create_regions(struct anv_device *device, uint64_t anv_bo_size, uint32_t flags, uint32_t num_regions, - struct drm_i915_gem_memory_class_instance *regions) + const struct intel_memory_class_instance **regions) { + struct drm_i915_gem_memory_class_instance i915_regions[2]; + /* Check for invalid flags */ assert((flags & ~I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS) == 0); + assert(num_regions <= ARRAY_SIZE(i915_regions)); + + for (uint32_t i = 0; i < num_regions; i++) { + i915_regions[i].memory_class = regions[i]->klass; + i915_regions[i].memory_instance = regions[i]->instance; + } struct drm_i915_gem_create_ext_memory_regions ext_regions = { .base = { .name = I915_GEM_CREATE_EXT_MEMORY_REGIONS }, .num_regions = num_regions, - .regions = (uintptr_t)regions, + .regions = (uintptr_t)i915_regions, }; struct drm_i915_gem_create_ext gem_create = { diff --git a/src/intel/vulkan/anv_gem_stubs.c b/src/intel/vulkan/anv_gem_stubs.c index 4b62e122f5f..abc6efe2e4b 100644 --- a/src/intel/vulkan/anv_gem_stubs.c +++ b/src/intel/vulkan/anv_gem_stubs.c @@ -48,7 +48,7 @@ anv_gem_close(struct anv_device *device, uint32_t gem_handle) uint32_t anv_gem_create_regions(struct anv_device *device, uint64_t anv_bo_size, uint32_t flags, uint32_t num_regions, - struct drm_i915_gem_memory_class_instance *regions) + const struct intel_memory_class_instance **regions) { return 0; } diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 47dc99a9360..4c1a43aeafa 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -896,7 +896,7 @@ struct anv_memory_heap { }; struct anv_memregion { - struct drm_i915_gem_memory_class_instance region; + const struct intel_memory_class_instance *region; uint64_t size; uint64_t available; }; @@ -1349,7 +1349,7 @@ uint32_t anv_gem_create(struct anv_device *device, uint64_t size); void anv_gem_close(struct anv_device *device, uint32_t gem_handle); uint32_t anv_gem_create_regions(struct anv_device *device, uint64_t anv_bo_size, uint32_t flags, uint32_t num_regions, - struct drm_i915_gem_memory_class_instance *regions); + const struct intel_memory_class_instance **regions); uint32_t anv_gem_userptr(struct anv_device *device, void *mem, size_t size); int anv_gem_wait(struct anv_device *device, uint32_t gem_handle, int64_t *timeout_ns); int anv_gem_set_tiling(struct anv_device *device, uint32_t gem_handle,
