[PATCH i-g-t v2 00/26] Unigraf integration
Louis Chauvet
louis.chauvet at bootlin.com
Thu Jul 17 18:55:48 UTC 2025
+CC Mark, Khaled
Sorry, I forgot to add you both in copy...
Le 17/07/2025 à 20:46, Louis Chauvet a écrit :
> Hi everyone,
>
> I am excited to share I currently have access to a Unigraf device,
> which I believe could significantly enhance the capabilities within IGT.
> This device has the potential to enable testing of low-level hardware
> features that are currently not covered. Specifically, Unigraf devices can
> assist in testing link training, signal integrity, HDCP, DSC, and more.
>
> It's important to note that the Unigraf SDK is not open-source, and the
> communication protocol with the device is proprietary. As a result, I have
> utilized the libTSI.so library, which can be downloaded from [1]. In this
> RFC, I have not used the official TSI_types.h header because it was
> incompatible with C, so I hardcoded some necessary values. The next
> iteration will use the official TSI_types.h (they plan to fix it for the
> next release).
>
> This RFC is intentionally concise to gather initial feedback from the
> community regarding the integration of a proprietary device into the test
> suite. I plan to expand on this work by adding more features and pushing
> the developments upstream.
>
> I have also started to work on MST testing (hotplug, link training,
> bandwith limitation), but I have a big issue: connector detection is very
> strange when changing MST configurat (MST->SST, sink count...).
>
> If I use the Unigraf GUI or my own C script outside IGT, everything seems
> fine: `watch -n0 modetest -c` update connector status almost immediatly
> after a HDP pulse, never hang and always have the correct result.
>
> But if I do the same in IGT (same script in igt_main), igt have too
> much/not all connectors, and some of them are broken (no EDID property
> for example). I tried to run `watch -n0 modetest -c` in parallel, but
> modetest can:
> - hang
> - only update once igt test is finished.
>
> Do you have any hint about something I missed in IGT to properly enumerate
> connectors? I tried close/open the DRM device, added a lot of delay
> everywhere, emulate plug/unplug... I used kms_wait_for_new_connectors (in
> this series) and for_each_connected_output to get list the connectors.
>
> Looking forward to your thoughts and suggestions!
>
> Thanks,
> Louis Chauvet
>
> Signed-off-by: Louis Chauvet <louis.chauvet at bootlin.com>
> ---
> Changes in v2:
> - Splitted in many commits
> - Add CRC support
> - Link to v1: https://lore.kernel.org/r/20250517-unigraf-integration-v1-1-044acd2133dd@bootlin.com
>
> ---
> Louis Chauvet (26):
> lib/igt_kms: Add a detect timeout value
> lib/igt_kms: Add helper to wait for a specific status on a connector
> lib/igt_kms: Add function to list connected connectors
> lib/igt_kms: Add helper to obtain a connector by its name or MST path
> lib/igt_kms: Add helper to wait for new connectors
> lib/monitor_edids: Add helper functions for using monitor_edid objects
> lib/monitor_edids: Add helper to get an EDID by its name
> lib/monitor_edids: Add helper to print all available EDID names
> [DO NOT MERGE] lib/unigraf: Add used defines for TSI_Types
> lib/unigraf: Add TSI.h
> lib/unigraf: Initial Unigraf support
> lib/igt_kms: Automatically connect unigraf on display require
> lib/unigraf: Introduce device configuration
> lib/unigraf: Introduce role configuration
> lib/unigraf: Introduce input configuration
> lib/unigraf: Add unigraf assert and deassert helpers
> lib/unigraf: Add plug/unplug helpers
> lib/unigraf: Allows sst/mst configuration
> lib/unigraf: Add helpers to read and write edid
> lib/unigraf: Add connector configuration
> lib/unigraf: Add connector autodetection
> lib/unigraf: Add edid configuration
> tests/unigraf: Add basic unigraf tests
> lib/unigraf: Add unigraf CRC grab
> lib/unigraf: Add configuration for CRC usage
> lib/igt_pipe_crc: Add ungiraf crc calculation
>
> lib/igt_core.c | 4 +
> lib/igt_kms.c | 346 ++++++++++++++++++++
> lib/igt_kms.h | 23 ++
> lib/igt_pipe_crc.c | 22 ++
> lib/meson.build | 10 +
> lib/monitor_edids/dp_edids.h | 3 +
> lib/monitor_edids/hdmi_edids.h | 3 +
> lib/monitor_edids/monitor_edids_helper.c | 127 ++++++++
> lib/monitor_edids/monitor_edids_helper.h | 10 +-
> lib/unigraf/TSI.h | 227 +++++++++++++
> lib/unigraf/TSI_types.h | 44 +++
> lib/unigraf/unigraf.c | 530 +++++++++++++++++++++++++++++++
> lib/unigraf/unigraf.h | 168 ++++++++++
> meson.build | 14 +
> tests/meson.build | 4 +
> tests/unigraf/meson.build | 12 +
> tests/unigraf/unigraf_connectivity.c | 126 ++++++++
> 17 files changed, 1672 insertions(+), 1 deletion(-)
> ---
> base-commit: b4e1ccd32037008012d5c41ac6bb04da22082302
> change-id: 20250425-unigraf-integration-11ed330755d5
>
> Best regards,
--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
More information about the igt-dev
mailing list