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
- src/gallium/drivers/panfrost/pan_context.c 77 additions, 2 deletionssrc/gallium/drivers/panfrost/pan_context.c
- src/gallium/drivers/panfrost/pan_context.h 6 additions, 1 deletionsrc/gallium/drivers/panfrost/pan_context.h
- src/gallium/drivers/panfrost/pan_nondrm.h 16 additions, 0 deletionssrc/gallium/drivers/panfrost/pan_nondrm.h
Loading
Please register or sign in to comment