-
Alyssa Rosenzweig authored
Previously, we allocated a single 256MB slab of texture memory on init, never freed anything, and hoped it was enough. This is bad on so many levels. This patch uses the pb_slab interface courtesy of AMD to manage texture memory. With the new API, we don't allocate any slabs on startup; we instead provide a callback for allocating a new slab of memory, which we implement with the existing kbase API. Then, we use its methods to allocate and free texture memory. For real-world motivation, without this patch, running sway+es2gears (via Panfrost/llvmpipe respectively) would allocate 50% of my memory, and then crash after a short amount of time due to OOM conditions. With this patch, the same combination allocates about 30% of memory and can run essentially indefinitely, since we're freeing resources appropriately. Future patches will extend this interface for other parts of the cmdstream to further reduce our memory footprint.
25c3cae3