tests/kms_chamelium: add dp-audio test
Subsystems (2)
v7 cover tests/kms_chamelium: add dp-audio test
Changes in v7: addressed Martin's comments
Thanks for the detailed review! I've tried splitting some commits, let me know if more splitting is needed.
Simon Ser (8):
tests/kms_chamelium: add dp-audio test tests/kms_chamelium: capture audio data in real-time lib/igt_{alsa,audio}: improve logging
lib/igt_alsa: use variables to improve readability tests/kms_chamelium: test we receive a signal from both audio channels tests/kms_chamelium: test audio channels are not mixed up tests/kms_chamelium: run audio test with multiple sampling rates
HAX: add dp-audio test to fast-feedback
docs/audio.txt | 45 -- docs/chamelium.txt | 34 +- lib/igt.h | 1 + lib/igt_alsa.c | 83 +++- lib/igt_alsa.h | 1 + lib/igt_audio.c | 428 +++++++++++++------ lib/igt_audio.h | 19 +- lib/igt_aux.c | 31 ++ lib/igt_aux.h | 1 + lib/igt_chamelium.c | 161 ++++++++ lib/igt_chamelium.h | 17 + lib/igt_chamelium_stream.c | 572 ++++++++++++++++++++++++++ lib/igt_chamelium_stream.h | 50 +++ lib/meson.build | 5 +- meson.build | 52 +-- meson_options.txt | 6 - tests/audio.c | 193 --------- tests/intel-ci/fast-feedback.testlist | 1 + tests/kms_chamelium.c | 355 +++++++++++++++- tests/meson.build | 9 +- 20 files changed, 1614 insertions(+), 450 deletions(-) delete mode 100644 docs/audio.txt create mode 100644 lib/igt_chamelium_stream.c create mode 100644 lib/igt_chamelium_stream.h delete mode 100644 tests/audio.c
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH v7 1/8 tests/kms_chamelium: add dp-audio test
This new test ensures DisplayPort audio works by using the Chamelium.
It enables the DisplayPort output and sends an audio signal containing a set of frequencies we choose to all HDMI/DisplayPort audio devices. It starts recording audio on the Chamelium device and uses the stream server to retrieve captured audio pages. It then checks that the capture audio signal contains the frequencies we sent, and only those, by computing a FFT.
A new library has been added to libigt to communicate with the stream server. It implements a simple custom TCP protocol.
In case the test fails, a WAV file with the captured data is saved on disk.
Right now the test has a few limitations:
- Only the first channel is checked
- IGT only generates audio with a single sampling rate (48 KHz)
- Audio data is not captured in real-time
These limitations will be lifted in future patches.
PulseAudio must not run during the tests since ALSA is used directly. To ensure this, edit /etc/pulse/client.conf and add autospawn=no. Then run pulseaudio --kill.
This commit deletes the existing audio tests. They weren't run and required an exotic configuration (HDMI audio splitter, dummy HDMI sink and a line-in port on the DUT).
This patch also changes lib/igt_audio to use uint16_t instead of short. The rationale is:
- The standard says a short is at least 16 bit wide, but a short can be larger (in practice it won't happen, but better use types correctly)
- It makes it clearer that the audio format is S16_LE, since "16" is in the type name.
This patch depends on the following Chameleon bugs:
- https://crbug.com/948060
- https://crbug.com/950857
--- docs/audio.txt | 45 --- docs/chamelium.txt | 34 ++- lib/igt.h | 1 + lib/igt_alsa.c | 42 ++- lib/igt_alsa.h | 1 + lib/igt_audio.c | 313 ++++++++++++++------ lib/igt_audio.h | 12 +- lib/igt_aux.c | 31 ++ lib/igt_aux.h | 1 + lib/igt_chamelium.c | 101 +++++++ lib/igt_chamelium.h | 11 + lib/igt_chamelium_stream.c | 589 +++++++++++++++++++++++++++++++++++++ lib/igt_chamelium_stream.h | 52 ++++ lib/meson.build | 5 +- meson.build | 52 ++-- meson_options.txt | 6 - tests/audio.c | 193 ------------ tests/kms_chamelium.c | 276 ++++++++++++++++- tests/meson.build | 9 +- 19 files changed, 1382 insertions(+), 392 deletions(-) delete mode 100644 docs/audio.txt create mode 100644 lib/igt_chamelium_stream.c create mode 100644 lib/igt_chamelium_stream.h delete mode 100644 tests/audio.c
docs/audio.txt deleted +0 -45
@@ -1,45 +0,0 @@ -Audio Support in IGT -==================== - -This document provides information and instructions about audio support in IGT. - -Introduction ------------- - -The audio test is aimed at testing the audio features of display connectors, -such as HDMI. - -Test setup ----------- - -The setup required for the audio test consists of using an HDMI-VGA adapter with -an audio-out 3.5 mm jack to extract the audio from the HDMI interface. -The audio-out jack is connected back to the device-under-test's line-in. - -Depending on the behavior of the adapter, it may be necessary to connect a -ghost VGA dongle to it (in order to emulate a connected display) to enable the -audio output. There are guides available detailing how to build these. - -When executed, the test will automatically send the test audio signal to all -ALSA audio HDMI outputs and record from the standard ALSA capture device. - -Configuration -------------- - -In order to deploy the test, ALSA controls have to be configured to set the -ALSA capture source to line-in. On Intel x86 systems, this can be achieved -with the following calls to the amixer utility: -# amixer sset Line 31 on -# amixer sset "Input Source" Line - -It is then useful to store the ALSA state permanently with the alsactl utility: -# alsactl store - -These settings can be restored with the alsactl utility: -# alsactl restore - -It is desirable to ensure that the alsa-restore and alsa-state systemd services -are enabled to do this job automatically, especially in the case of an -automated testing system: -# systemctl enable alsa-restore -# systemctl enable alsa-state
docs/chamelium.txt +28 -6
@@ -139,6 +139,23 @@ $ make remote-install CHAMELEON_HOST=192.168.72.1 The process requires the Chamelium to be connected to the Internet to succeed. +Audio Capture +------------- + +The Chamelium supports audio capture. IGT tests take advantage of the +Chamelium streaming server to download audio samples from the Chamelium. + +IGT needs direct access to audio devices through ALSA, so PulseAudio needs to +be stopped (otherwise audio tests will automatically get skipped). To make sure +PulseAudio isn't running: + +- Edit /etc/pulse/client.conf and add autospawn=no +- Run `pulseaudio --kill` (if it succeeds, it means PulseAudio was running) +- Make sure a DE that automatically spawns PulseAudio isn't running + +In case a test fails, the raw captured audio files will be dumped in a WAV +file. + Contributing Changes to the Daemon ----------------------------------
@@ -146,10 +163,11 @@ Contributions to the Chamelium daemon, just like any contribution to ChromiumOS, are submitted and reviewed at: https://chromium-review.googlesource.com/ The ChromiumOS project provides an extensive developer guide: -https://www.chromium.org/chromium-os/developer-guide that assumes running within -the ChromiumOS build system. Since this is likely not the case for contributing -to the Chamelium daemon, only the part about uploading changes is relevant: -https://www.chromium.org/chromium-os/developer-guide#TOC-Upload-your-changes-and-get-a-code-review +https://chromium.googlesource.com/chromiumos/docs/+/master/developer_guide.md +It assumes running within the ChromiumOS build system. Since this is likely not +the case for contributing to the Chamelium daemon, only the part about +uploading changes is relevant: +https://chromium.googlesource.com/chromiumos/docs/+/master/developer_guide.md#Upload-your-changes-and-get-a-code-review Most of the process is about using the Gerrit web interface for submitting and having the change reviewed and not forgetting the Change-Id, TEST= and BUG=
@@ -162,7 +180,7 @@ Support for the Chamelium platform in IGT is found in the following places: * lib/igt_chamelium.c: library with Chamelium-related helpers * tests/kms_chamelium.c: sub-tests using the Chamelium -As of late August 2017, the following features are tested by IGT: +As of early April 2019, the following features are tested by IGT: * Pixel-by-pixel frame integrity tests for DP and HDMI * Error-trend-based frame integrity tests for VGA * CRC-based frame integrity tests for DP and HDMI
@@ -173,6 +191,7 @@ As of late August 2017, the following features are tested by IGT: each interface or combined * EDID display identifier integrity check for all interfaces * EDID display identifier change during suspend for all interfaces +* Audio Fourier-based tests for DP at 48KHz Future Developments -------------------
@@ -180,7 +199,10 @@ Future Developments With the current generation of the hardware platform, support for testing a number of additional display features could be included as future developments, including: -* Audio capture from HDMI and DP +* Audio capture from HDMI +* Check all channels are independent from each other +* Playback using more than 2 channels, different sampling rates and different + sample sizes * High-bandwidth Digital Content Protection (HDCP) streaming to the display * Remote control forwarding (CEC) sent from the display * YUV colorspace for HDMI, instead of RGB
lib/igt.h +1 -0
@@ -43,6 +43,7 @@#include "igt_stats.h" #ifdef HAVE_CHAMELIUM #include "igt_chamelium.h" +#include "igt_chamelium_stream.h" #endif #include "instdone.h" #include "intel_batchbuffer.h"
lib/igt_alsa.c +38 -4
91 lines not on this page · raw message
lib/igt_alsa.h +1 -0
@@ -33,6 +33,7 @@struct alsa ; +bool alsa_has_exclusive_access (void );struct alsa *alsa_init (void );int alsa_open_output (struct alsa *alsa,const char *device_name);int alsa_open_input (struct alsa *alsa,const char *device_name);
lib/igt_audio.c +227 -86
365 lines not on this page · raw message
lib/igt_audio.h +9 -3
@@ -30,6 +30,7 @@#include "config.h" #include <stdbool.h> +#include <stdint.h> struct audio_signal ;
@@ -37,8 +38,13 @@ struct audio_signal *audio_signal_init(int channels, int sampling_rate);int audio_signal_add_frequency (struct audio_signal *signal,int frequency);void audio_signal_synthesize (struct audio_signal *signal);void audio_signal_clean (struct audio_signal *signal); -void audio_signal_fill (struct audio_signal *signal,short *buffer,int frames); -bool audio_signal_detect (struct audio_signal *signal,int channels, -int sampling_rate,short *buffer,int frames); +void audio_signal_fill (struct audio_signal *signal,int16_t *buffer,int frames); +bool audio_signal_detect (struct audio_signal *signal,int sampling_rate, +double *data,size_t data_len); +size_t audio_extract_channel_s32_le (double *dst,size_t dst_cap, +int32_t *src,size_t src_len, +int n_channels,int channel); +int audio_create_wav_file_s32_le (const char *qualifier,uint32_t sample_rate, +uint16_t channels,char **path);#endif
lib/igt_aux.c +31 -0
@@ -1259,6 +1259,37 @@ void igt_set_module_param_int(const char *name, int val)igt_set_module_param (name, str); } +/** +* igt_is_process_running: +* @comm: Name of process in the form found in /proc/pid/comm (limited to 15 +* chars) +* +* Returns: true in case the process has been found, false otherwise. +* +* This function checks in the process table for an entry with the name @comm. +*/ +int igt_is_process_running (const char *comm) +{ +PROCTAB *proc; +proc_t *proc_info; +bool found = false; + + proc =openproc (PROC_FILLCOM |PROC_FILLSTAT ); +igt_assert (proc !=NULL ); + +while ((proc_info =readproc (proc,NULL ))) { +if (!strncasecmp (proc_info->cmd, comm,sizeof (proc_info->cmd))) { +freeproc (proc_info); + found = true; +break ; + } +freeproc (proc_info); + } + +closeproc (proc); +return found; +} +/** * igt_terminate_process: * @sig: Signal to send
lib/igt_aux.h +1 -0
@@ -279,6 +279,7 @@ bool igt_allow_unlimited_files(void);void igt_set_module_param (const char *name,const char *val);void igt_set_module_param_int (const char *name,int val); +int igt_is_process_running (const char *comm);int igt_terminate_process (int sig,const char *comm);void igt_lsof (const char *dpath);
lib/igt_chamelium.c +101 -0
113 lines not on this page · raw message
lib/igt_chamelium.h +11 -0
@@ -53,6 +53,12 @@ enum chamelium_check { CHAMELIUM_CHECK_CRC, }; +struct chamelium_audio_file { +char *path; +int rate;/* Hz */ +int channels; +}; +struct chamelium *chamelium_init (int drm_fd);void chamelium_deinit (struct chamelium *chamelium);void chamelium_reset (struct chamelium *chamelium);
@@ -100,6 +106,10 @@ void chamelium_start_capture(struct chamelium *chamelium,void chamelium_stop_capture (struct chamelium *chamelium,int frame_count);void chamelium_capture (struct chamelium *chamelium,struct chamelium_port *port,int x,int y,int w,int h,int frame_count); +void chamelium_start_capturing_audio (struct chamelium *chamelium, +struct chamelium_port *port,bool save_to_file); +struct chamelium_audio_file *chamelium_stop_capturing_audio (struct chamelium *chamelium, +struct chamelium_port *port);igt_crc_t *chamelium_read_captured_crcs (struct chamelium *chamelium,int *frame_count); struct chamelium_frame_dump *chamelium_read_captured_frame(struct chamelium *chamelium,
@@ -131,5 +141,6 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium,void chamelium_crop_analog_frame (struct chamelium_frame_dump *dump,int width,int height);void chamelium_destroy_frame_dump (struct chamelium_frame_dump *dump); +void chamelium_destroy_audio_file (struct chamelium_audio_file *audio_file);#endif /* IGT_CHAMELIUM_H */
lib/igt_chamelium_stream.c new file +589 -0
589 lines not on this page · raw message
lib/igt_chamelium_stream.h new file +52 -0
52 lines not on this page · raw message
lib/meson.build +3 -2
@@ -94,7 +94,7 @@ if valgrind.found() endif if gsl.found() - lib_deps += [ gsl ] + lib_deps += gsl lib_sources += [ 'igt_frame.c', 'igt_audio.c' ] endif
@@ -103,9 +103,10 @@ if alsa.found() lib_sources += 'igt_alsa.c' endif -if chamelium.found() +if chamelium_found lib_deps += chamelium lib_sources += 'igt_chamelium.c' + lib_sources += 'igt_chamelium_stream.c' endif srcdir = join_paths(meson.source_root(), 'tests')
meson.build +19 -33
89 lines not on this page · raw message
meson_options.txt +0 -6
@@ -10,12 +10,6 @@ option('overlay_backends', choices : [ 'auto', 'x', 'xv' ], description : 'Overlay backends to enable') -option('build_audio', - type : 'combo', - value : 'auto', - choices : ['auto', 'true', 'false'], - description : 'Build audio test') - option('build_chamelium', type : 'combo', value : 'auto',
tests/audio.c deleted +0 -193
193 lines not on this page · raw message
tests/kms_chamelium.c +270 -6
324 lines not on this page · raw message
tests/meson.build +1 -8
@@ -239,20 +239,13 @@ if libdrm_nouveau.found() test_deps += libdrm_nouveau endif -if _build_chamelium and chamelium.found() +if chamelium_found test_progs += [ 'kms_chamelium', ] test_deps += chamelium endif -if _build_audio and alsa.found() and gsl.found() - test_progs += [ - 'audio', - ] - test_deps += alsa -endif - test_executables = [] test_list = []
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
This patch broke autotools build. See gitlab.
Signature · 5 lines
Petri Latvala _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Quoted 1 line · Petri Latvala
This patch broke autotools build. See gitlab.
Fix is merged now. Skipped mailing list as nothing here verifies autotools, so it would only waste some cycles.
Signature · 6 lines
Cheers, Arek _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH v7 2/8 tests/kms_chamelium: capture audio data in real-time
In reply to Simon SerBefore this patch, the audio test first sends an audio signal for 2s, and then checks whether the captured signal matches.
This patch makes it so we send and check the signal in parallel. Thus we can stop the test as soon as we receive the correct signal. This saves ~2s per audio test.
--- lib/igt_alsa.c | 15 +++++++------- tests/kms_chamelium.c | 47 +++++++++++++++++++++++++++++++++---------- 2 files changed, 43 insertions(+), 19 deletions(-)
lib/igt_alsa.c +7 -8
@@ -497,7 +497,8 @@ void alsa_register_input_callback(struct alsa *alsa,/** * alsa_run: * @alsa: The target alsa structure -* @duration_ms: The maximum duration of the run in milliseconds +* @duration_ms: The maximum duration of the run in milliseconds, or -1 for an +* infinite duration. * * Run ALSA playback and capture on the input and output devices for at * most @duration_ms milliseconds, calling the registered callbacks when needed.
@@ -545,7 +546,7 @@ int alsa_run(struct alsa *alsa, int duration_ms) do { reached = true; - if (output_total < output_limit) { + if (output_limit < 0 || output_total < output_limit) { reached = false; if (!output_ready) {
@@ -607,7 +608,8 @@ int alsa_run(struct alsa *alsa, int duration_ms) } -if (alsa->input_callback && input_total < input_limit) { +if (alsa->input_callback && + (input_limit <0 || input_total < input_limit)) { reached = false;if (input_count == input_trigger) {
@@ -660,11 +662,8 @@ int alsa_run(struct alsa *alsa, int duration_ms) ret =0 ; complete: -if (output_buffer) -free (output_buffer); - -if (input_buffer) -free (input_buffer); +free (output_buffer); +free (input_buffer);return ret; }
tests/kms_chamelium.c +36 -11
98 lines not on this page · raw message
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH v7 3/8 lib/igt_{alsa, audio}: improve logging
In reply to Simon Ser- Print matched audio devices
- Print min/max values when alsa_test_configuration fails
- Print debug log line when skipping a frequency
--- lib/igt_alsa.c | 21 +++++++++++++++++++-- lib/igt_audio.c | 5 ++++- 2 files changed, 23 insertions(+), 3 deletions(-)
lib/igt_alsa.c +19 -2
@@ -182,6 +182,8 @@ static char *alsa_resolve_indentifier(const char *device_name, int skip)continue ; } +igt_debug ("Matched device \"%s\"\n" , pcm_name); +snprintf (name,sizeof (name),"hw:%d,%d" , card, dev);
@@ -329,6 +331,9 @@ static bool alsa_test_configuration(snd_pcm_t *handle, int channels, {snd_pcm_hw_params_t *params;int ret; +unsigned int min_channels, max_channels; +unsigned int min_rate, max_rate; +int min_rate_dir, max_rate_dir;snd_pcm_hw_params_alloca (¶ms);
@@ -337,12 +342,24 @@ static bool alsa_test_configuration(snd_pcm_t *handle, int channels,return false; ret =snd_pcm_hw_params_test_rate (handle, params, sampling_rate,0 ); -if (ret <0 ) +if (ret <0 ) { +snd_pcm_hw_params_get_rate_min (params, &min_rate, &min_rate_dir); +snd_pcm_hw_params_get_rate_max (params, &max_rate, &max_rate_dir); +igt_debug ("Output device supports rates between %u and %u, " +"requested %d\n" , + min_rate, max_rate, sampling_rate);return false; + } ret =snd_pcm_hw_params_test_channels (handle, params, channels); -if (ret <0 ) +if (ret <0 ) { +snd_pcm_hw_params_get_channels_min (params, &min_channels); +snd_pcm_hw_params_get_channels_max (params, &max_channels); +igt_debug ("Output device supports between %u and " +"%u channels, requested %d\n" , + min_channels, max_channels, channels);return false; + }return true; }
lib/igt_audio.c +4 -1
@@ -102,8 +102,11 @@ int audio_signal_add_frequency(struct audio_signal *signal, int frequency)return -1 ;/* Stay within the Nyquist–Shannon sampling theorem. */ -if (frequency > signal->sampling_rate /2 ) +if (frequency > signal->sampling_rate /2 ) { +igt_debug ("Skipping frequency %d: too high for a %d Hz " +"sampling rate\n" , frequency, signal->sampling_rate);return -1 ; + }/* Clip the frequency to an integer multiple of the sampling rate. * This to be able to store a full period of it and use that for
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Re: [igt-dev] [PATCH i-g-t v7 3/8] lib/igt_{alsa, audio}: improve logging
Quoted 5 lines · Simon Ser
- Print matched audio devices
- Print min/max values whenalsa_test_configurationfails
- Print debug log line when skipping a frequencySigned-off-by Simon Ser <[email protected]>
Quoted 63 lines
--- lib/igt_alsa.c | 21 +++++++++++++++++++-- lib/igt_audio.c | 5 ++++- 2 files changed, 23 insertions(+), 3 deletions(-)lib/igt_alsa.c +19
-2@@ -182,6 +182,8 @@ static char *alsa_resolve_indentifier(const char *device_name, int skip)continue ; } +igt_debug ("Matched device \"%s\"\n" , pcm_name); +snprintf (name,sizeof (name),"hw:%d,%d" , card, dev);@@ -329,6 +331,9 @@ static bool alsa_test_configuration(snd_pcm_t *handle, int channels, {snd_pcm_hw_params_t *params;int ret; +unsigned int min_channels, max_channels; +unsigned int min_rate, max_rate; +int min_rate_dir, max_rate_dir;snd_pcm_hw_params_alloca (¶ms);@@ -337,12 +342,24 @@ static bool alsa_test_configuration(snd_pcm_t *handle, int channels,return false; ret =snd_pcm_hw_params_test_rate (handle, params, sampling_rate,0 ); -if (ret <0 ) +if (ret <0 ) { +snd_pcm_hw_params_get_rate_min (params, &min_rate, &min_rate_dir); +snd_pcm_hw_params_get_rate_max (params, &max_rate, &max_rate_dir); +igt_debug ("Output device supports rates between %u and %u, " +"requested %d\n" , + min_rate, max_rate, sampling_rate);return false; + } ret =snd_pcm_hw_params_test_channels (handle, params, channels); -if (ret <0 ) +if (ret <0 ) { +snd_pcm_hw_params_get_channels_min (params, &min_channels); +snd_pcm_hw_params_get_channels_max (params, &max_channels); +igt_debug ("Output device supports between %u and " +"%u channels, requested %d\n" , + min_channels, max_channels, channels);return false; + }return true; }lib/igt_audio.c +0
-0@@ -102,8 +102,11 @@ int audio_signal_add_frequency(struct audio_signal *signal, int frequency)return -1 ;
lib/igt_audio.c int audio_signal_add_frequency(struct audio_signal *signal, int frequency) · line 112
Quoted 10 lines
lib/igt_audio.c +4
-1/* Stay within the Nyquist–Shannon sampling theorem. */ -if (frequency > signal->sampling_rate /2 ) +if (frequency > signal->sampling_rate /2 ) { +igt_debug ("Skipping frequency %d: too high for a %d Hz " +"sampling rate\n" , frequency, signal->sampling_rate);return -1 ; + }/* Clip the frequency to an integer multiple of the sampling rate. * This to be able to store a full period of it and use that for
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH v7 4/8 lib/igt_alsa: use variables to improve readability
In reply to Simon SerMost people don't have "remember what the last two parameters of snd_pcm_set_params are" in their lifegoals list. Use variables so that it's clearer what those are.
--- lib/igt_alsa.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
lib/igt_alsa.c +4 -1
@@ -426,13 +426,16 @@ void alsa_configure_output(struct alsa *alsa, int channels,snd_pcm_t *handle;int ret;int i; +int soft_resample =0 ;/* Don't allow ALSA to resample */ +unsigned int latency =0 ;for (i =0 ; i < alsa->output_handles_count; i++) { handle = alsa->output_handles[i]; ret =snd_pcm_set_params (handle,SND_PCM_FORMAT_S16_LE ,SND_PCM_ACCESS_RW_INTERLEAVED , - channels, sampling_rate,0 ,0 ); + channels, sampling_rate, + soft_resample, latency);igt_assert (ret >=0 ); }
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Re: [igt-dev] [PATCH i-g-t v7 4/8] lib/igt_alsa: use variables to improve readability
Quoted 5 lines · Simon Ser
Most people don't have "remember what the last two parameters of
snd_pcm_set_paramsare" in their lifegoals list. Use variables so that it's clearer what those are.Signed-off-by Simon Ser <[email protected]>
Quoted 17 lines
--- lib/igt_alsa.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)lib/igt_alsa.c +2
-0@@ -426,13 +426,16 @@ void alsa_configure_output(struct alsa *alsa, int channels,snd_pcm_t *handle;int ret;int i; +int soft_resample =0 ;/* Don't allow ALSA to resample */ +unsigned int latency =0 ;for (i =0 ; i < alsa->output_handles_count; i++) {
lib/igt_alsa.c void alsa_configure_output(struct alsa *alsa, int channels, · line 441
Quoted 10 lines
lib/igt_alsa.c +2
-1handle = alsa->output_handles[i]; ret =snd_pcm_set_params (handle,SND_PCM_FORMAT_S16_LE ,SND_PCM_ACCESS_RW_INTERLEAVED , - channels, sampling_rate,0 ,0 ); + channels, sampling_rate, + soft_resample, latency);igt_assert (ret >=0 ); }
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH v7 5/8 tests/kms_chamelium: test we receive a signal from both audio channels
In reply to Simon SerThis commit updates the audio test to make sure we receive a signal from both audio channels. However this commit doesn't check that left and right channels are not swapped. Such a check requires some more work (because the Chamelium device does swap left and right channels) and will be implemented in a future commit.
This commit adds a new channel argument to audio_signal_add_frequency, to add a frequency to a single channel only.
Some light refactoring has been performed: a proper audio_signal_fini function has been introduced and size_t in now used when it should be.
--- lib/igt_audio.c | 114 +++++++++++++++++++++++++----------------- lib/igt_audio.h | 11 ++-- tests/kms_chamelium.c | 58 +++++++++++++-------- 3 files changed, 111 insertions(+), 72 deletions(-)
lib/igt_audio.c +68 -46
@@ -35,7 +35,7 @@#include "igt_audio.h" #include "igt_core.h" -#define FREQS_MAX 8 +#define FREQS_MAX 64/** * SECTION:igt_audio
@@ -49,9 +49,10 @@struct audio_signal_freq {int freq; +int channel; -short *period; -int frames; +int16_t *period; +size_t period_len;int offset; };
@@ -60,7 +61,7 @@ struct audio_signal {int sampling_rate;struct audio_signal_freq freqs[FREQS_MAX ]; -int freqs_count; +size_t freqs_count; };/**
@@ -89,17 +90,21 @@ struct audio_signal *audio_signal_init(int channels, int sampling_rate)* audio_signal_add_frequency: * @signal: The target signal structure * @frequency: The frequency to add to the signal +* @channel: The channel to add this frequency to, or -1 to add it to all +* channels * * Add a frequency to the signal. * * Returns: An integer equal to zero for success and negative for failure */ -int audio_signal_add_frequency (struct audio_signal *signal,int frequency) +int audio_signal_add_frequency (struct audio_signal *signal,int frequency, +int channel) { -int index = signal->freqs_count; +size_t index = signal->freqs_count; +struct audio_signal_freq *freq; -if (index ==FREQS_MAX ) -return -1 ; +igt_assert (index <FREQS_MAX ); +igt_assert (channel < signal->channels);/* Stay within the Nyquist–Shannon sampling theorem. */ if (frequency > signal->sampling_rate /2 ) {
@@ -114,11 +119,14 @@ int audio_signal_add_frequency(struct audio_signal *signal, int frequency)*/ frequency = signal->sampling_rate / (signal->sampling_rate / frequency); -igt_debug ("Adding test frequency %d\n" , frequency); +igt_debug ("Adding test frequency %d to channel %d\n" , + frequency, channel); + + freq = &signal->freqs[index]; +memset (freq,0 ,sizeof (*freq)); + freq->freq = frequency; + freq->channel = channel; - signal->freqs[index].freq = frequency; - signal->freqs[index].frames =0 ; - signal->freqs[index].offset =0 ; signal->freqs_count++;return 0 ;
@@ -136,20 +144,17 @@ void audio_signal_synthesize(struct audio_signal *signal) {int16_t *period;double value; -int frames; +size_t period_len;int freq;int i, j; -if (signal->freqs_count ==0 ) -return ; -for (i =0 ; i < signal->freqs_count; i++) { freq = signal->freqs[i].freq; - frames = signal->sampling_rate / freq; + period_len = signal->sampling_rate / freq; - period =calloc (1 , frames *sizeof (short )); + period =calloc (1 , period_len *sizeof (int16_t )); -for (j =0 ; j < frames; j++) { +for (j =0 ; j < period_len; j++) { value =2.0 *M_PI * freq / signal->sampling_rate * j; value =sin (value) *INT16_MAX / signal->freqs_count;
@@ -157,26 +162,34 @@ void audio_signal_synthesize(struct audio_signal *signal) } signal->freqs[i].period = period; - signal->freqs[i].frames = frames; + signal->freqs[i].period_len = period_len; } }/** -* audio_signal_synthesize: +* audio_signal_fini: +* +* Release the signal. +*/ +void audio_signal_fini (struct audio_signal *signal) +{ +audio_signal_reset (signal); +free (signal); +} + +/** +* audio_signal_reset: * @signal: The target signal structure * * Free the resources allocated by audio_signal_synthesize and remove * the previously-added frequencies. */ -void audio_signal_clean (struct audio_signal *signal) +void audio_signal_reset (struct audio_signal *signal) { -int i; +size_t i;for (i =0 ; i < signal->freqs_count; i++) { -if (signal->freqs[i].period) -free (signal->freqs[i].period); - -memset (&signal->freqs[i],0 ,sizeof (struct audio_signal_freq )); +free (signal->freqs[i].period); } signal->freqs_count =0 ;
@@ -186,44 +199,45 @@ void audio_signal_clean(struct audio_signal *signal)* audio_signal_fill: * @signal: The target signal structure * @buffer: The target buffer to fill -* @frames: The number of frames to fill +* @samples: The number of samples to fill * -* Fill the requested number of frames to the target buffer with the audio +* Fill the requested number of samples to the target buffer with the audio * signal data (in interleaved S16_LE format), at the requested sampling rate * and number of channels. */ -void audio_signal_fill (struct audio_signal *signal,int16_t *buffer,int frames) +void audio_signal_fill (struct audio_signal *signal,int16_t *buffer, +size_t buffer_len) {int16_t *destination, *source; +struct audio_signal_freq *freq;int total; -int freq_frames; -int freq_offset;int count;int i, j, k; -memset (buffer,0 ,sizeof (int16_t ) * signal->channels * frames); +memset (buffer,0 ,sizeof (int16_t ) * signal->channels * buffer_len);for (i =0 ; i < signal->freqs_count; i++) { + freq = &signal->freqs[i]; total =0 ; -while (total < frames) { - freq_frames = signal->freqs[i].frames; - freq_offset = signal->freqs[i].offset; +igt_assert (freq->period); - source = signal->freqs[i].period + freq_offset; +while (total < buffer_len) { + source = freq->period + freq->offset; destination = buffer + total * signal->channels; - count = freq_frames - freq_offset; -if (count > (frames - total)) - count = frames - total; + count = freq->period_len - freq->offset; +if (count > buffer_len - total) + count = buffer_len - total; - freq_offset += count; - freq_offset %= freq_frames; - - signal->freqs[i].offset = freq_offset; + freq->offset += count; + freq->offset %= freq->period_len;for (j =0 ; j < count; j++) {for (k =0 ; k < signal->channels; k++) { +if (freq->channel >=0 && + freq->channel != k) +continue ; destination[j * signal->channels + k] += source[j]; } }
@@ -240,11 +254,11 @@ void audio_signal_fill(struct audio_signal *signal, int16_t *buffer, int frames)* sampling_rate is given in Hz. data_len is the number of elements in data. */ bool audio_signal_detect (struct audio_signal *signal,int sampling_rate, -double *data,size_t data_len) +int channel,double *data,size_t data_len) {size_t bin_power_len = data_len /2 +1 ;double bin_power[bin_power_len]; -bool detected[signal->freqs_count]; +bool detected[FREQS_MAX ];int ret, freq_accuracy, freq, local_max_freq;double max, local_max, threshold;size_t i, j;
@@ -311,6 +325,10 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate,* invalid. */ if (bin_power[i] < threshold) { for (j = 0; j < signal->freqs_count; j++) { + if (signal->freqs[j].channel >= 0 && + signal->freqs[j].channel != channel) + continue; + if (signal->freqs[j].freq > local_max_freq - freq_accuracy && signal->freqs[j].freq <
@@ -343,6 +361,10 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate,/* Check that all frequencies we generated have been detected. */ for (i =0 ; i < signal->freqs_count; i++) { +if (signal->freqs[i].channel >=0 && + signal->freqs[i].channel != channel) +continue ; +if (!detected[i]) {igt_debug ("Missing frequency: %d\n" , signal->freqs[i].freq);
lib/igt_audio.h +7 -4
@@ -35,12 +35,15 @@struct audio_signal ;struct audio_signal *audio_signal_init (int channels,int sampling_rate); -int audio_signal_add_frequency (struct audio_signal *signal,int frequency); +void audio_signal_fini (struct audio_signal *signal); +int audio_signal_add_frequency (struct audio_signal *signal,int frequency, +int channel);void audio_signal_synthesize (struct audio_signal *signal); -void audio_signal_clean (struct audio_signal *signal); -void audio_signal_fill (struct audio_signal *signal,int16_t *buffer,int frames); +void audio_signal_reset (struct audio_signal *signal); +void audio_signal_fill (struct audio_signal *signal,int16_t *buffer, +size_t buffer_len);bool audio_signal_detect (struct audio_signal *signal,int sampling_rate, -double *data,size_t data_len); +int channel,double *data,size_t data_len);size_t audio_extract_channel_s32_le (double *dst,size_t dst_cap,int32_t *src,size_t src_len,int n_channels,int channel);
tests/kms_chamelium.c +36 -22
120 lines not on this page · raw message
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH v7 6/8 tests/kms_chamelium: test audio channels are not mixed up
In reply to Simon SerSend a different signal to each channel and make sure captured audio channels are not swapped or mixed up.
The Chamelium device has a bug and already swaps the left and right channels. For this reason, clients need to retrieve the Chamelium channel mapping and accomodate for this. See https://crbug.com/950922 for a discussion about this.
--- lib/igt_chamelium.c | 34 +++++++++++++++++++++++++++++++++ lib/igt_chamelium.h | 3 +++ tests/kms_chamelium.c | 44 +++++++++++++++++++++++++++++++++++-------- 3 files changed, 73 insertions(+), 8 deletions(-)
lib/igt_chamelium.c +34 -0
@@ -930,6 +930,40 @@ int chamelium_get_captured_frame_count(struct chamelium *chamelium)return ret; } +/** +* chamelium_get_audio_channel_mapping: +* @chamelium: the Chamelium instance +* @port: the audio port +* @mapping: will be filled with the channel mapping +* +* Obtains the channel mapping for an audio port. +* +* Audio channels are not guaranteed not to be swapped. Users can use the +* channel mapping to match an input channel to a capture channel. +* +* The mapping contains one element per capture channel. Each element indicates +* which input channel the capture channel is mapped to. As a special case, -1 +* means that the channel isn't mapped. +*/ +void chamelium_get_audio_channel_mapping (struct chamelium *chamelium, +struct chamelium_port *port, +int mapping[static 8 ]) +{ +xmlrpc_value *res, *res_channel; +int res_len, i; + + res =chamelium_rpc (chamelium, port,"GetAudioChannelMapping" ,"(i)" , + port->id); + res_len =xmlrpc_array_size (&chamelium->env, res); +igt_assert (res_len ==8 ); +for (i =0 ; i < res_len; i++) { +xmlrpc_array_read_item (&chamelium->env, res, i, &res_channel); +xmlrpc_read_int (&chamelium->env, res_channel, &mapping[i]); +xmlrpc_DECREF (res_channel); + } +xmlrpc_DECREF (res); +} +/** * chamelium_start_capturing_audio: * @chamelium: the Chamelium instance
lib/igt_chamelium.h +3 -0
@@ -106,6 +106,9 @@ void chamelium_start_capture(struct chamelium *chamelium,void chamelium_stop_capture (struct chamelium *chamelium,int frame_count);void chamelium_capture (struct chamelium *chamelium,struct chamelium_port *port,int x,int y,int w,int h,int frame_count); +void chamelium_get_audio_channel_mapping (struct chamelium *chamelium, +struct chamelium_port *port, +int mapping[static 8 ]);void chamelium_start_capturing_audio (struct chamelium *chamelium,struct chamelium_port *port,bool save_to_file); struct chamelium_audio_file *chamelium_stop_capturing_audio(struct chamelium *chamelium,
tests/kms_chamelium.c +36 -8
85 lines not on this page · raw message
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH v7 7/8 tests/kms_chamelium: run audio test with multiple sampling rates
In reply to Simon SerThe audio test is now run multiple times with a variety of playback sampling rates.
We now query the capture audio format from the Chamelium XML-RPC API instead of hardcoding it.
One limitation is that we need to start sending an audio signal before being able to query the capture audio format. However we need the capture sample rate to decide which frequencies we generate. For now we use the playback rate and check that it's the same as the capture rate.
Another limitation is that the DP receiver reports an unknown sampling rate during the 44.1KHz test. In this case we assume the capture rate is the same as the playback rate. We'll fail later anyway if this assumption is incorrect since we check the signal we receive.
Chameleon bug: https://crbug.com/950913
--- lib/igt_chamelium.c | 80 +++++++++++++++++++++++++------------- lib/igt_chamelium.h | 3 ++ lib/igt_chamelium_stream.c | 17 -------- lib/igt_chamelium_stream.h | 2 - tests/kms_chamelium.c | 54 +++++++++++++++---------- 5 files changed, 89 insertions(+), 67 deletions(-)
lib/igt_chamelium.c +53 -27
@@ -964,31 +964,6 @@ void chamelium_get_audio_channel_mapping(struct chamelium *chamelium,xmlrpc_DECREF (res); } -/** -* chamelium_start_capturing_audio: -* @chamelium: the Chamelium instance -* @port: the port to capture audio from (it must support audio) -* @save_to_file: whether the captured audio data should be saved to a file on -* the Chamelium device -* -* Starts capturing audio from a Chamelium port. To stop the capture, use -* #chamelium_stop_capturing_audio. To retrieve the audio data, either use the -* stream server or enable @save_to_file (the latter is mainly useful for -* debugging purposes). -* -* It isn't possible to capture audio from multiple ports at the same time. -*/ -void chamelium_start_capturing_audio (struct chamelium *chamelium, -struct chamelium_port *port, -bool save_to_file) -{ -xmlrpc_value *res; - - res =chamelium_rpc (chamelium, port,"StartCapturingAudio" ,"(ib)" , - port->id, save_to_file); -xmlrpc_DECREF (res); -} -static void audio_format_from_xml (struct chamelium *chamelium,xmlrpc_value *res,int *rate,int *channels) {
@@ -1008,8 +983,10 @@ static void audio_format_from_xml(struct chamelium *chamelium,igt_assert (strcmp (sample_format,"S32_LE" ) ==0 );free (sample_format); -xmlrpc_read_int (&chamelium->env, res_rate, rate); -xmlrpc_read_int (&chamelium->env, res_channel, channels); +if (rate) +xmlrpc_read_int (&chamelium->env, res_rate, rate); +if (channels) +xmlrpc_read_int (&chamelium->env, res_channel, channels);xmlrpc_DECREF (res_channel);xmlrpc_DECREF (res_sample_format);
@@ -1017,6 +994,55 @@ static void audio_format_from_xml(struct chamelium *chamelium,xmlrpc_DECREF (res_type); } +/** +* chamelium_get_audio_format: +* @chamelium: the Chamelium instance +* @port: the audio port +* @rate: if non-NULL, will be set to the sample rate in Hz +* @channels: if non-NULL, will be set to the number of channels +* +* Obtains the audio format of the captured data. Users should start sending an +* audio signal to the Chamelium device prior to calling this function. +* +* The captured data is guaranteed to be in the S32_LE format. +*/ +void chamelium_get_audio_format (struct chamelium *chamelium, +struct chamelium_port *port, +int *rate,int *channels) +{ +xmlrpc_value *res; + + res =chamelium_rpc (chamelium, port,"GetAudioFormat" ,"(i)" , + port->id); +audio_format_from_xml (chamelium, res, rate, channels); +xmlrpc_DECREF (res); +} + +/** +* chamelium_start_capturing_audio: +* @chamelium: the Chamelium instance +* @port: the port to capture audio from (it must support audio) +* @save_to_file: whether the captured audio data should be saved to a file on +* the Chamelium device +* +* Starts capturing audio from a Chamelium port. To stop the capture, use +* #chamelium_stop_capturing_audio. To retrieve the audio data, either use the +* stream server or enable @save_to_file (the latter is mainly useful for +* debugging purposes). +* +* It isn't possible to capture audio from multiple ports at the same time. +*/ +void chamelium_start_capturing_audio (struct chamelium *chamelium, +struct chamelium_port *port, +bool save_to_file) +{ +xmlrpc_value *res; + + res =chamelium_rpc (chamelium, port,"StartCapturingAudio" ,"(ib)" , + port->id, save_to_file); +xmlrpc_DECREF (res); +} +/** * chamelium_stop_capturing_audio: * @chamelium: the Chamelium instance
lib/igt_chamelium.h +3 -0
@@ -109,6 +109,9 @@ void chamelium_capture(struct chamelium *chamelium, struct chamelium_port *port,void chamelium_get_audio_channel_mapping (struct chamelium *chamelium,struct chamelium_port *port,int mapping[static 8 ]); +void chamelium_get_audio_format (struct chamelium *chamelium, +struct chamelium_port *port, +int *rate,int *channels);void chamelium_start_capturing_audio (struct chamelium *chamelium,struct chamelium_port *port,bool save_to_file); struct chamelium_audio_file *chamelium_stop_capturing_audio(struct chamelium *chamelium,
lib/igt_chamelium_stream.c +0 -17
@@ -537,23 +537,6 @@ bool chamelium_stream_stop_realtime_audio(struct chamelium_stream *client)return true; } -/** -* chamelium_stream_audio_format: -* -* Gets the format used for audio pages. -* -* Data will always be captured in raw pages of S32_LE elements. This function -* exposes the sampling rate and the number of channels. -*/ -void chamelium_stream_audio_format (struct chamelium_stream *stream, -int *rate,int *channels) -{ -/* TODO: the Chamelium streaming server doesn't expose those yet. -* Just hardcode the values for now. */ - *rate =48000 ; - *channels =8 ; -} -/** * chamelium_stream_init: *
lib/igt_chamelium_stream.h +0 -2
@@ -42,8 +42,6 @@ struct chamelium_stream *chamelium_stream_init(void);void chamelium_stream_deinit (struct chamelium_stream *client);bool chamelium_stream_dump_realtime_audio (struct chamelium_stream *client,enum chamelium_stream_realtime_mode mode); -void chamelium_stream_audio_format (struct chamelium_stream *stream, -int *rate,int *channels);bool chamelium_stream_receive_realtime_audio (struct chamelium_stream *client,size_t *page_count,int32_t **buf,size_t *buf_len);
tests/kms_chamelium.c +33 -21
87 lines not on this page · raw message
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH v7 8/8 HAX: add dp-audio test to fast-feedback
In reply to Simon SerWaiting for the whole series to be complete to decide whether or not we want this test in fast-feedback.
--- tests/intel-ci/fast-feedback.testlist | 1 + 1 file changed, 1 insertion(+)
tests/intel-ci/fast-feedback.testlist +1 -0
@@ -175,6 +175,7 @@ igt@kms_addfb_basic@unused-pitches igt@kms_busy@basic-flip-a igt@kms_busy@basic-flip-b igt@kms_busy@basic-flip-c +igt@kms_chamelium@dp-audio igt@kms_chamelium@dp-hpd-fast igt@kms_chamelium@dp-edid-read igt@kms_chamelium@dp-crc-fast
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
Patchwork
CI[igt-dev] ✓ Fi.CI.BAT: success for tests/kms_chamelium: add dp-audio test (rev8)
In reply to Simon Ser== Series Details ==
== Series Details ==
Series: tests/kms_chamelium: add dp-audio test (rev8)
URL : https://patchwork.freedesktop.org/series/59058/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5971 -> IGTPW_2905
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/59058/revisions/8/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_2905:
### IGT changes ###
#### Possible regressions ####
* {igt@kms_chamelium@dp-audio} (NEW):
- fi-kbl-7500u: NOTRUN -> [FAIL][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-kbl-7500u/igt@[email protected]
- fi-icl-u2: NOTRUN -> [SKIP][2]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-icl-u2/igt@[email protected]
New tests
---------
New tests have been introduced between CI_DRM_5971 and IGTPW_2905:
### New IGT tests (1) ###
* igt@kms_chamelium@dp-audio:
- Statuses : 1 fail(s) 41 skip(s)
- Exec time: [0.0, 1.33] s
Known issues
------------
Here are the changes found in IGTPW_2905 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_suspend@basic-s3:
- fi-blb-e6850: [PASS][3] -> [INCOMPLETE][4] ([fdo#107718])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/fi-blb-e6850/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-blb-e6850/igt@[email protected]
* {igt@kms_chamelium@dp-audio} (NEW):
- fi-skl-6770hq: NOTRUN -> [SKIP][5] ([fdo#109271])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-skl-6770hq/igt@[email protected]
- fi-snb-2600: NOTRUN -> [SKIP][6] ([fdo#109271])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-snb-2600/igt@[email protected]
- fi-bwr-2160: NOTRUN -> [SKIP][7] ([fdo#109271])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-bwr-2160/igt@[email protected]
- fi-gdg-551: NOTRUN -> [SKIP][8] ([fdo#109271])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-gdg-551/igt@[email protected]
- fi-skl-lmem: NOTRUN -> [SKIP][9] ([fdo#109271])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-skl-lmem/igt@[email protected]
- fi-hsw-peppy: NOTRUN -> [SKIP][10] ([fdo#109271])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-hsw-peppy/igt@[email protected]
- fi-kbl-8809g: NOTRUN -> [SKIP][11] ([fdo#109271])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-kbl-8809g/igt@[email protected]
- fi-byt-n2820: NOTRUN -> [SKIP][12] ([fdo#109271])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-byt-n2820/igt@[email protected]
- fi-kbl-r: NOTRUN -> [SKIP][13] ([fdo#109271])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-kbl-r/igt@[email protected]
- fi-apl-guc: NOTRUN -> [SKIP][14] ([fdo#109271])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-apl-guc/igt@[email protected]
- fi-kbl-7567u: NOTRUN -> [SKIP][15] ([fdo#109271])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-kbl-7567u/igt@[email protected]
- fi-kbl-x1275: NOTRUN -> [SKIP][16] ([fdo#109271])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-kbl-x1275/igt@[email protected]
- fi-pnv-d510: NOTRUN -> [SKIP][17] ([fdo#109271])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-pnv-d510/igt@[email protected]
- fi-skl-6600u: NOTRUN -> [SKIP][18] ([fdo#109271])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-skl-6600u/igt@[email protected]
- fi-icl-y: NOTRUN -> [SKIP][19] ([fdo#109284])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-icl-y/igt@[email protected]
- fi-skl-iommu: NOTRUN -> [SKIP][20] ([fdo#109271])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-skl-iommu/igt@[email protected]
- fi-byt-j1900: NOTRUN -> [SKIP][21] ([fdo#109271])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-byt-j1900/igt@[email protected]
- fi-elk-e7500: NOTRUN -> [SKIP][22] ([fdo#109271])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-elk-e7500/igt@[email protected]
- fi-skl-6700k2: NOTRUN -> [SKIP][23] ([fdo#109271])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-skl-6700k2/igt@[email protected]
- fi-whl-u: NOTRUN -> [SKIP][24] ([fdo#109271])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-whl-u/igt@[email protected]
- fi-bdw-5557u: NOTRUN -> [SKIP][25] ([fdo#109271])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-bdw-5557u/igt@[email protected]
- fi-kbl-guc: NOTRUN -> [SKIP][26] ([fdo#109271])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-kbl-guc/igt@[email protected]
- fi-cfl-8109u: NOTRUN -> [SKIP][27] ([fdo#109271])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-cfl-8109u/igt@[email protected]
- fi-byt-clapper: NOTRUN -> [SKIP][28] ([fdo#109271])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-byt-clapper/igt@[email protected]
- fi-hsw-4770r: NOTRUN -> [SKIP][29] ([fdo#109271])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-hsw-4770r/igt@[email protected]
- fi-cfl-8700k: NOTRUN -> [SKIP][30] ([fdo#109271])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-cfl-8700k/igt@[email protected]
- fi-bsw-kefka: NOTRUN -> [SKIP][31] ([fdo#109271])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-bsw-kefka/igt@[email protected]
- fi-snb-2520m: NOTRUN -> [SKIP][32] ([fdo#109271])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-snb-2520m/igt@[email protected]
- fi-skl-guc: NOTRUN -> [SKIP][33] ([fdo#109271])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-skl-guc/igt@[email protected]
- fi-cfl-guc: NOTRUN -> [SKIP][34] ([fdo#109271])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-cfl-guc/igt@[email protected]
- fi-bdw-gvtdvm: NOTRUN -> [SKIP][35] ([fdo#109271])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-bdw-gvtdvm/igt@[email protected]
- fi-bsw-n3050: NOTRUN -> [SKIP][36] ([fdo#109271])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-bsw-n3050/igt@[email protected]
- fi-ilk-650: NOTRUN -> [SKIP][37] ([fdo#109271])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-ilk-650/igt@[email protected]
- fi-ivb-3770: NOTRUN -> [SKIP][38] ([fdo#109271])
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-ivb-3770/igt@[email protected]
- fi-skl-gvtdvm: NOTRUN -> [SKIP][39] ([fdo#109271])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-skl-gvtdvm/igt@[email protected]
- fi-skl-6260u: NOTRUN -> [SKIP][40] ([fdo#109271])
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-skl-6260u/igt@[email protected]
- fi-bxt-j4205: NOTRUN -> [SKIP][41] ([fdo#109271])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-bxt-j4205/igt@[email protected]
- fi-bxt-dsi: NOTRUN -> [SKIP][42] ([fdo#109271])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-bxt-dsi/igt@[email protected]
- fi-hsw-4770: NOTRUN -> [SKIP][43] ([fdo#109271])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-hsw-4770/igt@[email protected]
- fi-icl-u3: NOTRUN -> [SKIP][44] ([fdo#109284])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-icl-u3/igt@[email protected]
* igt@kms_frontbuffer_tracking@basic:
- fi-byt-clapper: [PASS][45] -> [FAIL][46] ([fdo#103167])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/fi-byt-clapper/igt@[email protected]
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-byt-clapper/igt@[email protected]
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- fi-byt-clapper: [PASS][47] -> [FAIL][48] ([fdo#103191])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/fi-byt-clapper/igt@[email protected]
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-byt-clapper/igt@[email protected]
#### Possible fixes ####
* igt@kms_flip@basic-flip-vs-wf_vblank:
- fi-bwr-2160: [FAIL][49] ([fdo#100368]) -> [PASS][50]
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/fi-bwr-2160/igt@kms_flip@basic-flip-vs-wf_vblank.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/fi-bwr-2160/igt@kms_flip@basic-flip-vs-wf_vblank.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#100368]: https://bugs.freedesktop.org/show_bug.cgi?id=100368
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
Participating hosts (50 -> 44)
------------------------------
Missing (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-bdw-samus
Build changes
-------------
* IGT: IGT_4959 -> IGTPW_2905
CI_DRM_5971: e91b848a66e8672c48ea65d082b260f13f2c86b9 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2905: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/
IGT_4959: 504367d33b787de2ba8e007a5b620cfd6f0b3074 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_chamelium@dp-audio
-igt@audio@hdmi-integrity
-igt@audio@hdmi-integrity-after-hibernate
-igt@audio@hdmi-integrity-after-suspend
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Patchwork
CI[igt-dev] ✓ Fi.CI.IGT: success for tests/kms_chamelium: add dp-audio test (rev8)
In reply to Simon Ser== Series Details ==
== Series Details ==
Series: tests/kms_chamelium: add dp-audio test (rev8)
URL : https://patchwork.freedesktop.org/series/59058/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5971_full -> IGTPW_2905_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/59058/revisions/8/mbox/
New tests
---------
New tests have been introduced between CI_DRM_5971_full and IGTPW_2905_full:
### New IGT tests (1) ###
* igt@kms_chamelium@dp-audio:
- Statuses : 5 skip(s)
- Exec time: [0.0] s
Known issues
------------
Here are the changes found in IGTPW_2905_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_eio@unwedge-stress:
- shard-snb: [PASS][1] -> [FAIL][2] ([fdo#109661])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-snb2/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-snb7/igt@[email protected]
* igt@gem_workarounds@suspend-resume-context:
- shard-apl: [PASS][3] -> [DMESG-WARN][4] ([fdo#108566]) +6 similar issues
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-apl5/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-apl5/igt@[email protected]
* {igt@kms_chamelium@dp-audio} (NEW):
- shard-snb: NOTRUN -> [SKIP][5] ([fdo#109271])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-snb1/igt@[email protected]
- shard-apl: NOTRUN -> [SKIP][6] ([fdo#109271])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-apl8/igt@[email protected]
- shard-iclb: NOTRUN -> [SKIP][7] ([fdo#109284])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-iclb8/igt@[email protected]
- shard-kbl: NOTRUN -> [SKIP][8] ([fdo#109271])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-kbl2/igt@[email protected]
* igt@kms_cursor_crc@cursor-256x256-suspend:
- shard-kbl: [PASS][9] -> [FAIL][10] ([fdo#103232])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-kbl7/igt@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-kbl6/igt@[email protected]
* igt@kms_cursor_legacy@pipe-b-torture-bo:
- shard-kbl: [PASS][11] -> [DMESG-WARN][12] ([fdo#107122])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-kbl4/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-kbl1/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite:
- shard-iclb: [PASS][13] -> [FAIL][14] ([fdo#103167]) +7 similar issues
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-iclb6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-iclb7/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt:
- shard-hsw: NOTRUN -> [SKIP][15] ([fdo#109271]) +7 similar issues
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-hsw2/igt@[email protected]
* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
- shard-kbl: [PASS][16] -> [INCOMPLETE][17] ([fdo#103665])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-kbl4/igt@[email protected]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-kbl6/igt@[email protected]
* igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:
- shard-hsw: NOTRUN -> [SKIP][18] ([fdo#109271] / [fdo#109278]) +1 similar issue
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-hsw8/igt@[email protected]
* igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping:
- shard-glk: [PASS][19] -> [SKIP][20] ([fdo#109271] / [fdo#109278]) +1 similar issue
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-glk9/igt@[email protected]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-glk3/igt@[email protected]
* igt@kms_psr2_su@frontbuffer:
- shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109642])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-iclb2/igt@[email protected]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-iclb7/igt@[email protected]
* igt@kms_rotation_crc@multiplane-rotation-cropping-top:
- shard-kbl: [PASS][23] -> [FAIL][24] ([fdo#109016])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-kbl1/igt@[email protected]
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-kbl5/igt@[email protected]
* igt@kms_setmode@basic:
- shard-kbl: [PASS][25] -> [FAIL][26] ([fdo#99912])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-kbl4/igt@[email protected]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-kbl7/igt@[email protected]
#### Possible fixes ####
* igt@i915_pm_rc6_residency@rc6-accuracy:
- shard-snb: [SKIP][27] ([fdo#109271]) -> [PASS][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-snb7/igt@[email protected]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-snb6/igt@[email protected]
* igt@i915_pm_rpm@i2c:
- shard-iclb: [FAIL][29] ([fdo#104097]) -> [PASS][30]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-iclb8/igt@[email protected]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-iclb6/igt@[email protected]
* igt@i915_suspend@forcewake:
- shard-apl: [DMESG-WARN][31] ([fdo#108566]) -> [PASS][32] +2 similar issues
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-apl4/igt@[email protected]
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-apl3/igt@[email protected]
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-hsw: [INCOMPLETE][33] ([fdo#103540]) -> [PASS][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-hsw2/igt@[email protected]
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-hsw8/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-iclb: [FAIL][35] ([fdo#103167]) -> [PASS][36] +1 similar issue
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-iclb4/igt@[email protected]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-iclb8/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-1p-rte:
- shard-iclb: [FAIL][37] ([fdo#103167] / [fdo#110378]) -> [PASS][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-iclb1/igt@[email protected]
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-iclb6/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite:
- shard-glk: [FAIL][39] ([fdo#103167]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-glk8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-glk6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite.html
* igt@kms_psr@psr2_sprite_mmap_gtt:
- shard-iclb: [SKIP][41] ([fdo#109441]) -> [PASS][42] +2 similar issues
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-iclb7/igt@kms_psr@psr2_sprite_mmap_gtt.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_gtt.html
* igt@kms_setmode@basic:
- shard-apl: [FAIL][43] ([fdo#99912]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-apl6/igt@[email protected]
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-apl1/igt@[email protected]
#### Warnings ####
* igt@gem_tiled_swapping@non-threaded:
- shard-iclb: [FAIL][45] ([fdo#108686]) -> [INCOMPLETE][46] ([fdo#107713] / [fdo#108686])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-iclb1/igt@[email protected]
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-iclb5/igt@[email protected]
* igt@kms_cursor_crc@cursor-256x256-suspend:
- shard-apl: [DMESG-WARN][47] ([fdo#108566]) -> [FAIL][48] ([fdo#103232])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5971/shard-apl5/igt@[email protected]
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/shard-apl5/igt@[email protected]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#104097]: https://bugs.freedesktop.org/show_bug.cgi?id=104097
[fdo#107122]: https://bugs.freedesktop.org/show_bug.cgi?id=107122
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#109661]: https://bugs.freedesktop.org/show_bug.cgi?id=109661
[fdo#110378]: https://bugs.freedesktop.org/show_bug.cgi?id=110378
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
Participating hosts (10 -> 6)
------------------------------
Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005
Build changes
-------------
* IGT: IGT_4959 -> IGTPW_2905
* Piglit: piglit_4509 -> None
CI_DRM_5971: e91b848a66e8672c48ea65d082b260f13f2c86b9 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2905: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/
IGT_4959: 504367d33b787de2ba8e007a5b620cfd6f0b3074 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2905/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Quoted 4 lines · Simon Ser
Changes in v7: addressed Martin's comments
Thanks for the detailed review! I've tried splitting some commits, let me know if more splitting is needed.
Thanks for the changes! The series is (excluding the HAX patch):
Quoted 28 lines
Simon Ser (8):
tests/kms_chamelium: add dp-audio test tests/kms_chamelium: capture audio data in real-timelib/igt_{alsa,audio}: improve logging
lib/igt_alsa: use variables to improve readability tests/kms_chamelium: test we receive a signal from both audio channels tests/kms_chamelium: test audio channels are not mixed up tests/kms_chamelium: run audio test with multiple sampling rates
HAX: add dp-audio test to fast-feedbackdocs/audio.txt | 45 -- docs/chamelium.txt | 34 +- lib/igt.h | 1 + lib/igt_alsa.c | 83 +++- lib/igt_alsa.h | 1 + lib/igt_audio.c | 428 +++++++++++++------ lib/igt_audio.h | 19 +- lib/igt_aux.c | 31 ++ lib/igt_aux.h | 1 + lib/igt_chamelium.c | 161 ++++++++ lib/igt_chamelium.h | 17 + lib/igt_chamelium_stream.c | 572 ++++++++++++++++++++++++++ lib/igt_chamelium_stream.h | 50 +++ lib/meson.build | 5 +- meson.build | 52 +-- meson_options.txt | 6 - tests/audio.c | 193 ---------
Quoted 9 lines
tests/intel-ci/fast-feedback.testlist | 1 + tests/kms_chamelium.c | 355 +++++++++++++++- tests/meson.build | 9 +- 20 files changed, 1614 insertions(+), 450 deletions(-) delete mode 100644 docs/audio.txt create mode 100644 lib/igt_chamelium_stream.c create mode 100644 lib/igt_chamelium_stream.h delete mode 100644 tests/audio.c
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev