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.