radeon/winsys: Limit max allocation size to 70% of VRAM
authorAaron Watry <awatry@gmail.com>
Fri, 9 Jun 2017 17:57:42 +0000 (12:57 -0500)
committerAaron Watry <awatry@gmail.com>
Thu, 15 Jun 2017 00:38:55 +0000 (19:38 -0500)
commite4d06e4c531157f1f3e4683487ee9c81fa0cff9b
treedaf06dbb73d861d7a14ceafdf43f30ccc16a5601
parentb6d56c747cbce7b9ca297be1c6f2c2b7ca91842d
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>
src/gallium/winsys/radeon/drm/radeon_drm_winsys.c