1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// SPDX-FileCopyrightText: (c) 2026 Joel Winarske
// SPDX-License-Identifier: MIT
//! Display characterisation and colour handling.
//!
//! What a connected display can do, and what has to happen to pixels before
//! they reach it. Two halves that mostly do not talk to each other.
//!
//! # Finding the display
//!
//! - [`ScanoutTarget`] — the connected output and the CRTC and primary plane
//! that drive it, which is the pair everything downstream needs and the one
//! thing `crtcs().first()` reliably gets wrong on real hardware.
//! - [`query_connector_modes`] — what each connector offers, with
//! [`Probe`] deciding whether to ask the sink or trust the cache.
//! - [`ConnectorCapabilities`] and [`CrtcCapabilities`] — the properties this
//! pipe actually exposes, so a caller writes what the driver has rather than
//! what the spec allows.
//! - [`HotplugMonitor`] — the kernel's own uevent stream, behind the `hotplug`
//! feature.
//! - [`DriverProfile`] — device capabilities, probed and never inferred from
//! the driver's name.
//!
//! # Getting the pixels right
//!
//! - [`ToneMapper`] — SDR to HDR and back, over a [`ToneMapCurve`]. Colour
//! maths has too many plausible readings for a paper derivation to be worth
//! much, so its answers are diffed against the reference's own, vector by
//! vector.
//! - [`CrtcColorPipeline`] — the CRTC's degamma, CTM and gamma stages. Each
//! refuses on its own rather than the pipeline refusing whole, because
//! partial pipelines are the common case: of 4,129 CRTCs surveyed, 848 have
//! no colour stage at all and three more shapes sit between that and the
//! full three.
//! - [`HdrSourceMetadata`] and [`HdrMetadataCache`] — the CTA-861.3 blob a
//! sink needs to switch into HDR, and the cache that stops it being rewritten
//! every frame. Its green/blue/red primary ordering and tail padding are both
//! invisible on screen and both change the bytes, so this is diffed against
//! the reference too, over twelve vectors.
//! - [`edid`] — what the sink says about itself, behind the `edid` feature.
//!
//! # Features
//!
//! `edid` is off by default: `libdisplay-info-sys` links a system library, and
//! the cross lanes have no sysroot for it. Everything else here — the tone
//! mapper and colour curves that downstream crates want — builds without it.
pub use ;
pub use ;
pub use ;
pub use HdrMetadataCache;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;