edid: check first byte descriptor is a DTD

EDID 1.2- allow the first byte descriptor to contain a display
descriptor. EDID 1.3+ require the first byte descriptor to contain
a detailed timing definition describing the display's preferred
(ie, optimal) mode.

Signed-off-by: Simon Ser <[email protected]>
1 file changed
tree: 55e1185a3ca2e45de78efb944533519508ecb9a9
  1. include/
  2. test/
  3. tool/
  4. .editorconfig
  5. .gitlab-ci.yml
  6. cta.c
  7. di-edid-decode.c
  8. dmt-table.c
  9. edid.c
  10. info.c
  11. libdisplay-info.map
  12. LICENSE
  13. log.c
  14. meson.build
  15. README.md
README.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.

Contributing

Open issues and merge requests on the GitLab project.

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 is built using Meson. It has no dependencies.

meson 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 add a new EDID blob or update a diff, use test/edid-decode-diff.sh test/data/<edid>.

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