5d2af9a882
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> |
||
---|---|---|
di-edid-decode | ||
include | ||
subprojects | ||
test | ||
tool | ||
.editorconfig | ||
.gitlab-ci.yml | ||
cta-vic-table.c | ||
cta.c | ||
cvt.c | ||
displayid.c | ||
dmt-table.c | ||
edid.c | ||
gcovr.cfg | ||
gtf.c | ||
info.c | ||
libdisplay-info.map | ||
LICENSE | ||
log.c | ||
memory-stream.c | ||
meson.build | ||
README.md | ||
release.sh | ||
releasing.md |
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