Skip to content

About

Linux HDR from specification to photons: standards, DRM/KMS, drivers, compositors, applications, diagnostics, and measurement.

Topics

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Awesome Linux HDR Awesome DOI

Linux HDR and deep colour from specification to photons: formats, metadata, the kernel's display layer (DRM/KMS), drivers, compositors, applications, diagnostics, and measurement.

Use it to find out whether your screen, GPU, desktop and player can show HDR and deep colour on Linux, and where the chain breaks. HDR is not one switch. A working path must keep the picture's brightness curve, its colours, its metadata and its bit depth intact through every layer, from the file to the cable: in the specifications' words, the transfer function, colour primaries, mastering metadata, pixel depth, link format and display state. This list follows that chain and records where it can be inspected and repaired.

New to it? Start with From one bit to HDR, then Testing HDR honestly.

AI was leveraged as a partner in the development of this work: more information here.

Contents

How to read this list

Entries and project claims should keep these evidence classes separate:

  • Normative — a specification defines the required syntax or behaviour.
  • Implemented — readable source contains the path; this does not prove it runs on every device.
  • Measured — named hardware and software produced a recorded result.
  • Reported — a third party describes a result that has not been locally reproduced.
  • Proposed — a design or patch exists but has not completed validation.

Deep colour, wide colour gamut, and HDR are related but not interchangeable. A 12-bpc link is useful transport evidence; it is not by itself proof of an HDR transfer function or metadata reaching the display.

High-SDR in this project means HDR decoded and tone/gamut-mapped in real time through a 16-bit or floating-point working pipeline, then delivered as ordinary SDR using the highest verified scanout and link precision the output supports (10, 12, or 16 bpc). It does not mean tagging an SDR display as HDR.

Start here

  • Standards and formats - The public normative chain and the boundary around licensed specifications.
  • From one bit to HDR - Colour depth explained: counts from 2 to 281 trillion, why each step happened, the caveats, and how HDR differs from more bits.
  • Photography and video - HDR and deep colour from capture to delivery: the two meanings of HDR, capture depth, still and video formats, and the Linux tools that keep the depth.
  • SDR deep colour - History, specifications and the signalling rules for 10-, 12- and 16-bit SDR output.
  • Linux stack map - Kernel, drivers, compositors, APIs, and applications in signal order.
  • Testing HDR honestly - A layered verification ladder that prevents property exposure from being mistaken for light on the wire.
  • Federated Signal Ledger - Machine-checked pointers to the canonical Deep Color and 3D-plus-12-bpc measurements, physical observations, and explicit HDR/16-bpc non-tests this list consumes.
  • Open implementation roadmap - nouveau deep colour first, followed by real-time HDR-to-SDR rendering over a high-bit-depth link.
  • HDR-to-high-SDR prior art - Existing software and hardware processors, Daniel's Gemini assessment, and the remaining open Linux integration gap.
  • Linux DRM KMS documentation - The kernel's display-mode-setting architecture.
  • Wayland color-management-v1 - The protocol for communicating image descriptions and output colour state.

Standards and formats

  • ITU-R BT.2100 - HDR television image parameters, including PQ and HLG systems.
  • ITU-R BT.2020 - UHD television primaries, signal formats, and bit-depth vocabulary used by HDR systems.
  • CTA-861.3-A - Static HDR capability metadata and the Dynamic Range and Mastering InfoFrame.
  • HDMI 2.0a announcement - HDMI Forum's public record of HDR transport being added through CEA-861.3.
  • Vulkan VK_EXT_hdr_metadata - Application API for supplying static HDR metadata to a swapchain.
  • Matroska colour elements - Container fields for matrix coefficients, transfer characteristics, primaries, mastering metadata, and content light levels.

See standards.md for the connected map and citation notes.

Linux display stack

  • Linux DRM - Connector capabilities, atomic state, EDID parsing, colour management, and driver-specific output programming.
  • DRM HDR metadata UAPI - struct hdr_output_metadata, the cross-driver userspace contract.
  • DRM HDMI helper - Builds the HDMI Dynamic Range and Mastering InfoFrame from connector state.
  • Mesa - OpenGL/Vulkan drivers and WSI paths between applications, compositors, and KMS.
  • Wayland protocols - Home of the standardized colour-management protocol.
  • KWin - KDE's Wayland compositor and one open implementation of HDR and colour-management policy.
  • Sparky Stereo OS - A SparkyLinux edition on KDE Plasma, in development, that sends the deepest colour the display declares by default: its KWin starts new outputs at "prefer colour accuracy" (KWin's own default, "prefer efficiency", caps the link at 10 bits per channel), its NVIDIA open kernel module follows the EDID's deep colour (DC_30, DC_36, DC_48), and its nouveau reaches 16 bits per channel on Turing and newer.
  • Mutter - GNOME's compositor and display server.
  • wlroots - Reusable Wayland compositor library with DRM backends.
  • gamescope - Valve's gaming compositor; useful for following HDR, Vulkan, and direct-display work.
  • Kernel development for old AMD GPUs - Timur Kristóf (Valve), XDC 2026 (slides): GCN 1.0 and 1.1 Radeons now default to amdgpu and its DC display code; the old radeon driver had no atomic modesetting and no HDR, so the display path, not the GPU's age, decided what these cards could output.

The per-driver implementation map lives in linux-stack.md.

HDR on the two main desktops, release by release

KDE Plasma (KWin):

  • Plasma 6.0 - February 2024: partial HDR on Wayland, and an ICC profile per screen.
  • Plasma 6.4 - An HDR calibration wizard in the Display and Monitor settings, and Extended Dynamic Range on screens that offer it.
  • Plasma 6.6 - The calibrator gains a summary page and an option that follows Windows' HDR behaviour for games; version 2 of the Wayland colour-management protocol, which removes glitches in Firefox's experimental HDR mode.
  • Plasma 6.7 - An ICC profile and HDR content at the same time; 6.7.5 (8 September 2026) refines HDR content under an active ICC profile.

GNOME (Mutter):

  • GNOME 48 - March 2025: the first system-level HDR, with a per-monitor HDR switch in Settings > Display.
  • GNOME 49 - Wallpapers made for HDR and Display P3, rendered at their full 16 bits per channel by Mutter's colour management, and HDR brightness in Quick Settings.
  • GNOME 50 - Version 2 of the Wayland colour-management protocol, and HDR screen sharing on the colour pipeline.

Project roadmap

The first owned-hardware programme deliberately does not require an HDR display: enable a standards-bounded 12-bpc nouveau HDMI link to an SDR Sony KDL-46HX855, then render HDR10/HLG sources through a high-precision real-time tone mapper into a 10-bit scanout buffer carried by that 12-bpc link. amdgpu is the open implementation reference; the proprietary NVIDIA stack is a measured behavioural control and an API reference where its glue is open.

The wider target is cross-vendor HDR-to-high-SDR on the fly. Linux already has tone-mapping algorithms, 16-bit integer/float DRM formats, and individual high-bpc driver paths, but not one automatic, measured contract that preserves that precision from HDR metadata to an SDR sink across AMD, Intel, NVIDIA, and nouveau.

See roadmap.md for the separable acceptance gates. A 12-bpc OSD result proves link training. Correct HDR-to-SDR pixels prove the render path. Neither is reported as native HDR output.

Rendering and playback

  • libplacebo - GPU rendering, colour management, tone mapping, gamut mapping, and HDR metadata handling.
  • mpv - Player whose GPU-next rendering path is built on libplacebo.
  • FFmpeg - Codec, container, metadata, filtering, and conversion foundation used across the media stack.
  • VLC - Cross-platform player with libplacebo and platform-specific video-output paths.
  • Kodi - Media centre with platform-specific HDR passthrough and display-mode code worth comparing across operating systems.
  • GStreamer - Media framework carrying colourimetry and HDR metadata through caps and elements.
  • OpenColorIO - Production colour-management framework; adjacent to display HDR rather than a KMS implementation.
  • OpenEXR - The film industry's scene-linear HDR image format and its reference library, kept by the Academy Software Foundation; its command-line tools are packaged in Debian as openexr.
  • OpenImageIO - Reads and writes OpenEXR, Radiance HDR and dozens of other image formats, with colour transforms through OpenColorIO; its oiiotool converts and inspects HDR stills (Debian: openimageio-tools).
  • JERI - Disney Research's viewer for OpenEXR images inside a web page, with exposure and view-transform controls, built on OpenEXR compiled to run in the browser.
  • Proton-CachyOS 11.0-20260601 - CachyOS's Proton build, released in June 2026, that detects and enables HDR in games automatically, with its Wine Wayland driver work, instead of per-game launch options; DXVK_NO_HDR=1 turns it off. It works at the game layer only: it relies on the compositor's colour management (its release notes say GNOME does not yet expose enough) and on the kernel and GPU driver below to carry HDR, which the notes do not address. Reported (the release notes and GamingOnLinux), not measured here.

Tools

  • edid-decode - Decodes EDID, CTA extension blocks, deep-colour declarations, and HDR static metadata.
  • libdrm tests - Includes modetest for enumerating connector properties and exercising atomic modesets.
  • drm_info - Dumps DRM devices, connector properties, formats, and capabilities as structured data.
  • IGT GPU Tools - Kernel graphics test suite, including KMS validation infrastructure.
  • dovi_tool - Parses and manipulates Dolby Vision RPU metadata in owned media.
  • Dolby Vision professional decoder plug-in examples - Dolby's BSD-3-Clause examples for its Dolby Vision professional decoder SDK: an FFmpeg-based HEVC decoder plug-in and a GStreamer element. The SDK itself comes from Dolby.
  • hdr10plus_tool - Extracts, edits, and verifies HDR10+ dynamic metadata.
  • MediaInfo - Reports container and elementary-stream colour/HDR metadata.

Measurement and test material

  • EBU test sequences - Broadcaster test material, with licensing stated per sequence.
  • AV1 test vectors - Alliance for Open Media decoder conformance material.
  • Fluster - Fluendo's decoder conformance framework (LGPL-3.0), with high-bit-depth sets among its suites (HEVC range extensions, VP9 high-bit-depth vectors, Chromium's 10-bit AV1 vectors), run through FFmpeg, GStreamer and hardware decoders.
  • Testing guide - Separates source inspection, property checks, atomic acceptance, packet observation, sink indication, and photometric measurement.

An HDMI protocol analyzer can prove InfoFrame bytes. A display OSD can prove the mode the sink says it received. A colorimeter or spectroradiometer can measure luminance and chromaticity. None substitutes for all the others.

Repair maps and case studies

  • nouveau HDR gap audit - Source-confirmed missing KMS/InfoFrame path in Linux 7.3-rc4, including the 17-byte-versus-30-byte boundary and newer generic packet machinery.
  • nouveau HDMI Deep Color v2 - Link-depth selection and GCP programming for 30/36/48-bpp RGB; 12- and 10-bpc links measured on GA106 to a Sony KDL-46HX855, including 3D at 12 bpc. 48 bpp is implemented, not measured.
  • nouveau HDMI colour format series - Broadcast RGB and YCbCr 4:4:4/4:2:2/4:2:0 through the head's output CSC, 25 configurations measured on the same bench. 4:2:0 and DVI are implemented, not measured.
  • NVIDIA issue #1384 - Measured EDID-surface narrowing on GA106 plus the explicitly qualified HDR connection; the reporting bench has no HDR sink.
  • DRM HDR metadata introduction - Intel-originated kernel series showing how the common UAPI entered DRM.

Related lists

  • awesome-stereoscopy - Depth formats and HDMI 3D signalling; overlaps where EDID and InfoFrame machinery carries both depth and colour capabilities.
  • awesome-colour - Colour science, libraries, datasets, and production tools.
  • awesome-browser-hdr - HDR behaviour and tooling in browsers.
  • Awesome Gain Maps - HDR still images represented with gain maps.
  • awesome-vr - Virtual reality headsets, runtimes and standards; headset panels are displays too, and the same colour-depth questions apply.
  • awesome-ar - Augmented reality optics, tracking and standards, the see-through sibling of the headset lists.
  • awesome-wayland - Wayland compositors, protocols and tools, where desktop HDR and colour management are being built.
  • awesome-video - Streaming video tools, codecs and players, including the HDR delivery chain.
  • awesome-ffmpeg - Tooling around FFmpeg, which decodes and converts most of the HDR material a Linux system plays.
  • awesome-OpenSourcePhotography - Open-source photography tools, for the capture and raw-development side of HDR and deep colour.
  • Awesome-HDR - Papers and code on HDR imaging in the photographic sense; dormant since 2022.

Known gaps

  • A vendor-neutral real-time HDR-to-high-SDR contract: metadata-driven tone mapping, 16-bit/float working surfaces, verified 10/12/16-bpc scanout/link selection, calibration, and an observable fallback when a layer narrows it.
  • A generation-by-generation table of HDR property and InfoFrame support for amdgpu, i915, nouveau, and the proprietary NVIDIA stack.
  • Reproducible compositor test recipes under KWin, Mutter, wlroots, and gamescope.
  • Open HDR-capable capture hardware and protocol-analyzer workflows.
  • Sink-independent KMS tests for metadata replacement, removal, and SDR fallback.
  • A public matrix separating “property exposed,” “packet emitted,” “sink reports HDR,” and “photometrically correct.”

Contributions that close these gaps are welcome; see contributing.md.

About

Linux HDR from specification to photons: standards, DRM/KMS, drivers, compositors, applications, diagnostics, and measurement.

Topics

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors