panfrost: Manage texture memory with pb_slab
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.
Showing with 99 additions and 3 deletions