Module: Mesa Branch: main Commit: 861fff6339d28ab691413722d38740d579c3a169 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=861fff6339d28ab691413722d38740d579c3a169
Author: Iago Toral Quiroga <[email protected]> Date: Thu Sep 8 09:55:52 2022 +0200 v3dv: limit heap size to 4GB GPU addresses are 32-bit, so we can't address more than 4GB. Reviewed-by: Alejandro PiƱeiro <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18483> --- src/broadcom/vulkan/v3dv_device.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 3da4a073fae..ce9c218e569 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -355,16 +355,18 @@ compute_heap_size() uint64_t total_ram = (uint64_t) v3d_simulator_get_mem_size(); #endif - /* We don't want to burn too much ram with the GPU. If the user has 4GiB - * or less, we use at most half. If they have more than 4GiB, we use 3/4. + /* We don't want to burn too much ram with the GPU. If the user has 4GB + * or less, we use at most half. If they have more than 4GB we limit it + * to 3/4 with a max. of 4GB since the GPU cannot address more than that. */ - uint64_t available_ram; - if (total_ram <= 4ull * 1024ull * 1024ull * 1024ull) - available_ram = total_ram / 2; + const uint64_t MAX_HEAP_SIZE = 4ull * 1024ull * 1024ull * 1024ull; + uint64_t available; + if (total_ram <= MAX_HEAP_SIZE) + available = total_ram / 2; else - available_ram = total_ram * 3 / 4; + available = MIN2(MAX_HEAP_SIZE, total_ram * 3 / 4); - return available_ram; + return available; } #if !using_v3d_simulator
