Skip to content
@ashlar-display

ashlar-display

Ashlar

A display connection stack in Rust — HDMI 2.1 first.

Ashlar takes a display link from raw capability bytes to a trained link: parse what the sink can do, negotiate the best mode the source, sink and cable can all carry, describe it in InfoFrames, and bring up the link over SCDC with FRL training. Each layer is its own crate — use one, or use them all.

Website: ashlar-display.org · Getting started

The stack

Integration layer      compositor glue · DRM/KMS · source capability query   (planned)
Driver-adjacent layer  FRL link training                                     plumbob · plumbob-async
Protocol layer         CEC · eARC                                            (planned)
Signaling layer        InfoFrames · SCDC                                     cartouche · culvert · culvert-async
Negotiation layer      enumeration · validation · ranking                    concordance
Parsing layer          EDID · DisplayID                                      piaf
Shared types           display vocabulary                                    display-types
Hardware abstraction   SCDC transport · PHY                                  hdmi-hal · hdmi-hal-async · hdmi-hal-i2c-dev

Crates

Crate Layer What it does
display-types Shared types Display capability vocabulary shared across the stack crates.io
piaf Parsing EDID and DisplayID parser crates.io
concordance Negotiation HDMI 2.1 mode negotiation with a full reasoning trace crates.io
cartouche Signaling InfoFrame encoding and decoding (AVI, Audio, HDR Static, HDMI Forum VSI, Dynamic HDR) crates.io
culvert Signaling Typed SCDC register access crates.io
culvert-async Signaling Async companion to culvert crates.io
plumbob Driver-adjacent FRL link training state machine crates.io
plumbob-async Driver-adjacent Async companion to plumbob crates.io
hdmi-hal Hardware abstraction ScdcTransport and HdmiPhy traits crates.io
hdmi-hal-async Hardware abstraction Async companion to hdmi-hal crates.io
hdmi-hal-i2c-dev Hardware abstraction Linux userspace backend over /dev/i2c-N, for development and validation crates.io

Principles

  • Hardware behind traits. SCDC transport and PHY control are injected, so all protocol logic is testable without hardware.
  • Diagnostics are first-class. Structured reasoning traces and typed warnings instead of logs. Rejected candidates are explained; nothing fails silently.
  • Spec-complete, judgment-free lower layers. Parsing and protocol crates implement the spec in full; policy lives in the negotiation layer, and you can override it.
  • no_std where it matters, async companions where they help.
  • No unsafe code. #![forbid(unsafe_code)] across the stack.
  • Verifiable releases. Trusted publishing only, with SLSA provenance.

Beyond HDMI

EDID and DisplayID parsing, the shared display types, and CTA-861 InfoFrame payloads are not HDMI-specific. DisplayPort (and USB-C DisplayPort Alt Mode) support is a direction the stack is designed to grow into.

Licensed under MPL-2.0.

Popular repositories Loading

  1. piaf piaf Public

    A Rust library for decoding binary capability data into a clean, typed model, specialized for EDID.

    Rust 12 1

  2. concordance concordance Public

    An HDMI 2.1 mode negotiation library

    Rust 6

  3. display-types display-types Public

    Shared display capability types for display connection negotiation.

    Rust 1

  4. hdmi-hal hdmi-hal Public

    A hardware abstraction layer library

    Rust 1

  5. hdmi-hal-async hdmi-hal-async Public

    An async hardware abstraction layer library

    Rust 1

  6. culvert culvert Public

    culvert implements the HDMI 2.1 SCDC (Status and Control Data Channel) protocol

    Rust

Repositories

Showing 10 of 14 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…