llvmpipe: Cap to 2 GB on 32 bits
authorAxel Davy <axel.davy@ens.fr>
Mon, 28 Mar 2016 20:34:35 +0000 (22:34 +0200)
committerAxel Davy <axel.davy@ens.fr>
Mon, 10 Oct 2016 21:43:48 +0000 (23:43 +0200)
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 <axel.davy@ens.fr>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/drivers/llvmpipe/lp_screen.c

index 18837a24bb15cc0fe66ca348296c03f12bd00d3b..9a0a1a24978031238ffc0c9bbfbf59ec4734210f 100644 (file)
@@ -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: