[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