mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 05:20:09 +01:00
radeon/winsys: Limit max allocation size to 70% of VRAM
The CL CTS queries the max allocation size, and then attempts to
allocate buffers of that size. If not enough contiguous RAM/VRAM is
available, this causes errors in the radeon kernel module due to
inability to allocate the required memory.
It's a bit of a hack, but experimentally on my system, I can use ~3/4
of the card's VRAM for a single global/constant buffer allocation given
current GUI/compositor use.
For a 1GB Pitcairn (HD7850) this gets me from the reported clinfo values of:
Global memory size 2143076352 (1.996GiB)
Max memory allocation 1500153446 (1.397GiB)
Max constant buffer size 1500153446 (1.397GiB)
To:
Global memory size 2143076352 (1.996GiB)
Max memory allocation 751619276 (716MiB)
Max constant buffer size 751619276 (716MiB)
Fixes: OpenCL CTS test/conformance/api/min_max_mem_alloc_size,
OpenCL CTS test/conformance/api/min_max_constant_buffer_size
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
(cherry picked from commit e4d06e4c53)
This commit is contained in:
parent
b17bd63229
commit
1492237b74
1 changed files with 2 additions and 0 deletions
|
|
@ -365,6 +365,8 @@ static bool do_winsys_init(struct radeon_drm_winsys *ws)
|
|||
/* Radeon allocates all buffers as contigous, 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);
|
||||
if (ws->info.drm_minor < 40)
|
||||
ws->info.max_alloc_size = MIN2(ws->info.max_alloc_size, 256*1024*1024);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue