NVIDIA's Open-Source Christmas: Experimental Allocator Driver For Nouveau
NVIDIA has done an open-source code drop to end out 2017. It's not as exciting as many would have hoped for in providing Nouveau GPU re-clocking abilities, any improvements to the signed firmware situation, or an open-source Vulkan driver, but there is now an experimental Nouveau allocator to implement their proposed generic device allocator library.
This Nouveau allocator driver is an experimental device implementation for the company's long-running Unix Device Memory Allocator project as the potential successor to GBM / a new unified library that Wayland compositors could use for device memory allocation rather than the Generic Buffer Manager or EGLStreams.
Last month was the last update on the maturing Device Memory Allocator Project that's finally taking shape while today is the first time an actual driver implementation of this proposed interface is being published. This can allow developers to see if their hypothetical design is now working out sufficiently for all use-cases, address any shortcomings, etc.
This allocator driver communicates with the Nouveau kernel DRM code and so far just handles basic functionality, but is good enough to get the "kmscube" demo running using the allocator.
As part of this effort, NVIDIA also worked on Mesa patches adding OpenGL EXT_external_objects support to the Nouveau NVC0 Gallium3D driver. EXT_external_objects is about bringing the concepts of explicit memory objects and semaphores (synchronization objects) introduced with Vulkan over to the OpenGL driver space. There's also patches for an experimental NVX_unix_allocator_import OpenGL extension for importing allocator memory to OpenGL.
The Nouveau patches can be found here while the memory objects / semaphores code for Nouveau Gallium3D here.
More information on this latest NVIDIA work via this Mesa-dev message. It will certainly be interesting to see what comes of this Unix Device Memory Allocator in 2018 and how well it will be adopted.