tests/kms_chamelium: refactor audio test
PATCH 1/2 tests/kms_chamelium: refactor audio test
Instead of shaving everything into do_test_display_audio, extract the logic to initialize, start, stop, finish an audio test in helper functions. The struct audio_state now carries all audio-related state.
This will allow to easily add more audio tests that don't use sine waves (via audio_signal). This is necessary for future delay and amplitude tests.
--- tests/kms_chamelium.c | 325 ++++++++++++++++++++++++------------------ 1 file changed, 188 insertions(+), 137 deletions(-)
tests/kms_chamelium.c +188 -137
@@ -812,17 +812,172 @@ static const snd_pcm_format_t test_formats[] = {static const size_t test_formats_count =sizeof (test_formats) /sizeof (test_formats[0 ]);struct audio_state { +struct alsa *alsa; +struct chamelium *chamelium; +struct chamelium_port *port; +struct chamelium_stream *stream; + +/* The capture format is only available after capture has started. */ +struct { +snd_pcm_format_t format; +int channels; +int rate; + } playback, capture; +struct audio_signal *signal; -snd_pcm_format_t format; +int channel_mapping[8 ]; + +int dump_fd; +char *dump_path; + +pthread_t thread;atomic_bool run; }; +static void audio_state_init (struct audio_state *state,data_t *data, +struct alsa *alsa,struct chamelium_port *port, +snd_pcm_format_t format,int channels,int rate) +{ +memset (state,0 ,sizeof (*state)); + state->dump_fd =-1 ; + + state->alsa = alsa; + state->chamelium = data->chamelium; + state->port = port; + + state->playback.format = format; + state->playback.channels = channels; + state->playback.rate = rate; + +alsa_configure_output (alsa, format, channels, rate); + + state->stream =chamelium_stream_init (); +igt_assert (state->stream); +} + +static void audio_state_fini (struct audio_state *state) +{ +chamelium_stream_deinit (state->stream); +free (state->dump_path); +} + +static void *run_audio_thread (void *data) +{ +struct alsa *alsa = data; + +alsa_run (alsa,-1 ); +return NULL ; +} + +static void audio_state_start (struct audio_state *state) +{ +int ret; +bool ok; +size_t i, j; +enum chamelium_stream_realtime_mode stream_mode; +char dump_suffix[64 ]; + +igt_debug ("Starting test with playback format %s, sampling rate %d Hz " +"and %d channels\n" , +snd_pcm_format_name (state->playback.format), + state->playback.rate, state->playback.channels); + +chamelium_start_capturing_audio (state->chamelium, state->port, false); + + stream_mode =CHAMELIUM_STREAM_REALTIME_STOP_WHEN_OVERFLOW ; + ok =chamelium_stream_dump_realtime_audio (state->stream, stream_mode); +igt_assert (ok); + +/* Start playing audio */ + state->run = true; + ret =pthread_create (&state->thread,NULL , + run_audio_thread, state->alsa); +igt_assert (ret ==0 ); + +/* The Chamelium device only supports this PCM format. */ + state->capture.format =SND_PCM_FORMAT_S32_LE ; + +/* Only after we've started playing audio, we can retrieve the capture +* format used by the Chamelium device. */ +chamelium_get_audio_format (state->chamelium, state->port, + &state->capture.rate, + &state->capture.channels); +if (state->capture.rate ==0 ) { +igt_debug ("Audio receiver doesn't indicate the capture " +"sampling rate, assuming it's %d Hz\n" , + state->playback.rate); + state->capture.rate = state->playback.rate; + } + +chamelium_get_audio_channel_mapping (state->chamelium, state->port, + state->channel_mapping); +/* Make sure we can capture all channels we send. */ +for (i =0 ; i < state->playback.channels; i++) { + ok = false; +for (j =0 ; j < state->capture.channels; j++) { +if (state->channel_mapping[j] == i) { + ok = true; +break ; + } + } +igt_assert (ok); + } + +if (igt_frame_dump_is_enabled ()) { +snprintf (dump_suffix,sizeof (dump_suffix), +"capture-%s-%dch-%dHz" , +snd_pcm_format_name (state->playback.format), + state->playback.channels, state->playback.rate); + + state->dump_fd =audio_create_wav_file_s32_le (dump_suffix, + state->capture.rate, + state->capture.channels, + &state->dump_path); +igt_assert (state->dump_fd >=0 ); + } +} + +static void audio_state_stop (struct audio_state *state,bool success) +{ +bool ok; +int ret; +struct chamelium_audio_file *audio_file; + +igt_debug ("Stopping audio playback\n" ); + state->run = false; + ret =pthread_join (state->thread,NULL ); +igt_assert (ret ==0 ); + +alsa_close_output (state->alsa); + + ok =chamelium_stream_stop_realtime_audio (state->stream); +igt_assert (ok); + + audio_file =chamelium_stop_capturing_audio (state->chamelium, + state->port); +if (audio_file) { +igt_debug ("Audio file saved on the Chamelium in %s\n" , + audio_file->path); +chamelium_destroy_audio_file (audio_file); + } + +if (state->dump_fd >=0 ) { +close (state->dump_fd); +if (success) { +/* Test succeeded, no need to keep the captured data */ +unlink (state->dump_path); + }else +igt_debug ("Saved captured audio data to %s\n" , + state->dump_path); + } +} +static int audio_output_callback (void *data,void *buffer,int samples) {struct audio_state *state = data; -switch (state->format) { +switch (state->playback.format) {case SND_PCM_FORMAT_S16_LE :audio_signal_fill_s16_le (state->signal, buffer, samples);break ;
@@ -839,55 +994,19 @@ audio_output_callback(void *data, void *buffer, int samples)return state->run ?0 :-1 ; } -static void * -run_audio_thread (void *data) +static bool do_test_display_audio (struct audio_state *state) { -struct alsa *alsa = data; - -alsa_run (alsa,-1 ); -return NULL ; -} - -static bool -do_test_display_audio (data_t *data,struct chamelium_port *port, -struct alsa *alsa,snd_pcm_format_t playback_format, -int playback_channels,int playback_rate) -{ -int ret, capture_rate, capture_channels, msec, freq, step; -struct chamelium_audio_file *audio_file; -struct chamelium_stream *stream; -enum chamelium_stream_realtime_mode stream_mode; -struct audio_signal *signal; +int msec, freq, step;int32_t *recv, *buf;double *channel;size_t i, j, streak, page_count;size_t recv_len, buf_len, buf_cap, buf_size, channel_len;bool ok, success; -char dump_suffix[64 ]; -char *dump_path =NULL ; -int dump_fd =-1 ; -pthread_t thread; -struct audio_state state = {}; -int channel_mapping[8 ], capture_chan; +int capture_chan; -igt_debug ("Testing with playback format %s, sampling rate %d Hz and " -"%d channels\n" , -snd_pcm_format_name (playback_format), - playback_rate, playback_channels); -alsa_configure_output (alsa, playback_format, - playback_channels, playback_rate); - -chamelium_start_capturing_audio (data->chamelium, port, false); - - stream =chamelium_stream_init (); -igt_assert (stream); - - stream_mode =CHAMELIUM_STREAM_REALTIME_STOP_WHEN_OVERFLOW ; - ok =chamelium_stream_dump_realtime_audio (stream, stream_mode); -igt_assert (ok); - - signal =audio_signal_init (playback_channels, playback_rate); -igt_assert (signal); + state->signal =audio_signal_init (state->playback.channels, + state->playback.rate); +igt_assert (state->signal);/* We'll choose different frequencies per channel to make sure they are * independent from each other. To do so, we'll add a different offset
@@ -900,62 +1019,21 @@ do_test_display_audio(data_t *data, struct chamelium_port *port,* later on. We cannot retrieve the capture rate before starting * playing audio, so we don't really have the choice. */ - step =2 * playback_rate /CAPTURE_SAMPLES ; + step =2 * state->playback.rate /CAPTURE_SAMPLES ;for (i =0 ; i < test_frequencies_count; i++) { -for (j =0 ; j < playback_channels; j++) { +for (j =0 ; j < state->playback.channels; j++) { freq = test_frequencies[i] + j * step; -audio_signal_add_frequency (signal, freq, j); +audio_signal_add_frequency (state->signal, freq, j); } } -audio_signal_synthesize (signal); +audio_signal_synthesize (state->signal); - state.signal = signal; - state.format = playback_format; - state.run = true; -alsa_register_output_callback (alsa, audio_output_callback, &state, +alsa_register_output_callback (state->alsa, audio_output_callback, state,PLAYBACK_SAMPLES ); -/* Start playing audio */ - ret =pthread_create (&thread,NULL , run_audio_thread, alsa); -igt_assert (ret ==0 ); - -/* Only after we've started playing audio, we can retrieve the capture -* format used by the Chamelium device. */ -chamelium_get_audio_format (data->chamelium, port, - &capture_rate, &capture_channels); -if (capture_rate ==0 ) { -igt_debug ("Audio receiver doesn't indicate the capture " -"sampling rate, assuming it's %d Hz\n" , playback_rate); - capture_rate = playback_rate; - }else -igt_assert (capture_rate == playback_rate); - -chamelium_get_audio_channel_mapping (data->chamelium, port, - channel_mapping); -/* Make sure we can capture all channels we send. */ -for (i =0 ; i < playback_channels; i++) { - ok = false; -for (j =0 ; j < capture_channels; j++) { -if (channel_mapping[j] == i) { - ok = true; -break ; - } - } -igt_assert (ok); - } +audio_state_start (state); -if (igt_frame_dump_is_enabled ()) { -snprintf (dump_suffix,sizeof (dump_suffix), -"capture-%s-%dch-%dHz" , -snd_pcm_format_name (playback_format), - playback_channels, playback_rate); - - dump_fd =audio_create_wav_file_s32_le (dump_suffix, - capture_rate, - capture_channels, - &dump_path); -igt_assert (dump_fd >=0 ); - } +igt_assert (state->capture.rate == state->playback.rate);/* Needs to be a multiple of 128, because that's the number of samples * we get per channel each time we receive an audio page from the
@@ -970,7 +1048,7 @@ do_test_display_audio(data_t *data, struct chamelium_port *port, channel_len =CAPTURE_SAMPLES ; channel =malloc (sizeof (double ) * channel_len); - buf_cap = capture_channels * channel_len; + buf_cap = state->capture.channels * channel_len; buf =malloc (sizeof (int32_t ) * buf_cap); buf_len =0 ;
@@ -982,7 +1060,7 @@ do_test_display_audio(data_t *data, struct chamelium_port *port, msec =0 ; i =0 ;while (!success && msec <AUDIO_TIMEOUT ) { - ok =chamelium_stream_receive_realtime_audio (stream, + ok =chamelium_stream_receive_realtime_audio (state->stream, &page_count, &recv, &recv_len);igt_assert (ok);
@@ -994,26 +1072,27 @@ do_test_display_audio(data_t *data, struct chamelium_port *port,continue ;igt_assert (buf_len == buf_cap); -if (dump_fd >=0 ) { +if (state->dump_fd >=0 ) { buf_size = buf_len *sizeof (int32_t ); -igt_assert (write (dump_fd, buf, buf_size) == buf_size); +igt_assert (write (state->dump_fd, buf, buf_size) == buf_size); } - msec = i * channel_len / (double ) capture_rate *1000 ; + msec = i * channel_len / (double ) state->capture.rate *1000 ;igt_debug ("Detecting audio signal, t=%d msec\n" , msec); -for (j =0 ; j < playback_channels; j++) { - capture_chan = channel_mapping[j]; +for (j =0 ; j < state->playback.channels; j++) { + capture_chan = state->channel_mapping[j];igt_assert (capture_chan >=0 );igt_debug ("Processing channel %zu (captured as " "channel %d)\n" , j, capture_chan);audio_extract_channel_s32_le (channel, channel_len, buf, buf_len, - capture_channels, + state->capture.channels, capture_chan); -if (audio_signal_detect (signal, capture_rate, j, +if (audio_signal_detect (state->signal, + state->capture.rate, j, channel, channel_len)) streak++;else
@@ -1023,43 +1102,15 @@ do_test_display_audio(data_t *data, struct chamelium_port *port, buf_len =0 ; i++; - success = streak ==MIN_STREAK * playback_channels; + success = streak ==MIN_STREAK * state->playback.channels; } -igt_debug ("Stopping audio playback\n" ); - state.run = false; - ret =pthread_join (thread,NULL ); -igt_assert (ret ==0 ); - -alsa_close_output (alsa); - -if (dump_fd >=0 ) { -close (dump_fd); -if (success) { -/* Test succeeded, no need to keep the captured data */ -unlink (dump_path); - }else -igt_debug ("Saved captured audio data to %s\n" , dump_path); -free (dump_path); - } +audio_state_stop (state, success);free (recv);free (buf);free (channel); - - ok =chamelium_stream_stop_realtime_audio (stream); -igt_assert (ok); - - audio_file =chamelium_stop_capturing_audio (data->chamelium, - port); -if (audio_file) { -igt_debug ("Audio file saved on the Chamelium in %s\n" , - audio_file->path); -chamelium_destroy_audio_file (audio_file); - } - -audio_signal_fini (signal); -chamelium_stream_deinit (stream); +audio_signal_fini (state->signal);return success; }
@@ -1106,6 +1157,7 @@ test_display_audio(data_t *data, struct chamelium_port *port,int fb_id, i, j;int channels, sampling_rate;snd_pcm_format_t format; +struct audio_state state;igt_require (alsa_has_exclusive_access ());
@@ -1155,11 +1207,10 @@ test_display_audio(data_t *data, struct chamelium_port *port, run = true; - success &=do_test_display_audio (data, port, alsa, - format, channels, - sampling_rate); - -alsa_close_output (alsa); +audio_state_init (&state, data, alsa, port, + format, channels, sampling_rate); + success &=do_test_display_audio (&state); +audio_state_fini (&state); } }
Signature · 6 lines
2.21.0 _______________________________________________ igt-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/igt-dev
PATCH 2/2 tests/kms_chamelium: introduce audio_state_receive
This extracts the logic receiving audio pages in do_test_display_audio into a new audio_state_receive function. The function takes care of updating the current msec counter and dumping the received data in a file.
--- tests/kms_chamelium.c | 51 +++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 19 deletions(-)
tests/kms_chamelium.c +32 -19
@@ -827,6 +827,9 @@ struct audio_state {struct audio_signal *signal;int channel_mapping[8 ]; +size_t recv_pages; +int msec; +int dump_fd;char *dump_path;
@@ -937,6 +940,28 @@ static void audio_state_start(struct audio_state *state) } } +static void audio_state_receive (struct audio_state *state, +int32_t **recv,size_t *recv_len) +{ +bool ok; +size_t page_count; +size_t recv_size; + + ok =chamelium_stream_receive_realtime_audio (state->stream, + &page_count, + recv, recv_len); +igt_assert (ok); + + state->recv_pages++; + state->msec = state->recv_pages * *recv_len / + (double ) state->capture.rate *1000 ; + +if (state->dump_fd >=0 ) { + recv_size = *recv_len *sizeof (int32_t ); +igt_assert (write (state->dump_fd, *recv, recv_size) == recv_size); + } +} +static void audio_state_stop (struct audio_state *state,bool success) {bool ok;
@@ -996,12 +1021,12 @@ audio_output_callback(void *data, void *buffer, int samples)static bool do_test_display_audio (struct audio_state *state) { -int msec, freq, step; +int freq, step;int32_t *recv, *buf;double *channel; -size_t i, j, streak, page_count; -size_t recv_len, buf_len, buf_cap, buf_size, channel_len; -bool ok, success; +size_t i, j, streak; +size_t recv_len, buf_len, buf_cap, channel_len; +bool success;int capture_chan; state->signal = audio_signal_init(state->playback.channels,
@@ -1057,13 +1082,8 @@ static bool do_test_display_audio(struct audio_state *state) success = false; streak =0 ; - msec =0 ; - i =0 ; -while (!success && msec <AUDIO_TIMEOUT ) { - ok =chamelium_stream_receive_realtime_audio (state->stream, - &page_count, - &recv, &recv_len); -igt_assert (ok); +while (!success && state->msec <AUDIO_TIMEOUT ) { +audio_state_receive (state, &recv, &recv_len);memcpy (&buf[buf_len], recv, recv_len *sizeof (int32_t )); buf_len += recv_len;
@@ -1072,13 +1092,7 @@ static bool do_test_display_audio(struct audio_state *state)continue ;igt_assert (buf_len == buf_cap); -if (state->dump_fd >=0 ) { - buf_size = buf_len *sizeof (int32_t ); -igt_assert (write (state->dump_fd, buf, buf_size) == buf_size); - } - - msec = i * channel_len / (double ) state->capture.rate *1000 ; -igt_debug ("Detecting audio signal, t=%d msec\n" , msec); +igt_debug ("Detecting audio signal, t=%d msec\n" , state->msec);for (j =0 ; j < state->playback.channels; j++) { capture_chan = state->channel_mapping[j];
@@ -1100,7 +1114,6 @@ static bool do_test_display_audio(struct audio_state *state) } buf_len =0 ; - i++; success = streak ==MIN_STREAK * state->playback.channels; }
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 series starting with [i-g-t,1/2] tests/kms_chamelium: refactor audio test
In reply to Simon Ser== Series Details ==
== Series Details ==
Series: series starting with [i-g-t,1/2] tests/kms_chamelium: refactor audio test
URL : https://patchwork.freedesktop.org/series/61034/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_6131 -> IGTPW_3046
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/61034/revisions/1/mbox/
Known issues
------------
Here are the changes found in IGTPW_3046 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_suspend@basic-s3:
- fi-blb-e6850: [PASS][1] -> [INCOMPLETE][2] ([fdo#107718])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/fi-blb-e6850/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/fi-blb-e6850/igt@[email protected]
* igt@i915_selftest@live_hangcheck:
- fi-apl-guc: [PASS][3] -> [FAIL][4] ([fdo#110623])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/fi-apl-guc/igt@i915_selftest@live_hangcheck.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/fi-apl-guc/igt@i915_selftest@live_hangcheck.html
#### Possible fixes ####
* igt@gem_exec_fence@basic-wait-default:
- {fi-icl-u3}: [DMESG-WARN][5] ([fdo#107724]) -> [PASS][6] +1 similar issue
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/fi-icl-u3/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/fi-icl-u3/igt@[email protected]
* igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm: [DMESG-FAIL][7] ([fdo#110235]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html
* igt@i915_selftest@live_execlists:
- fi-apl-guc: [INCOMPLETE][9] ([fdo#103927] / [fdo#109720]) -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/fi-apl-guc/igt@i915_selftest@live_execlists.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/fi-apl-guc/igt@i915_selftest@live_execlists.html
#### Warnings ####
* igt@runner@aborted:
- fi-apl-guc: [FAIL][11] ([fdo#108622] / [fdo#109720]) -> [FAIL][12] ([fdo#110622])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/fi-apl-guc/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/fi-apl-guc/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#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
[fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
[fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622
[fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720
[fdo#110235]: https://bugs.freedesktop.org/show_bug.cgi?id=110235
[fdo#110622]: https://bugs.freedesktop.org/show_bug.cgi?id=110622
[fdo#110623]: https://bugs.freedesktop.org/show_bug.cgi?id=110623
[fdo#110627]: https://bugs.freedesktop.org/show_bug.cgi?id=110627
Participating hosts (53 -> 46)
------------------------------
Missing (7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper fi-bdw-samus
Build changes
-------------
* IGT: IGT_5010 -> IGTPW_3046
CI_DRM_6131: bbf52691a94cc57dc9191e36dcca0361a72b178b @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3046: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/
IGT_5010: 631f3ac2e78c8d6332afc693bf290ae23d8d5685 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Patchwork
CI[igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,1/2] tests/kms_chamelium: refactor audio test
In reply to Simon Ser== Series Details ==
== Series Details ==
Series: series starting with [i-g-t,1/2] tests/kms_chamelium: refactor audio test
URL : https://patchwork.freedesktop.org/series/61034/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_6131_full -> IGTPW_3046_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/61034/revisions/1/mbox/
Known issues
------------
Here are the changes found in IGTPW_3046_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_cursor_crc@pipe-a-cursor-64x21-random:
- shard-kbl: [PASS][1] -> [FAIL][2] ([fdo#103232]) +1 similar issue
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-kbl2/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-kbl1/igt@[email protected]
- shard-apl: [PASS][3] -> [FAIL][4] ([fdo#103232]) +1 similar issue
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-apl2/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-apl5/igt@[email protected]
* igt@kms_cursor_crc@pipe-c-cursor-256x85-random:
- shard-hsw: [PASS][5] -> [INCOMPLETE][6] ([fdo#103540])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-hsw5/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-hsw6/igt@[email protected]
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
- shard-glk: [PASS][7] -> [FAIL][8] ([fdo#104873])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-glk8/igt@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-glk2/igt@[email protected]
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-glk: [PASS][9] -> [FAIL][10] ([fdo#102887] / [fdo#105363])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-glk3/igt@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-glk2/igt@[email protected]
* igt@kms_flip@flip-vs-suspend:
- shard-apl: [PASS][11] -> [DMESG-WARN][12] ([fdo#108566]) +1 similar issue
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-apl8/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-apl6/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt:
- shard-iclb: [PASS][13] -> [FAIL][14] ([fdo#103167]) +3 similar issues
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-iclb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-iclb7/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt.html
* igt@kms_psr2_su@page_flip:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109642])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-iclb2/igt@kms_psr2_su@page_flip.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-iclb6/igt@kms_psr2_su@page_flip.html
* igt@kms_psr@psr2_sprite_mmap_gtt:
- shard-iclb: [PASS][17] -> [SKIP][18] ([fdo#109441])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_gtt.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-iclb5/igt@kms_psr@psr2_sprite_mmap_gtt.html
* igt@kms_setmode@basic:
- shard-hsw: [PASS][19] -> [FAIL][20] ([fdo#99912])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-hsw5/igt@[email protected]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-hsw8/igt@[email protected]
* igt@kms_universal_plane@universal-plane-pipe-b-functional:
- shard-apl: [PASS][21] -> [FAIL][22] ([fdo#110037])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-apl7/igt@[email protected]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-apl4/igt@[email protected]
- shard-kbl: [PASS][23] -> [FAIL][24] ([fdo#110037])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-kbl7/igt@[email protected]
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-kbl2/igt@[email protected]
#### Possible fixes ####
* igt@gem_tiled_swapping@non-threaded:
- shard-glk: [DMESG-WARN][25] ([fdo#108686]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-glk7/igt@[email protected]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-glk7/igt@[email protected]
* igt@gem_workarounds@suspend-resume:
- shard-apl: [DMESG-WARN][27] ([fdo#108566]) -> [PASS][28] +3 similar issues
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-apl7/igt@[email protected]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-apl3/igt@[email protected]
* igt@kms_flip@2x-plain-flip-interruptible:
- shard-hsw: [SKIP][29] ([fdo#109271]) -> [PASS][30] +26 similar issues
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-hsw5/igt@[email protected]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-hsw7/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-badstride:
- shard-iclb: [FAIL][31] ([fdo#103167]) -> [PASS][32] +4 similar issues
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-iclb5/igt@[email protected]
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-iclb3/igt@[email protected]
* igt@kms_psr2_su@frontbuffer:
- shard-iclb: [SKIP][33] ([fdo#109642]) -> [PASS][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-iclb4/igt@[email protected]
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-iclb2/igt@[email protected]
* igt@kms_psr@psr2_cursor_render:
- shard-iclb: [SKIP][35] ([fdo#109441]) -> [PASS][36] +1 similar issue
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-iclb3/igt@kms_psr@psr2_cursor_render.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-iclb2/igt@kms_psr@psr2_cursor_render.html
* igt@kms_setmode@basic:
- shard-apl: [FAIL][37] ([fdo#99912]) -> [PASS][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-apl7/igt@[email protected]
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-apl5/igt@[email protected]
* igt@kms_sysfs_edid_timing:
- shard-hsw: [FAIL][39] ([fdo#100047]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-hsw5/igt@kms_sysfs_edid_timing.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-hsw5/igt@kms_sysfs_edid_timing.html
* igt@perf_pmu@rc6-runtime-pm:
- shard-hsw: [FAIL][41] ([fdo#105010]) -> [PASS][42]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-hsw4/igt@[email protected]
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-hsw8/igt@[email protected]
#### Warnings ####
* igt@gem_mmap_gtt@forked-big-copy-xy:
- shard-iclb: [TIMEOUT][43] ([fdo#109673]) -> [INCOMPLETE][44] ([fdo#107713] / [fdo#109100])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-iclb5/igt@[email protected]
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-iclb1/igt@[email protected]
* igt@prime_vgem@fence-wait-bsd1:
- shard-snb: [FAIL][45] -> [INCOMPLETE][46] ([fdo#105411]) +1 similar issue
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6131/shard-snb6/igt@[email protected]
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/shard-snb7/igt@[email protected]
[fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047
[fdo#102887]: https://bugs.freedesktop.org/show_bug.cgi?id=102887
[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#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873
[fdo#105010]: https://bugs.freedesktop.org/show_bug.cgi?id=105010
[fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
[fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411
[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#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#109673]: https://bugs.freedesktop.org/show_bug.cgi?id=109673
[fdo#110037]: https://bugs.freedesktop.org/show_bug.cgi?id=110037
[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_5010 -> IGTPW_3046
* Piglit: piglit_4509 -> None
CI_DRM_6131: bbf52691a94cc57dc9191e36dcca0361a72b178b @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3046: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3046/
IGT_5010: 631f3ac2e78c8d6332afc693bf290ae23d8d5685 @ 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_3046/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev