mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 08:08:06 +02:00
intel/dev: add a helper to update memory info
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17075>
This commit is contained in:
parent
4aecfbf0f4
commit
4e727297e8
2 changed files with 31 additions and 8 deletions
|
|
@ -1592,7 +1592,7 @@ query_topology(struct intel_device_info *devinfo, int fd)
|
|||
* and/or device local memory.
|
||||
*/
|
||||
static bool
|
||||
query_regions(struct intel_device_info *devinfo, int fd)
|
||||
query_regions(struct intel_device_info *devinfo, int fd, bool update)
|
||||
{
|
||||
struct drm_i915_query_memory_regions *meminfo =
|
||||
intel_i915_query_alloc(fd, DRM_I915_QUERY_MEMORY_REGIONS, NULL);
|
||||
|
|
@ -1603,16 +1603,28 @@ query_regions(struct intel_device_info *devinfo, int fd)
|
|||
const struct drm_i915_memory_region_info *mem = &meminfo->regions[i];
|
||||
switch (mem->region.memory_class) {
|
||||
case I915_MEMORY_CLASS_SYSTEM:
|
||||
devinfo->mem.sram.mem_class = mem->region.memory_class;
|
||||
devinfo->mem.sram.mem_instance = mem->region.memory_instance;
|
||||
devinfo->mem.sram.mappable.size = mem->probed_size;
|
||||
if (!update) {
|
||||
devinfo->mem.sram.mem_class = mem->region.memory_class;
|
||||
devinfo->mem.sram.mem_instance = mem->region.memory_instance;
|
||||
devinfo->mem.sram.mappable.size = mem->probed_size;
|
||||
} else {
|
||||
assert(devinfo->mem.sram.mem_class == mem->region.memory_class);
|
||||
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;
|
||||
break;
|
||||
case I915_MEMORY_CLASS_DEVICE:
|
||||
devinfo->mem.vram.mem_class = mem->region.memory_class;
|
||||
devinfo->mem.vram.mem_instance = mem->region.memory_instance;
|
||||
devinfo->mem.vram.mappable.size = mem->probed_size;
|
||||
if (!update) {
|
||||
devinfo->mem.vram.mem_class = mem->region.memory_class;
|
||||
devinfo->mem.vram.mem_instance = mem->region.memory_instance;
|
||||
devinfo->mem.vram.mappable.size = mem->probed_size;
|
||||
} else {
|
||||
assert(devinfo->mem.vram.mem_class == mem->region.memory_class);
|
||||
assert(devinfo->mem.vram.mem_instance == mem->region.memory_instance);
|
||||
assert(devinfo->mem.vram.mappable.size == mem->probed_size);
|
||||
}
|
||||
if (mem->unallocated_size != -1)
|
||||
devinfo->mem.vram.mappable.free = mem->unallocated_size;
|
||||
break;
|
||||
|
|
@ -1970,7 +1982,7 @@ intel_get_device_info_from_fd(int fd, struct intel_device_info *devinfo)
|
|||
getparam_topology(devinfo, fd);
|
||||
}
|
||||
|
||||
query_regions(devinfo, fd);
|
||||
query_regions(devinfo, fd, false);
|
||||
|
||||
/* region info is required for lmem support */
|
||||
if (devinfo->has_local_mem && !devinfo->mem.use_class_instance) {
|
||||
|
|
@ -2006,3 +2018,8 @@ intel_get_device_info_from_fd(int fd, struct intel_device_info *devinfo)
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool intel_device_info_update_memory_info(struct intel_device_info *devinfo, int fd)
|
||||
{
|
||||
return query_regions(devinfo, fd, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -494,6 +494,12 @@ bool intel_get_device_info_from_fd(int fh, struct intel_device_info *devinfo);
|
|||
bool intel_get_device_info_from_pci_id(int pci_id,
|
||||
struct intel_device_info *devinfo);
|
||||
|
||||
/* Only updates intel_device_info::regions::...::free fields. The
|
||||
* class/instance/size should remain the same over time.
|
||||
*/
|
||||
bool intel_device_info_update_memory_info(struct intel_device_info *devinfo,
|
||||
int fd);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue