Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions src/crates.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

| Crate | Layer | What it does | Docs |
|------------------------------------------------------------------------|----------------------|---------------------------------------------------------------------------------------|------------------------------------------------------|
| [display-types](https://github.com/DracoWhitefire/display-types) | Shared types | Display capability vocabulary shared across the stack | [docs.rs](https://docs.rs/display-types) |
| [piaf](https://github.com/DracoWhitefire/piaf) | Parsing | EDID and DisplayID parser | [docs.rs](https://docs.rs/piaf) |
| [concordance](https://github.com/DracoWhitefire/concordance) | Negotiation | HDMI 2.1 mode negotiation with a full reasoning trace | [docs.rs](https://docs.rs/concordance) |
| [cartouche](https://github.com/DracoWhitefire/cartouche) | Signaling | InfoFrame encoding and decoding (AVI, Audio, HDR Static, HDMI Forum VSI, Dynamic HDR) | [docs.rs](https://docs.rs/cartouche) |
| [culvert](https://github.com/DracoWhitefire/culvert) | Signaling | Typed SCDC register access | [docs.rs](https://docs.rs/culvert) |
| [culvert-async](https://github.com/DracoWhitefire/culvert-async) | Signaling | Async companion to culvert | [docs.rs](https://docs.rs/culvert-async) |
| [plumbob](https://github.com/DracoWhitefire/plumbob) | Driver-adjacent | FRL link training state machine | [docs.rs](https://docs.rs/plumbob) |
| [plumbob-async](https://github.com/DracoWhitefire/plumbob-async) | Driver-adjacent | Async companion to plumbob | [docs.rs](https://docs.rs/plumbob-async) |
| [hdmi-hal](https://github.com/DracoWhitefire/hdmi-hal) | Hardware abstraction | `ScdcTransport` and `HdmiPhy` traits | [docs.rs](https://docs.rs/hdmi-hal) |
| [hdmi-hal-async](https://github.com/DracoWhitefire/hdmi-hal-async) | Hardware abstraction | Async companion to hdmi-hal | [docs.rs](https://docs.rs/hdmi-hal-async) |
| [hdmi-hal-i2c-dev](https://github.com/DracoWhitefire/hdmi-hal-i2c-dev) | Hardware abstraction | Linux userspace backend over `/dev/i2c-N`, for development and validation | [docs.rs](https://docs.rs/hdmi-hal-i2c-dev) |
| [display-types](https://github.com/ashlar-display/display-types) | Shared types | Display capability vocabulary shared across the stack | [docs.rs](https://docs.rs/display-types) |
| [piaf](https://github.com/ashlar-display/piaf) | Parsing | EDID and DisplayID parser | [docs.rs](https://docs.rs/piaf) |
| [concordance](https://github.com/ashlar-display/concordance) | Negotiation | HDMI 2.1 mode negotiation with a full reasoning trace | [docs.rs](https://docs.rs/concordance) |
| [cartouche](https://github.com/ashlar-display/cartouche) | Signaling | InfoFrame encoding and decoding (AVI, Audio, HDR Static, HDMI Forum VSI, Dynamic HDR) | [docs.rs](https://docs.rs/cartouche) |
| [culvert](https://github.com/ashlar-display/culvert) | Signaling | Typed SCDC register access | [docs.rs](https://docs.rs/culvert) |
| [culvert-async](https://github.com/ashlar-display/culvert-async) | Signaling | Async companion to culvert | [docs.rs](https://docs.rs/culvert-async) |
| [plumbob](https://github.com/ashlar-display/plumbob) | Driver-adjacent | FRL link training state machine | [docs.rs](https://docs.rs/plumbob) |
| [plumbob-async](https://github.com/ashlar-display/plumbob-async) | Driver-adjacent | Async companion to plumbob | [docs.rs](https://docs.rs/plumbob-async) |
| [hdmi-hal](https://github.com/ashlar-display/hdmi-hal) | Hardware abstraction | `ScdcTransport` and `HdmiPhy` traits | [docs.rs](https://docs.rs/hdmi-hal) |
| [hdmi-hal-async](https://github.com/ashlar-display/hdmi-hal-async) | Hardware abstraction | Async companion to hdmi-hal | [docs.rs](https://docs.rs/hdmi-hal-async) |
| [hdmi-hal-i2c-dev](https://github.com/ashlar-display/hdmi-hal-i2c-dev) | Hardware abstraction | Linux userspace backend over `/dev/i2c-N`, for development and validation | [docs.rs](https://docs.rs/hdmi-hal-i2c-dev) |
| [ashlar](https://github.com/ashlar-display/ashlar) | — | Facade: one feature per crate above, re-exported under its own name | [docs.rs](https://docs.rs/ashlar) |

Current versions are on [crates.io](https://crates.io/keywords/ashlar); each crate's
Expand Down
20 changes: 10 additions & 10 deletions src/stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,28 +38,28 @@ a reasoning trace explaining why.
## End-to-End Data Flow
```mermaid
flowchart TD
A[Raw EDID bytes] --> B["piaf \nParse EDID / DisplayID"]
A[Raw EDID bytes] --> B["piaf <br> Parse EDID / DisplayID"]
B --> C[piaf::DisplayCapabilities]
C --> C2["Integration Layer\nConvert to SinkCapabilities"]
C2 --> D["concordance \nNegotiation Layer"]
C --> C2["Integration Layer<br>Convert to SinkCapabilities"]
C2 --> D["concordance <br>Negotiation Layer"]

E["SourceCapabilities\ncaller-supplied"] --> D
F["CableCapabilities\ncaller-supplied"] --> D
E["SourceCapabilities<br>caller-supplied"] --> D
F["CableCapabilities<br>caller-supplied"] --> D

D --> G[Iterator of NegotiatedConfig]
G --> H["Select Configuration\n(policy / caller)"]
G --> H["Select Configuration<br>(policy / caller)"]

H --> I["culvert \nSCDC register access"]
I --> I2["plumbob \nFRL state machine"]
H --> I["culvert <br>SCDC register access"]
I --> I2["plumbob <br>FRL state machine"]
I2 --> J{Training Outcome}

J -->|Success| K[Achieved FRL Rate]
J -->|Fallback Required| D

K --> L["cartouche \nInfoFrame Encoding"]
K --> L["cartouche <br>InfoFrame Encoding"]
H --> L
L --> M[Encoded HDMI Packets]
H -.-> LV["cartouche-validate (planned)\nValidate against NegotiatedConfig"]
H -.-> LV["cartouche-validate (planned)<br>Validate against NegotiatedConfig"]
L -.-> LV

M --> N["DRM/KMS Integration (planned)"]
Expand Down
Loading