[Intel-gfx] [RFC i-g-t 0/4] intel-gpu-tools: Add support for the Chamelium
Lyude
lyude at redhat.com
Tue Nov 8 00:05:12 UTC 2016
For a very long time, we've had basically no automated testing coverage of
hotplugging functionality mainly because the only way to test this sort of
thing was to manually plug and unplug the connectors yourself. As well, this
also means we could never automate testing of various DisplayPort quirks, MST,
etc. At long last however, we might finally have a solution for this.
A while back, the ChromeOS guys came up with a device known as the Chamelium:
https://www.chromium.org/chromium-os/testing/chamelium
And actually sent both me and airlied one. This little device allows us to
emulate any kind of display we want, along with simulating hotplugs and various
quirky behaviors with displays. On top of that, it even allows for grabbing the
video input on all of the connectors, manual control of the i2c line for all of
the display connectors, etc.
With this patch series, we can now actually write intel-gpu-tools tests with
this gadget!
However, there's a couple of things that haven't been done yet and need to be
kept in mind:
- The current fpga_tio board that the Chamelium uses unfortunately doesn't
have native support for DisplayPort MST on it's DisplayPort receivers (they
only go up to version 1.1a of the spec). While annoying testing MST with
this isn't impossible, as we can implement all of the hotplugging paths we
care about by manually controlling the i2c line and emulating an MST
display. IMO, this is really the biggest thing we need coverage for anyway.
This hasn't been done yet, but it's definitely on my to-do list.
- While writing this patch series, I found that quite a few of the RPC calls
for chameleond don't work as expected. For instance, I have had absolutely
no luck getting CRCs from any of the display types that the chamelium
supports. This isn't a huge deal though, since we usually just use the
native CRC read back on the GPU anyway.
- Among other things that are broken with the chameleon, video signal
detection for DisplayPort is one of them. After the first plug/unplug cycle,
the DisplayPort receiver gets stuck and gives the wrong results for
WaitForInputStable. Luckily I've already got a fix I'll be submitting to the
ChromeOS guys when I get around to setting up their homebrew git tools:
https://github.com/Lyude/chameleond/tree/wip/chameleon-fixes
For now, expect the dp-display tests to fail without those patches.
Lyude (4):
igt_aux: Add igt_skip_without_suspend_support()
igt_aux: Add igt_set_autoresume_delay()
igt_aux: Add some list helpers from wayland
Add support for hotplug testing with the Chamelium
configure.ac | 13 +
lib/Makefile.am | 10 +-
lib/igt.h | 1 +
lib/igt_aux.c | 94 ++++++++
lib/igt_aux.h | 41 ++++
lib/igt_chamelium.c | 628 +++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_chamelium.h | 77 ++++++
lib/igt_kms.c | 107 +++++++++
lib/igt_kms.h | 13 +-
scripts/run-tests.sh | 4 +-
tests/Makefile.am | 5 +-
tests/Makefile.sources | 1 +
tests/chamelium.c | 549 ++++++++++++++++++++++++++++++++++++++++++
13 files changed, 1538 insertions(+), 5 deletions(-)
create mode 100644 lib/igt_chamelium.c
create mode 100644 lib/igt_chamelium.h
create mode 100644 tests/chamelium.c
--
2.7.4
More information about the Intel-gfx
mailing list