radv: adjust the computation of the total usage of memory used
internal_usage is the memory allocated by the current process (intent) while system_usage is the memory allocated globally (actual). Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9774>
This commit is contained in:
parent
340703e044
commit
986a3243cf
|
@ -2405,26 +2405,28 @@ radv_get_memory_budget_properties(VkPhysicalDevice physicalDevice,
|
|||
unsigned mask = device->heaps;
|
||||
unsigned heap = 0;
|
||||
while (mask) {
|
||||
uint64_t internal_usage = 0, total_usage = 0;
|
||||
uint64_t internal_usage = 0, system_usage = 0;
|
||||
unsigned type = 1u << u_bit_scan(&mask);
|
||||
|
||||
switch (type) {
|
||||
case RADV_HEAP_VRAM:
|
||||
internal_usage = device->ws->query_value(device->ws, RADEON_ALLOCATED_VRAM);
|
||||
total_usage = device->ws->query_value(device->ws, RADEON_VRAM_USAGE);
|
||||
system_usage = device->ws->query_value(device->ws, RADEON_VRAM_USAGE);
|
||||
break;
|
||||
case RADV_HEAP_VRAM_VIS:
|
||||
internal_usage = device->ws->query_value(device->ws, RADEON_ALLOCATED_VRAM_VIS);
|
||||
if (!(device->heaps & RADV_HEAP_VRAM))
|
||||
internal_usage += device->ws->query_value(device->ws, RADEON_ALLOCATED_VRAM);
|
||||
total_usage = device->ws->query_value(device->ws, RADEON_VRAM_VIS_USAGE);
|
||||
system_usage = device->ws->query_value(device->ws, RADEON_VRAM_VIS_USAGE);
|
||||
break;
|
||||
case RADV_HEAP_GTT:
|
||||
internal_usage = device->ws->query_value(device->ws, RADEON_ALLOCATED_GTT);
|
||||
total_usage = device->ws->query_value(device->ws, RADEON_GTT_USAGE);
|
||||
system_usage = device->ws->query_value(device->ws, RADEON_GTT_USAGE);
|
||||
break;
|
||||
}
|
||||
|
||||
uint64_t total_usage = MAX2(internal_usage, system_usage);
|
||||
|
||||
uint64_t free_space = device->memory_properties.memoryHeaps[heap].size -
|
||||
MIN2(device->memory_properties.memoryHeaps[heap].size, total_usage);
|
||||
memoryBudget->heapBudget[heap] = free_space + internal_usage;
|
||||
|
|
Loading…
Reference in New Issue