Skip to content
  • Alyssa Rosenzweig's avatar
    panfrost: Manage texture memory with pb_slab · 25c3cae3
    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