On VegaM, the visible VRAM size is equal to the VRAM size, which means only two heaps are exposed.
This fixes dEQP-VK.api.info.device.memory_budget. Cc: 19.0 19.1 <mesa-sta...@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> --- src/amd/vulkan/radv_device.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 358fc7cb30a..31b9b4e9875 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -1489,9 +1489,11 @@ radv_get_memory_budget_properties(VkPhysicalDevice physicalDevice, RADV_FROM_HANDLE(radv_physical_device, device, physicalDevice); VkPhysicalDeviceMemoryProperties *memory_properties = &device->memory_properties; uint64_t visible_vram_size = radv_get_visible_vram_size(device); + int vram_index = -1, visible_vram_index = -1, gtt_index = -1; uint64_t vram_size = radv_get_vram_size(device); uint64_t gtt_size = device->rad_info.gart_size; uint64_t heap_budget, heap_usage; + uint32_t heap_count = 0; /* For all memory heaps, the computation of budget is as follow: * heap_budget = heap_size - global_heap_usage + app_heap_usage @@ -1503,6 +1505,7 @@ radv_get_memory_budget_properties(VkPhysicalDevice physicalDevice, * in presence of shared buffers). */ if (vram_size) { + vram_index = heap_count++; heap_usage = device->ws->query_value(device->ws, RADEON_ALLOCATED_VRAM); @@ -1510,11 +1513,12 @@ radv_get_memory_budget_properties(VkPhysicalDevice physicalDevice, device->ws->query_value(device->ws, RADEON_VRAM_USAGE) + heap_usage; - memoryBudget->heapBudget[RADV_MEM_HEAP_VRAM] = heap_budget; - memoryBudget->heapUsage[RADV_MEM_HEAP_VRAM] = heap_usage; + memoryBudget->heapBudget[vram_index] = heap_budget; + memoryBudget->heapUsage[vram_index] = heap_usage; } if (visible_vram_size) { + visible_vram_index = heap_count++; heap_usage = device->ws->query_value(device->ws, RADEON_ALLOCATED_VRAM_VIS); @@ -1522,11 +1526,12 @@ radv_get_memory_budget_properties(VkPhysicalDevice physicalDevice, device->ws->query_value(device->ws, RADEON_VRAM_VIS_USAGE) + heap_usage; - memoryBudget->heapBudget[RADV_MEM_HEAP_VRAM_CPU_ACCESS] = heap_budget; - memoryBudget->heapUsage[RADV_MEM_HEAP_VRAM_CPU_ACCESS] = heap_usage; + memoryBudget->heapBudget[visible_vram_index] = heap_budget; + memoryBudget->heapUsage[visible_vram_index] = heap_usage; } if (gtt_size) { + gtt_index = heap_count++; heap_usage = device->ws->query_value(device->ws, RADEON_ALLOCATED_GTT); @@ -1534,8 +1539,8 @@ radv_get_memory_budget_properties(VkPhysicalDevice physicalDevice, device->ws->query_value(device->ws, RADEON_GTT_USAGE) + heap_usage; - memoryBudget->heapBudget[RADV_MEM_HEAP_GTT] = heap_budget; - memoryBudget->heapUsage[RADV_MEM_HEAP_GTT] = heap_usage; + memoryBudget->heapBudget[gtt_index] = heap_budget; + memoryBudget->heapUsage[gtt_index++] = heap_usage; } /* The heapBudget and heapUsage values must be zero for array elements -- 2.22.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev