[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