From 814ca96d0d8692c5260f595be53c4b9aed0989fa Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Mon, 28 Mar 2016 22:34:35 +0200 Subject: [PATCH] llvmpipe: Cap to 2 GB on 32 bits On 32 bits system, application memory is quite limited. llvmpipe uses application memory. To help prevent memory exhaustion, limit reported memory availability to 2GB. Some gallium nine apps do check reported memory by allocating resources until memory is full. Gallium nine refuses allocations when 80% of the reported memory limit is used. This change helps some apps to start. Signed-off-by: Axel Davy Reviewed-by: Roland Scheidegger --- src/gallium/drivers/llvmpipe/lp_screen.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 18837a24bb1..9a0a1a24978 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -280,6 +280,12 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) if (!os_get_total_physical_memory(&system_memory)) return 0; + if (sizeof(void *) == 4) + /* Cap to 2 GB on 32 bits system. We do this because llvmpipe does + * eat application memory, which is quite limited on 32 bits. App + * shouldn't expect too much available memory. */ + system_memory = MIN2(system_memory, 2048 << 20); + return (int)(system_memory >> 20); } case PIPE_CAP_UMA: -- 2.30.2