Commit graph

204 commits

Author SHA1 Message Date
Sebastian Wick
10bece89b2 release: Add release instructions and script
Stolen from wayland and weston. Adjusted slightly to fit our needs.

Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-02-10 17:06:13 +01:00
Sebastian Wick
c88cd24e97 build: Set the library version and SOVERSION
We use semantic versioning but will still have ABI breaks in the 0.x.x
series so we will just bump the SONAME every new minor release.

Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-02-10 15:46:56 +01:00
Sebastian Wick
506925a66b cta: add support for InfoFrame Data Block
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-31 14:58:50 +01:00
Sebastian Wick
23be3830c0 test: Bump edid-decode to newer version
The InfoFrame printing has changed and is compared against in the next
commit.

Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-31 14:50:49 +01:00
Sebastian Wick
d299c4716a edid: Sync On Green Signal only is set if the bit is 0 and not 1
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-30 17:10:40 +01:00
Sebastian Wick
4698004913 cta: Add new data blocks from CTA-861.6
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-30 16:53:47 +01:00
Sebastian Wick
ddb32dafdb cdi-edid-decode/cta: Take interlacing into account when printing VICs
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-30 15:04:06 +01:00
Sebastian Wick
883f469577 test: Document where each EDID blob is from
Also make sure we don't add new blobs without documenting the source
with a check in the CI.

Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-20 18:25:55 +01:00
Simon Ser
0154eaa29c readme: document versioning and stability expectations
References: https://gitlab.freedesktop.org/emersion/libdisplay-info/-/issues/13
Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-17 11:48:41 +01:00
Simon Ser
6cdebd2046 readme: move URL to references list
Makes the plain-text more readable.

Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-17 11:41:33 +01:00
Sebastian Wick
05f9450913 di-edid-decode/cta: align VIC aspect ratio names
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-13 18:57:38 +01:00
Simon Ser
94f4cd406c readme: fix executable path in fuzzing instructions
di-edid-decode was split into multiple files, so the binary
location has changed.

Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-13 14:22:31 +01:00
Simon Ser
1f3913f76d di-edid-decode/cta: print detailed info for VICs
Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-13 02:37:01 +01:00
Simon Ser
b439985324 cta: add VIC table
Add a small Python tool to extract VIC information from the spec.

Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-13 02:37:01 +01:00
Sebastian Wick
5c2255047b cta: add support for YCbCr 4:2:0 Capability Map
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-11 22:02:20 +00:00
Sebastian Wick
f7bd527557 cta: add support for YCbCr 4:2:0 Video
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-11 21:21:27 +01:00
Simon Ser
2ebc104594 cta: add support for speaker allocation data block
Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-11 21:04:48 +01:00
Sebastian Wick
a55e759f7c cta: parse HDR Dynamic Metadata Data Block
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-11 19:11:37 +00:00
Sebastian Wick
6c8d466c03 ci: always build documentation
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-10 15:44:52 +01:00
Sebastian Wick
c32df33fe7 cta: include stddef.h for size_t
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-10 15:12:09 +01:00
Simon Ser
67b5d67a64 cta: add support for VESA DDDB
Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-10 12:23:38 +00:00
Simon Ser
fc13fb4d53 displayid: add support for tiled display topology data block
Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-09 22:49:01 +00:00
Simon Ser
3b83980dde Add code coverage configuration file
Exclude build/ from code coverage, otherwise build/pnp-id-table.c
is included in the stats. Also add subprojects/ which is added by
default by Meson unless there is a custom config file.

Signed-off-by: Simon Ser <contact@emersion.fr>
2023-01-07 13:47:28 +01:00
Sebastian Wick
4a8684d1b0 edid: add support for CVT timing code descriptors
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2023-01-04 02:12:22 +01:00
Simon Ser
f7160730cc Introduce di_cvt_compute()
Same as di_gtf_compute(), but for CVT.

Code imported from edid-decode, fixed up [1] [2], edited for
code style and extended to return all output parameters.

Will help with CVT timing code descriptors in EDID [3].

[1]: https://lore.kernel.org/linux-media/20221005121221.14882-1-contact@emersion.fr/T/#u
[2]: https://lore.kernel.org/linux-media/20221028142405.81894-1-contact@emersion.fr/T/#u
[3]: https://gitlab.freedesktop.org/emersion/libdisplay-info/-/merge_requests/93

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-12-16 15:37:38 +01:00
Sebastian Wick
8fbc366c7c cta: parse short audio descriptors
Co-authored-by: Simon Ser <contact@emersion.fr>
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
2022-12-14 15:19:27 +01:00
Joshua Ashton
c995305a69 info: Use memory_stream_cleanup in di_info_get_serial
Signed-off-by: Joshua Ashton <joshua@froggi.es>
2022-11-25 12:15:14 +00:00
Joshua Ashton
12923cc3bc info: Use memory-stream API for di_info_parse_edid
Avoids a bunch of duplicated code here.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2022-11-25 12:15:14 +00:00
Joshua Ashton
c63ca40ef7 memory-stream: Add memory_stream_cleanup helper
Signed-off-by: Joshua Ashton <joshua@froggi.es>
2022-11-25 12:15:14 +00:00
Joshua Ashton
a10c478558 memory-stream: Factor out memory-stream related code to a new file
Signed-off-by: Joshua Ashton <joshua@froggi.es>
2022-11-25 12:15:14 +00:00
Simon Ser
b21fdb3a0d ci: pin Alpine version
This prevents the Alpine image from being upgraded to a new major
version when re-generated. ci-templates defaults FDO_BASE_IMAGE to
alpine:latest.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-24 10:27:13 +01:00
Simon Ser
4e0fd2c979 di-edid-decode: print DMT reduced blanking flag
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-23 15:30:33 +01:00
Simon Ser
7d5003c5ac dmt: add reduced_blanking field
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-23 15:30:33 +01:00
Simon Ser
671c8d78d3 di-edid-decode: print full established timings III
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-23 15:30:33 +01:00
Simon Ser
5b81e0b578 di-edid-decode: add special case for 16:10 aspect ratio
The mathematical aspect ratio is 8:5 but people use 16:10.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-23 15:30:33 +01:00
Simon Ser
6b8bdb5b3b ci: upgrade edid-decode
Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-23 15:30:28 +01:00
Simon Ser
7289c6ea59 ci: upgrade to Alpine 3.17
This gives us the hwdata package.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-23 14:23:59 +00:00
Simon Ser
85d6a3a1db test: fix default path for di-edid-decode
Since a001cab480 ("build: split off di-edid-decode into separate
file"), di-edid-decode is located in a subdirectory.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-23 11:12:24 +01:00
Simon Ser
a001cab480 build: split off di-edid-decode into separate file
Avoids repeating the directory name.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-21 15:41:07 +01:00
Simon Ser
448046519e build: override dependency for subproject usage
Makes it easier to use libdisplay-info as a Meson subproject.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-21 14:10:21 +00:00
Simon Ser
e19ee5d1bc build: add gen-test-data run target
This makes it easier to re-generate the test diffs. The build system
will properly set DI_EDID_DECODE/DI_EDID_PRINT (and will rebuild
these tools if they are out-of-date).

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-11-17 22:10:08 +01:00
Pekka Paalanen
ac857e8985 info: use PNP ID database for manufacturer names
The three character PNP ID is a key to manufacturer name database. It
may be desirable to report the manufacturer's real name than just PNP ID
which can be misleading, e.g. MSI refers to Microstep and not MSI GmbH.

This builds the PNP ID database into libdisplay-info to avoid having to
find and parse files at runtime.

tool/gen-search-table.py started as a copy of Wayland 1.21.0's
src/embed.py and took influence from
10945c4ed8/conv.py
However, our script parses the text file shipped in hwdata package in
Debian (and presumably other distributions) rather than the original
CSV.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-11-11 13:09:18 +02:00
Pekka Paalanen
3c675db02f ci: install hwdata
This is needed for the following patch to find pnp.ids.

This is not available in the Alpine release we are using right now.

That --disable-blacklist works around the error:
install: unrecognized option: T
BusyBox v1.35.0 (2022-08-01 15:14:44 UTC) multi-call binary.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-11-09 14:18:24 +02:00
Pekka Paalanen
89f8eecc11 editorconfig: add python rules
This seems to be what the existing python file uses, and trying to write
python when your editor is constantly resetting its settings according
to the previous "incorrect" editorconfig was infuriating.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-11-09 14:18:24 +02:00
Pekka Paalanen
00b446d5db test: make edid-decode-diff.sh easier to run
Having to define just DI_EDID_DECODE was tolerable when REF_EDID_DECODE
does not need setting, but now that there are two built tools, it is
getting inconvenient.

Change the defaults to match the build directory structure and add a new
overridable for the build directory.

Now I only need to set BUILDDIR for this to work. My build dirs are
completely elsewhere, but if someone uses the usual 'meson build'
incantation, the default value for BUILDDIR should be fine.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-11-09 14:18:04 +02:00
Pekka Paalanen
f70fa58441 test: add high-level API test
This new test exercises all existing high-level API to make sure the
output does not change unexpectedly.

Unlike with edid-decode tests, these new print tests do not have an
externally defined groundtruth. They are only to detect changes and
exercise code paths.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-11-09 14:18:04 +02:00
Pekka Paalanen
b3231b85dd info: add getters for make, model and serial
The functionality of these new high-level functions as implemented here
follows what Weston 11.0's ad hoc EDID parser extracted. There are
differences to Weston though:
- get_model() falls back to the numeric model field
- unusual characters are escaped as hex rather than replaced with dash

The documentation of the new functions allows to change the behavior of
get_model and get_make to e.g. convert PNP ID to a company name. The
notes about UTF-8 allow us to make use of UTF-8 fields if such appear
useful in the future.

Weston's ad hoc parser shall be replaced with this. After another API
addition, the high-level API semantics will match what Weston expects.

The memory_stream stuff is for convenience and will see more complex
use in the future.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-11-09 14:14:27 +02:00
Simon Ser
4af5b96140 di-edid-decode/cta: round VESA transfer characteristics
Fixes the differences with edid-decode.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-10-20 08:07:22 +00:00
Simon Ser
b7d0793a03 edid-decode/cta: align data block names with edid-decode
We were diverging here.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-10-20 08:07:22 +00:00
Simon Ser
c930f13457 test: add custom-uncommon-cta-vesa
This is a hand-crafted EDID taken from edid-decode (test/cta-vesa.test).
It contains uncommon blocks: VESA Display Transfer Characteristics Data
Block and VESA Video Display Device Data Block in the CTA-861 extension.

While it's not as good as a real-world EDID, it can still improve our
test coverage and ensure we behave like edid-decode.

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-10-20 08:07:22 +00:00