intel/dev: deal with i915 unallocated_size on smem

We cannot rely on unallocated_size on system memory for
VK_EXT_memory_budget.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 4aecfbf0f4 ("intel/dev: Add devinfo::mem to store i915 regions information")
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17349>
This commit is contained in:
Lionel Landwerlin 2022-06-22 10:51:13 +03:00 committed by Marge Bot
parent 2474d92071
commit 09ba5c2b43
1 changed files with 8 additions and 3 deletions

View File

@ -1603,7 +1603,7 @@ query_regions(struct intel_device_info *devinfo, int fd, bool update)
for (int i = 0; i < meminfo->num_regions; i++) {
const struct drm_i915_memory_region_info *mem = &meminfo->regions[i];
switch (mem->region.memory_class) {
case I915_MEMORY_CLASS_SYSTEM:
case I915_MEMORY_CLASS_SYSTEM: {
if (!update) {
devinfo->mem.sram.mem_class = mem->region.memory_class;
devinfo->mem.sram.mem_instance = mem->region.memory_instance;
@ -1613,9 +1613,14 @@ query_regions(struct intel_device_info *devinfo, int fd, bool update)
assert(devinfo->mem.sram.mem_instance == mem->region.memory_instance);
assert(devinfo->mem.sram.mappable.size == mem->probed_size);
}
if (mem->unallocated_size != -1)
devinfo->mem.sram.mappable.free = mem->unallocated_size;
/* The kernel uAPI only reports an accurate unallocated_size value
* for I915_MEMORY_CLASS_DEVICE.
*/
uint64_t available;
if (os_get_available_system_memory(&available))
devinfo->mem.sram.mappable.free = MIN2(available, mem->probed_size);
break;
}
case I915_MEMORY_CLASS_DEVICE:
if (!update) {
devinfo->mem.vram.mem_class = mem->region.memory_class;