NVIDIA Still Working On A Generic Allocator - Has Working Open-Source Implementation

Written by Michael Larabel in NVIDIA on 7 October 2019 at 07:42 AM EDT. 21 Comments
For those wondering, NVIDIA is still pursuing a generic allocator / Unix device memory allocator that has been talked about for years and a potential successor to the likes of the Generic Buffer Manager (GBM). They now have an implementation of their proposed allocator working for the open-source NVIDIA (Nouveau) driver though there still is a lot of work ahead.

Each year at the X.Org Developers' Conference (XDC) going back several they have presented concepts and work on a new device memory API with being unhappy over the semantics of GBM and that initially being one of the obstacles for NVIDIA's Linux driver in supporting Wayland compositors with many of them being tailored towards GBM while NVIDIA's initial Wayland support design has been around EGLStreams but they ultimately want this new hypothetical allocator API.

NVIDIA has been aiming for a better API than GBM, it's designed to be cross-vendor/driver, API agnostic, and various other improvements over the status quo. We hadn't heard much since the end of 2017 while last week at XDC2019 was finally an update by NVIDIA's James Jones.

NVIDIA engineers implemented their current proof-of-concept allocator within the Nouveau driver. With this new allocator and making use of modifiers and other features, they were able to see better performance in some workloads. James Jones reported performance was 50~300% better when not decompressing. But for a modified kmscube that behaves like a composited desktop the workflow gain was about 80% better overall.

Looking ahead NVIDIA is looking for review on their format modifier layout, getting their Mesa code reviewed and merged, writing an extension for their transition format modifier support, and integrating this code into Wayland protocols/compositors and libraries. They are also working on implementing this generic allocator within their proprietary driver with this open-source NVIDIA implementation proving to be a success.

There still is though a number of open design issues with this generic allocator as outlined via this PDF slide deck from XDC2019. So long story short, NVIDIA is still pursuing this new allocator design and perhaps in 2020 it might finally be ready for more widespread adoption if other driver vendors get onboard with it. The kernel-side bits for Nouveau's implementation can be found via this GitHub tree along with the Mesa code.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week