From: Louis Chauvet <louis.chauvet@bootlin.com>
To: igt-dev@lists.freedesktop.org, ihf@google.com,
markyacoub@google.com, thomas.petazzoni@bootlin.com,
jeremie.dautheribes@bootlin.com
Cc: Louis Chauvet <louis.chauvet@bootlin.com>
Subject: [PATCH i-g-t v2 00/39] tests/chamelium: Integrate the chamelium v3
Date: Tue, 09 Jul 2024 17:34:16 +0200 [thread overview]
Message-ID: <20240709-dev-remove-static-ports-v2-0-5adfc6985778@bootlin.com> (raw)
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
---
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@bootlin.com>
next reply other threads:[~2024-07-09 15:34 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-09 15:34 Louis Chauvet [this message]
2024-07-09 15:34 ` [PATCH i-g-t v2 01/39] lib/igt_kms: Add a detect timeout value Louis Chauvet
2024-08-27 7:51 ` Kamil Konieczny
2024-08-28 14:31 ` Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 02/39] lib/igt_kms: Add helper to wait for a specific status on a connector Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 03/39] lib/igt_kms: Add function to list connected connectors Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 04/39] lib/igt_kms: Add helper to obtain a connector by its name or MST path Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 05/39] lib/igt_kms: Add function to get valid pipe for specific output Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 06/39] lib/monitor_edids: Add helper functions for using monitor_edid objects Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 07/39] lib/monitor_edids: Add helper to get an EDID by its name Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 08/39] lib/monitor_edids: Add helper to print all available EDID names Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 09/39] lib/monitor_edids: Fix missing names in some monitor EDID Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 10/39] lib/monitor_edids: Add new EDID for HDMI 4k Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 11/39] tests/chamelium: Extract Chamelium v2 tests into a separate directory Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 12/39] lib/chamelium/v2: Extract chamelium v2 wrapper into its own directory Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 13/39] lib/chamelium/v2: Modify build options to separate Chamelium v2 and v3 Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 14/39] lib/chamelium/v3: Introduce the foundation for the Chamelium v3 wrapper Louis Chauvet
2024-08-26 9:22 ` Vignesh Raman
2024-08-28 17:26 ` Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 15/39] lib/chamelium/v3: Introduce initialization and cleanup of Chamelium-related structures Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 16/39] lib/chamelium/v3: Add method to discover Chamelium ports Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 17/39] lib/chamelium/v3: Implement method to retrieve Chamelium port names Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 18/39] tests/chamelium/v3: Implement a basic Chamelium v3 accessibility test Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 19/39] lib/chamelium/v3: Implement Chamelium reinitialization via Reset RPC call Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 20/39] lib/chamelium/v3: Implement methods for plugging Chamelium ports Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 21/39] lib/chamelium/v3: Implement methods for managing Chamelium EDID Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 22/39] lib/chamelium/v3: Implement Chamelium configuration parsing Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 23/39] lib/chamelium/v3: Log port mapping for debugging purposes Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 24/39] lib/chamelium/v3: Introduce new configuration format for MST support Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 25/39] lib/chamelium/v3: Provide access to port_mapping via method call Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 26/39] lib/chamelium/v3: Implement helper function to get port mapping from Chameleon port id Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 27/39] lib/chamelium/v3: Implement helper function to retrieve connector from port mapping Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 28/39] lib/chamelium/v3: Plug specific ports for all tests Louis Chauvet
2024-08-26 9:26 ` Vignesh Raman
2024-08-28 17:26 ` Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 29/39] lib/chamelium/v3: Implement Chamelium port autodetection algorithm Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 30/39] lib/chamelium/v3: Add save option to avoid doing autodetection every time Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 31/39] tests/chamelium/v3: Implement basic EDID handling test Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 32/39] tests/chamelium/v3: Implement 4K EDID stress test Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 33/39] tests/chamelium/v3: Implement non-4K " Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 34/39] lib/chamelium/v3: Implement method to discover video signal status Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 35/39] tests/chamelium/v3: Implement test for DRM device resolution Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 36/39] lib/chamelium/v3: Implement hot plug toggle scheduling method Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 37/39] tests/chamelium/v3: Add test for display change detection during sleep Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 38/39] tests/chamelium/v3: Add MST EDID reading test Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 39/39] docs: Add Chamelium v3 Louis Chauvet
2024-07-09 15:47 ` [PATCH i-g-t v2 00/39] tests/chamelium: Integrate the chamelium v3 Louis Chauvet
2024-07-09 16:16 ` ✗ Fi.CI.BUILD: failure for " Patchwork
2024-07-10 9:48 ` Louis Chauvet
2024-08-26 9:30 ` Vignesh Raman
2024-07-09 16:21 ` ✗ GitLab.Pipeline: warning " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240709-dev-remove-static-ports-v2-0-5adfc6985778@bootlin.com \
--to=louis.chauvet@bootlin.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=ihf@google.com \
--cc=jeremie.dautheribes@bootlin.com \
--cc=markyacoub@google.com \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox