[PATCH i-g-t v2 00/39] tests/chamelium: Integrate the chamelium v3
Louis Chauvet
louis.chauvet at bootlin.com
Tue Jul 9 15:47:05 UTC 2024
Le 09/07/24 - 17:34, Louis Chauvet a écrit :
> Hi all,
>
> This patch series introduces a new wrapper for the Chameleon v3 board, a
> testing tool used primarily for Chromebooks, but also by community members
> to increase test coverage of graphic devices. The Chameleon v3 is an
> upgrade from its predecessor, with the ability to emulate 2 HDMI and 2
> DisplayPort devices, including MST devices.
>
> The board can read and analyze any stream on the DisplayPort and HDMI
> cables, and even take captures, making it an ideal tool for testing
> hardware, driver, and user space behavior in specific situations, such as
> screen hotplugging and multiple MST screens. However, the changes between
> the v2 and v3, such as the addition of MST support and the removal of CRC
> for screen captures, would require significant modifications to the
> existing tests and wrappers.
>
> To avoid this complexity and ensure that the Chameleon v3 is fully
> supported and the v2 is not broken, I wrote a new wrapper with
> simplicity and ease of use in mind. The Chameleon v3 wrapper should only
> manage the Chameleon itself, without the need for DRM displays, EDID
> caching/modifications, or state machines. This approach will make it
> easier for developers to use the Chameleon v3 and contribute to its
> development.
>
> I will use this work to create many new tests (that will come in future
> series):
> - MST managment
> - Tiled displays emulation
> - Suspend/Resume
> - Hardware overlay planes
>
> This series can be divided in multiple parts:
> - PATCH 1-5: Adding few helpers to igt_kms
> - PATCH 6-10: Add few helpers to minotor_edid
> - PATCH 10-14: Split chamelium v2 and chamelium v3 support
> - PATCH 15-18: Create a basic test listing available port on the
> chamelium
> - PATCH 19-27: Add port mapping configuration and autodetection
> - PATCH 28-38: Add basic EDID tests
> - PATCH 39: Add documentation
>
> As most of the series is preparation work, I sent all the patches today,
> but if required I can split the series in multiple smallest series.
>
> ---
> Changes in v2:
> - Mainly splitting and cleaning work since the RFC,
> EDITME: describe what is new in this series revision.
> - EDITME: use bulletpoints and terse descriptions.
> - Link to v1: https://lore.kernel.org/r/20240605-dev-remove-static-ports-v1-0-665f25b7a4db@bootlin.com
Ooops, I forgot to edit this part, sorry
Changes in v2:
- Since the RFC, a lot of work has been done to split commits, document
functions, configuration format and cleanup
- Changed the autodetection algorithm to make it a bit faster and less
complex
- Introduce new setting to plug specific port during "normal" tests
- Solved build failures, this should be bissectable
> ---
> Louis Chauvet (39):
> 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 function to get valid pipe for specific output
> 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
> lib/monitor_edids: Fix missing names in some monitor EDID
> lib/monitor_edids: Add new EDID for HDMI 4k
> tests/chamelium: Extract Chamelium v2 tests into a separate directory
> lib/chamelium/v2: Extract chamelium v2 wrapper into its own directory
> lib/chamelium/v2: Modify build options to separate Chamelium v2 and v3
> lib/chamelium/v3: Introduce the foundation for the Chamelium v3 wrapper
> lib/chamelium/v3: Introduce initialization and cleanup of Chamelium-related structures
> lib/chamelium/v3: Add method to discover Chamelium ports
> lib/chamelium/v3: Implement method to retrieve Chamelium port names
> tests/chamelium/v3: Implement a basic Chamelium v3 accessibility test
> lib/chamelium/v3: Implement Chamelium reinitialization via Reset RPC call
> lib/chamelium/v3: Implement methods for plugging Chamelium ports
> lib/chamelium/v3: Implement methods for managing Chamelium EDID
> lib/chamelium/v3: Implement Chamelium configuration parsing
> lib/chamelium/v3: Log port mapping for debugging purposes
> lib/chamelium/v3: Introduce new configuration format for MST support
> lib/chamelium/v3: Provide access to port_mapping via method call
> lib/chamelium/v3: Implement helper function to get port mapping from Chameleon port id
> lib/chamelium/v3: Implement helper function to retrieve connector from port mapping
> lib/chamelium/v3: Plug specific ports for all tests
> lib/chamelium/v3: Implement Chamelium port autodetection algorithm
> lib/chamelium/v3: Add save option to avoid doing autodetection every time
> tests/chamelium/v3: Implement basic EDID handling test
> tests/chamelium/v3: Implement 4K EDID stress test
> tests/chamelium/v3: Implement non-4K EDID stress test
> lib/chamelium/v3: Implement method to discover video signal status
> tests/chamelium/v3: Implement test for DRM device resolution
> lib/chamelium/v3: Implement hot plug toggle scheduling method
> tests/chamelium/v3: Add test for display change detection during sleep
> tests/chamelium/v3: Add MST EDID reading test
> docs: Add Chamelium v3
>
> docs/chamelium.txt | 90 +-
> docs/testplan/meson.build | 4 +-
> lib/{ => chamelium/v2}/igt_chamelium.c | 2 +-
> lib/{ => chamelium/v2}/igt_chamelium.h | 0
> lib/{ => chamelium/v2}/igt_chamelium_stream.c | 2 +-
> lib/{ => chamelium/v2}/igt_chamelium_stream.h | 0
> lib/chamelium/v3/igt_chamelium.c | 1191 +++++++++++++++++++++++
> lib/chamelium/v3/igt_chamelium.h | 89 ++
> lib/igt.h | 6 +-
> lib/igt_core.c | 3 +
> lib/igt_kms.c | 287 +++++-
> lib/igt_kms.h | 17 +
> lib/meson.build | 16 +-
> lib/monitor_edids/dp_edids.h | 3 +
> lib/monitor_edids/hdmi_edids.h | 27 +-
> lib/monitor_edids/monitor_edids_helper.c | 92 +-
> lib/monitor_edids/monitor_edids_helper.h | 10 +-
> lib/tests/meson.build | 8 +-
> meson.build | 45 +-
> meson_options.txt | 8 +-
> tests/chamelium/{ => v2}/kms_chamelium_audio.c | 0
> tests/chamelium/{ => v2}/kms_chamelium_color.c | 0
> tests/chamelium/{ => v2}/kms_chamelium_edid.c | 2 +-
> tests/chamelium/{ => v2}/kms_chamelium_frames.c | 0
> tests/chamelium/{ => v2}/kms_chamelium_helper.c | 0
> tests/chamelium/{ => v2}/kms_chamelium_helper.h | 0
> tests/chamelium/{ => v2}/kms_chamelium_hpd.c | 0
> tests/chamelium/v3/kms_chamelium_v3_basic.c | 30 +
> tests/chamelium/v3/kms_chamelium_v3_edid.c | 419 ++++++++
> tests/kms_color_helper.h | 2 +-
> tests/kms_feature_discovery.c | 6 +-
> tests/kms_tiled_display.c | 6 +-
> tests/meson.build | 45 +-
> 33 files changed, 2348 insertions(+), 62 deletions(-)
> ---
> base-commit: 9683de1314f7fb9204fc4d8baf193a52adda9b59
> change-id: 20240522-dev-remove-static-ports-9382ffbbf146
>
> Best regards,
> --
> Louis Chauvet <louis.chauvet at bootlin.com>
>
More information about the igt-dev
mailing list