Find a file
Pekka Paalanen 5d2af9a882 info: add di_info_get_default_gamma()
Wayland compositors may be interested in this.

DI-EXT is ignored, because libdisplay-info does not parse it yet.

EDID Color Point Descriptors are ignored, because they have not been
found in shipped products.

https://github.com/linuxhw/EDID.git database contains 373 samples for
which edid-decode complains:
  Basic Display Parameters & Features: sRGB is signaled, but the gamma != 2.2.

Therefore I assume that the sRGB flag is more correct when set.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2024-06-12 16:26:33 +03:00
di-edid-decode cta: Add support for the HDMI Audio Data Block 2024-05-29 11:29:37 +02:00
include info: add di_info_get_default_gamma() 2024-06-12 16:26:33 +03:00
subprojects build: build edid-decode as subproject 2024-06-07 17:05:47 +02:00
test test: di_info_get_supported_signal_colorimetry() 2024-06-12 16:26:33 +03:00
tool tool: fix redirect bashism in dump-i2c.sh 2023-06-28 12:12:04 +03:00
.editorconfig editorconfig: bump max line length to 100 chars 2023-05-11 08:58:10 +00:00
.gitlab-ci.yml build: build edid-decode as subproject 2024-06-07 17:05:47 +02:00
cta-vic-table.c cta: add VIC table 2023-01-13 02:37:01 +01:00
cta.c cta: HDMI Audio: Add a failure when NonMixed is supported without MS 2024-06-06 10:58:48 +02:00
cvt.c Introduce di_cvt_compute() 2022-12-16 15:37:38 +01:00
displayid.c displayid: add support for type III timings 2024-03-21 17:15:27 +01:00
dmt-table.c dmt: add reduced_blanking field 2022-11-23 15:30:33 +01:00
edid.c edid: Record failures instead of aborting parsing 2024-05-08 12:43:20 +02:00
gcovr.cfg Add code coverage configuration file 2023-01-07 13:47:28 +01:00
gtf.c Introduce di_gtf_compute() 2022-09-29 11:50:09 +00:00
info.c info: add di_info_get_default_gamma() 2024-06-12 16:26:33 +03:00
libdisplay-info.map build: set symbol visibility 2022-06-14 11:40:07 +00:00
LICENSE Initial commit 2022-03-24 01:49:00 +01:00
log.c info: introduce di_logger 2022-08-04 08:40:36 +02:00
memory-stream.c memory-stream: Add memory_stream_cleanup helper 2022-11-25 12:15:14 +00:00
meson.build build: build edid-decode as subproject 2024-06-07 17:05:47 +02:00
README.md readme: update test suite instructions 2023-03-02 19:43:44 +01:00
release.sh release: Add release instructions and script 2023-02-10 17:06:13 +01:00
releasing.md release: Add release instructions and script 2023-02-10 17:06:13 +01:00

libdisplay-info

EDID and DisplayID library.

Goals:

  • Provide a set of high-level, easy-to-use, opinionated functions as well as low-level functions to access detailed information.
  • Simplicity and correctness over performance and resource usage.
  • Well-tested and fuzzed.

Documentation is available on the website.

Using

The public API headers are categorised as either high-level or low-level API as per the comments in the header files. Users of libdisplay-info should prefer high-level API over low-level API when possible.

If high-level API lacks needed features, please propose additions to the high-level API upstream before using low-level API to get what you need. If the additions are rejected, you are welcome to use the low-level API.

This policy is aimed to propagate best practises when interpreting EDID and DisplayID information which can often be cryptic or even inconsistent.

libdisplay-info uses semantic versioning. The public API is not yet stable.

Contributing

Open issues and merge requests on the GitLab project. Discuss and ask questions in the #wayland IRC channel on OFTC.

In general, the Wayland contribution guidelines should be followed. In particular, each commit must carry a Signed-off-by tag to denote that the submitter adheres to the Developer Certificate of Origin 1.1. This project follows the freedesktop.org Contributor Covenant.

Building

libdisplay-info has the following dependencies:

  • hwdata for the PNP ID database used at build-time only.

libdisplay-info is built using Meson:

meson setup build/
ninja -C build/

Testing

The low-level EDID library is tested against edid-decode. test/data/ contains a small collection of EDID blobs and diffs between upstream edid-decode and our di-edid-decode clone. Our CI ensures the diffs are up-to-date. A patch should never make the diffs grow larger. To re-generate the test data, build edid-decode at the Git revision mentioned in .gitlab-ci.yml, put the executable in PATH, and run ninja -C build/ gen-test-data.

The latest code coverage report is available on GitLab CI.

Fuzzing

To fuzz libdisplay-info with AFL, the library needs to be instrumented:

CC=afl-gcc meson build/
ninja -C build/
afl-fuzz -i test/data/ -o afl/ build/di-edid-decode/di-edid-decode