Preview: DRM Per-Plane Color Pipeline API Support for NVIDIA Open GPU Kernel Modules

Hello,

If you’ve been following upstream DRM development, you may already know that the per-plane color pipeline API (https://patchwork.freedesktop.org/series/157608/) was merged a few months ago, landing in Linux v6.19. We at NVIDIA have had an eye on this for some time, and participated in some of the early off-list design discussions to ensure that the API can work with our hardware. There were a few remaining limitations that didn’t get addressed upstream (https://lists.freedesktop.org/archives/dri-devel/2024-September/469470.html), but they don’t prevent the API from being functional.

The goal of the color pipeline API is to allow compositors to leverage GPU display hardware capabilities to accelerate color processing (most notably for HDR) typically done in software. Described as a “prescriptive API,” the API exposes an abstraction of the hardware blocks directly to clients (i.e. Wayland compositors), such that they can directly configure the hardware as they see fit, matching it with their software processing and allowing software/hardware processing to be toggled at will with minimal visible change. Given this API design and the unique constraints of NVIDIA’s display hardware, we expect that compositors will require additional implementation to make effective use of NVIDIA color pipelines.

To help facilitate compositor developers, we are providing a preview of our planned support (official support pending a future driver release) backported against open-gpu-kernel-modules 595.58.03. The NVIDIA color pipeline structure and associated limitations are documented in the commit message at https://github.com/AlexGoinsNV/open-gpu-kernel-modules-drm-color-pipeline-preview/commit/c6d0aefd0d4c. Applying the change on top of the open-gpu-kernel-modules repository will break compatibility with 595.58.03’s X driver, so it should only be used when testing with Wayland + DRM/KMS. To try it out, clone https://github.com/AlexGoinsNV/open-gpu-kernel-modules-drm-color-pipeline-preview and follow the instructions for building/installing against 595.58.03.

kwin-wayland has a known issue that is exposed when running with an NVIDIA driver built with DRM per-plane color pipeline API support. We have documented the issue and recommended a fix here: https://invent.kde.org/plasma/kwin/-/merge_requests/9042.

During development, we used Claude Sonnet/Opus to dramatically reduce the time required to create production quality code. Nearly all of the code was produced by the model, but with a strong emphasis on explicit human direction, review, and iteration.

Thanks,
Alex Goins
NVIDIA Linux Driver Team

5 Likes