mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
radeonsi: adjust and simplify max_alloc_size determination
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
This commit is contained in:
parent
203ef19f48
commit
b00deed66f
2 changed files with 13 additions and 11 deletions
|
|
@ -255,9 +255,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev,
|
|||
info->gart_size = meminfo.gtt.total_heap_size;
|
||||
info->vram_size = meminfo.vram.total_heap_size;
|
||||
info->vram_vis_size = meminfo.cpu_accessible_vram.total_heap_size;
|
||||
|
||||
info->max_alloc_size = MAX2(meminfo.vram.max_allocation,
|
||||
meminfo.gtt.max_allocation);
|
||||
} else {
|
||||
/* This is a deprecated interface, which reports usable sizes
|
||||
* (total minus pinned), but the pinned size computation is
|
||||
|
|
@ -289,11 +286,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev,
|
|||
info->gart_size = gtt.heap_size;
|
||||
info->vram_size = vram.heap_size;
|
||||
info->vram_vis_size = vram_vis.heap_size;
|
||||
|
||||
/* The kernel can split large buffers in VRAM but not in GTT, so large
|
||||
* allocations can fail or cause buffer movement failures in the kernel.
|
||||
*/
|
||||
info->max_alloc_size = MAX2(info->vram_size * 0.9, info->gart_size * 0.7);
|
||||
}
|
||||
|
||||
/* Set chip identification. */
|
||||
|
|
@ -331,6 +323,14 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev,
|
|||
info->has_dedicated_vram =
|
||||
!(amdinfo->ids_flags & AMDGPU_IDS_FLAGS_FUSION);
|
||||
|
||||
/* The kernel can split large buffers in VRAM but not in GTT, so large
|
||||
* allocations can fail or cause buffer movement failures in the kernel.
|
||||
*/
|
||||
if (info->has_dedicated_vram)
|
||||
info->max_alloc_size = info->vram_size * 0.8;
|
||||
else
|
||||
info->max_alloc_size = info->gart_size * 0.7;
|
||||
|
||||
/* Set hardware information. */
|
||||
info->gds_size = gds.gds_total_size;
|
||||
info->gds_gfx_partition_size = gds.gds_gfx_partition_size;
|
||||
|
|
|
|||
|
|
@ -362,11 +362,13 @@ static bool do_winsys_init(struct radeon_drm_winsys *ws)
|
|||
if (ws->info.drm_minor < 49)
|
||||
ws->info.vram_vis_size = MIN2(ws->info.vram_vis_size, 256*1024*1024);
|
||||
|
||||
/* Radeon allocates all buffers as contigous, which makes large allocations
|
||||
/* Radeon allocates all buffers contiguously, which makes large allocations
|
||||
* unlikely to succeed. */
|
||||
ws->info.max_alloc_size = MAX2(ws->info.vram_size, ws->info.gart_size) * 0.7;
|
||||
if (ws->info.has_dedicated_vram)
|
||||
ws->info.max_alloc_size = MIN2(ws->info.vram_size * 0.7, ws->info.max_alloc_size);
|
||||
ws->info.max_alloc_size = ws->info.vram_size * 0.7;
|
||||
else
|
||||
ws->info.max_alloc_size = ws->info.gart_size * 0.7;
|
||||
|
||||
if (ws->info.drm_minor < 40)
|
||||
ws->info.max_alloc_size = MIN2(ws->info.max_alloc_size, 256*1024*1024);
|
||||
/* Both 32-bit and 64-bit address spaces only have 4GB. */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue