* [PATCH i-g-t 0/3] Switch the FFT library to meow_fft
@ 2024-09-13 10:44 Kamil Konieczny
2024-09-13 10:44 ` [PATCH i-g-t 1/3] lib/uwildmat: Move to a dedicated vendored library directory Kamil Konieczny
` (6 more replies)
0 siblings, 7 replies; 12+ messages in thread
From: Kamil Konieczny @ 2024-09-13 10:44 UTC (permalink / raw)
To: igt-dev
Cc: Kamil Konieczny, Ryszard Knop, Martin Peres, Simon Ser,
Petri Latvala, Mauro Carvalho Chehab
This is a resend of Ryszard Knop series from here:
https://patchwork.freedesktop.org/series/107093/
with a rebase and small cleanup in lib/igt_audio.c
and adding a SPDX licence to meow_fft files.
Old series description:
In Chamelium tests, FFT is used to compare the transmitted vs received
signal. Currently this is done with the GNU GSL library.
GSL is available under the GPL license which is incompatible with MIT,
as noted in #38. Switch to meow_fft, licensed under 0-clause BSD.
Cc: Ryszard Knop <ryszard.knop@intel.com>
Cc: Martin Peres <martin.peres@linux.intel.com>
Cc: Simon Ser <contact@emersion.fr>
Cc: Petri Latvala <adrinael@adrinael.net>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Ryszard Knop (3):
lib/uwildmat: Move to a dedicated vendored library directory
lib/vendor: Add the meow_fft library
lib/igt_audio: Replace GSL FFT usage with meow_fft
lib/igt_audio.c | 74 +-
lib/meson.build | 7 +-
lib/vendor/meow_fft/meow_fft.c | 12 +
lib/vendor/meow_fft/meow_fft.h | 2402 ++++++++++++++++++++++++++
lib/{ => vendor}/uwildmat/uwildmat.c | 0
lib/{ => vendor}/uwildmat/uwildmat.h | 0
6 files changed, 2480 insertions(+), 15 deletions(-)
create mode 100644 lib/vendor/meow_fft/meow_fft.c
create mode 100644 lib/vendor/meow_fft/meow_fft.h
rename lib/{ => vendor}/uwildmat/uwildmat.c (100%)
rename lib/{ => vendor}/uwildmat/uwildmat.h (100%)
--
2.43.0
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH i-g-t 1/3] lib/uwildmat: Move to a dedicated vendored library directory 2024-09-13 10:44 [PATCH i-g-t 0/3] Switch the FFT library to meow_fft Kamil Konieczny @ 2024-09-13 10:44 ` Kamil Konieczny 2024-10-08 6:07 ` Peter Senna Tschudin 2024-09-13 10:44 ` [PATCH i-g-t 2/3] lib/vendor: Add the meow_fft library Kamil Konieczny ` (5 subsequent siblings) 6 siblings, 1 reply; 12+ messages in thread From: Kamil Konieczny @ 2024-09-13 10:44 UTC (permalink / raw) To: igt-dev; +Cc: Ryszard Knop From: Ryszard Knop <ryszard.knop@intel.com> This directory is in the igt tree for convenience. It's not immediately clear that this is a vendored library, so move it into vendor/ and make Meson add that directory for easy includes etc. Signed-off-by: Ryszard Knop <ryszard.knop@intel.com> --- lib/meson.build | 6 +++++- lib/{ => vendor}/uwildmat/uwildmat.c | 0 lib/{ => vendor}/uwildmat/uwildmat.h | 0 3 files changed, 5 insertions(+), 1 deletion(-) rename lib/{ => vendor}/uwildmat/uwildmat.c (100%) rename lib/{ => vendor}/uwildmat/uwildmat.h (100%) diff --git a/lib/meson.build b/lib/meson.build index 1c83bc5c3..b10410c8a 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -95,7 +95,6 @@ lib_sources = [ 'igt_pm.c', 'igt_dummyload.c', 'igt_store.c', - 'uwildmat/uwildmat.c', 'igt_kmod.c', 'igt_ktap.c', 'igt_panfrost.c', @@ -117,6 +116,9 @@ lib_sources = [ 'xe/xe_query.c', 'xe/xe_spin.c', 'xe/xe_util.c', + + # Vendored libraries: + 'vendor/uwildmat/uwildmat.c', ] lib_deps = [ @@ -135,6 +137,8 @@ lib_deps = [ zlib ] +inc = [ inc, include_directories('vendor') ] + if libdrm_nouveau.found() lib_deps += libdrm_nouveau lib_sources += [ diff --git a/lib/uwildmat/uwildmat.c b/lib/vendor/uwildmat/uwildmat.c similarity index 100% rename from lib/uwildmat/uwildmat.c rename to lib/vendor/uwildmat/uwildmat.c diff --git a/lib/uwildmat/uwildmat.h b/lib/vendor/uwildmat/uwildmat.h similarity index 100% rename from lib/uwildmat/uwildmat.h rename to lib/vendor/uwildmat/uwildmat.h -- 2.43.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH i-g-t 1/3] lib/uwildmat: Move to a dedicated vendored library directory 2024-09-13 10:44 ` [PATCH i-g-t 1/3] lib/uwildmat: Move to a dedicated vendored library directory Kamil Konieczny @ 2024-10-08 6:07 ` Peter Senna Tschudin 0 siblings, 0 replies; 12+ messages in thread From: Peter Senna Tschudin @ 2024-10-08 6:07 UTC (permalink / raw) To: Kamil Konieczny, igt-dev; +Cc: Ryszard Knop On 13.09.2024 12:44, Kamil Konieczny wrote: > From: Ryszard Knop <ryszard.knop@intel.com> > > This directory is in the igt tree for convenience. It's not immediately > clear that this is a vendored library, so move it into vendor/ and make > Meson add that directory for easy includes etc. > Reviewed-by: Peter Senna Tschudin <peter.senna@linux.intel.com> > Signed-off-by: Ryszard Knop <ryszard.knop@intel.com> > --- > lib/meson.build | 6 +++++- > lib/{ => vendor}/uwildmat/uwildmat.c | 0 > lib/{ => vendor}/uwildmat/uwildmat.h | 0 > 3 files changed, 5 insertions(+), 1 deletion(-) > rename lib/{ => vendor}/uwildmat/uwildmat.c (100%) > rename lib/{ => vendor}/uwildmat/uwildmat.h (100%) > > diff --git a/lib/meson.build b/lib/meson.build > index 1c83bc5c3..b10410c8a 100644 > --- a/lib/meson.build > +++ b/lib/meson.build > @@ -95,7 +95,6 @@ lib_sources = [ > 'igt_pm.c', > 'igt_dummyload.c', > 'igt_store.c', > - 'uwildmat/uwildmat.c', > 'igt_kmod.c', > 'igt_ktap.c', > 'igt_panfrost.c', > @@ -117,6 +116,9 @@ lib_sources = [ > 'xe/xe_query.c', > 'xe/xe_spin.c', > 'xe/xe_util.c', > + > + # Vendored libraries: > + 'vendor/uwildmat/uwildmat.c', > ] > > lib_deps = [ > @@ -135,6 +137,8 @@ lib_deps = [ > zlib > ] > > +inc = [ inc, include_directories('vendor') ] > + > if libdrm_nouveau.found() > lib_deps += libdrm_nouveau > lib_sources += [ > diff --git a/lib/uwildmat/uwildmat.c b/lib/vendor/uwildmat/uwildmat.c > similarity index 100% > rename from lib/uwildmat/uwildmat.c > rename to lib/vendor/uwildmat/uwildmat.c > diff --git a/lib/uwildmat/uwildmat.h b/lib/vendor/uwildmat/uwildmat.h > similarity index 100% > rename from lib/uwildmat/uwildmat.h > rename to lib/vendor/uwildmat/uwildmat.h Intel Semiconductor AG Registered No. 020.30.913.786-7 Registered Office: Dufourstrasse 101 , 8008 Zurich, Switzerland ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH i-g-t 2/3] lib/vendor: Add the meow_fft library 2024-09-13 10:44 [PATCH i-g-t 0/3] Switch the FFT library to meow_fft Kamil Konieczny 2024-09-13 10:44 ` [PATCH i-g-t 1/3] lib/uwildmat: Move to a dedicated vendored library directory Kamil Konieczny @ 2024-09-13 10:44 ` Kamil Konieczny 2024-10-08 6:06 ` Peter Senna Tschudin 2024-09-13 10:44 ` [PATCH i-g-t 3/3] lib/igt_audio: Replace GSL FFT usage with meow_fft Kamil Konieczny ` (4 subsequent siblings) 6 siblings, 1 reply; 12+ messages in thread From: Kamil Konieczny @ 2024-09-13 10:44 UTC (permalink / raw) To: igt-dev; +Cc: Ryszard Knop, Kamil Konieczny From: Ryszard Knop <ryszard.knop@intel.com> The meow_fft library provides a simple and permissively-licensed Fast Fourier Transform implementation. It is an alternative for GSL's FFT. The library was modified to conform to the IGT's compiler warning flags and to use doubles instead of floats by default for higher accuracy. v2: Replace licence with equivalent SPDX 0BSD (Kamil) Signed-off-by: Ryszard Knop <ryszard.knop@intel.com> Signed-off-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> --- lib/meson.build | 1 + lib/vendor/meow_fft/meow_fft.c | 12 + lib/vendor/meow_fft/meow_fft.h | 2402 ++++++++++++++++++++++++++++++++ 3 files changed, 2415 insertions(+) create mode 100644 lib/vendor/meow_fft/meow_fft.c create mode 100644 lib/vendor/meow_fft/meow_fft.h diff --git a/lib/meson.build b/lib/meson.build index b10410c8a..dff8b4728 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -119,6 +119,7 @@ lib_sources = [ # Vendored libraries: 'vendor/uwildmat/uwildmat.c', + 'vendor/meow_fft/meow_fft.c', ] lib_deps = [ diff --git a/lib/vendor/meow_fft/meow_fft.c b/lib/vendor/meow_fft/meow_fft.c new file mode 100644 index 000000000..a1ec504cd --- /dev/null +++ b/lib/vendor/meow_fft/meow_fft.c @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: 0BSD + +#define MEOW_FFT_IMPLEMENTATION +#define MEOW_FLOAT_TYPE double +#include "meow_fft.h" + +/* + * This is a dummy file to build the object file containing + * the meow_fft implementation. All code should go into the + * header itself. If you want to use it in any other file, + * just #include the header without defining MEOW_FFT_IMPL. + */ diff --git a/lib/vendor/meow_fft/meow_fft.h b/lib/vendor/meow_fft/meow_fft.h new file mode 100644 index 000000000..0269211ea --- /dev/null +++ b/lib/vendor/meow_fft/meow_fft.h @@ -0,0 +1,2402 @@ +/* SPDX-License-Identifier: 0BSD */ +/* + Imported from https://github.com/JodiTheTigger/meow_fft + Pull Request #11 + + Changes for igt-gpu-tools: + - Default MEOW_FLOAT_TYPE is now double + - Added extra function prototypes to satisfy -Wmissing-prototypes + - Hoisted variable declarations to satisfy -Wdeclaration-after-statement +*/ +/* + meow_fft. My Easy Oresome Wonderful Fast Fourier Transform. + Copyright (C) 2017 Richard Maxwell <jodi.the.tigger@gmail.com> +*/ + +#ifndef MEOW_FFT +#define MEOW_FFT + +#include <stdlib.h> +// for size_t, abort + +#ifdef __cplusplus +extern "C" { +#endif + +// C-API ----------------------------------------------------------------------- + +// Can be float, double or long double +#ifndef MEOW_FLOAT_TYPE +#define MEOW_FLOAT_TYPE double +#endif + +typedef MEOW_FLOAT_TYPE Meow_Float; + +typedef struct Meow_FFT_Complex +{ + Meow_Float r; + Meow_Float j; +} +Meow_FFT_Complex; + +struct Meow_FFT_Workset; +struct Meow_FFT_Workset_Real; + +size_t meow_fft_generate_workset +( + int N + , struct Meow_FFT_Workset* workset +); +// returns the size of the workset if null is passed. 0 if N is invalid. + +size_t meow_fft_generate_workset_real +( + int N + , struct Meow_FFT_Workset_Real* workset +); +// returns the size of the workset if null is passed. 0 if N is invalid. + +unsigned meow_fft_is_slow (const struct Meow_FFT_Workset* workset); +unsigned meow_fft_is_slow_real(const struct Meow_FFT_Workset_Real* workset); +// returns non-zero if the fft has a slow dft in any one of its stages. + +// C-API (ffts) ---------------------------------------------------------------- + +// NOTES: +// countof(out) == countof(in). +// In order to do that I have mixed out[0] with out[N/2]. That is: +// out[0].r == out[0].r, out[0].j = out[N/2].r + + +void meow_fft_real +( + const struct Meow_FFT_Workset_Real* workset + , const Meow_Float* in + , Meow_FFT_Complex* out +); + +void meow_fft_real_i +( + const struct Meow_FFT_Workset_Real* workset + , const Meow_FFT_Complex* in + , Meow_FFT_Complex* temp + , Meow_Float* out +); + +void meow_fft +( + const struct Meow_FFT_Workset* data + , const Meow_FFT_Complex* in + , Meow_FFT_Complex* out +); + +void meow_fft_i +( + const struct Meow_FFT_Workset* data + , const Meow_FFT_Complex* in + , Meow_FFT_Complex* out +); + +// ----------------------------------------------------------------------------- + +#ifdef __cplusplus +} +#endif + +#endif // MEOW_FFT + +#ifdef MEOW_FFT_IMPLEMENTATION + +// Reading List ---------------------------------------------------------------- +// +// It's a circle! -> How FFTs _actually_ work +// http://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/ +// +// How to get radix-2, 3, 4, and 5 formulas: +// http://www.briangough.com/fftalgorithms.pdf pages 18 and 19 +// +// How do make a faster fft when only dealing with real (non-complex) inputs. +// (Warning, the maths is confusing due to inconsisten formulas and assumptions) +// http://www.engineeringproductivitytools.com/stuff/T0001/PT10.HTM +// +// Finally, know that ffts are pretty much as fast as you can get, you need +// to start making them cache friendly to get any extra speed. +// https://math.mit.edu/~stevenj/18.335/FFTW-Alan-2008.pdf +// +// ----------------------------------------------------------------------------- + +#include <math.h> +#include <stdint.h> + +typedef const Meow_FFT_Complex Complex; + +#define MEOW_TAU 6.283185307179586476925286766559005768394338798750211641949889 + +// Plumbing -------------------------------------------------------------------- + +typedef struct Meow_Fft_Stages +{ + unsigned count; + unsigned* radix; + unsigned* remainder; + unsigned* offsets; +} +Meow_Fft_Stages; + +typedef struct Meow_FFT_Workset +{ + int N; + + Meow_FFT_Complex* wn; + // Non-null only defined if there is a slow-dft as one of the radix stages. + + Meow_FFT_Complex* wn_ordered; + // Sequentially ordered per stage, will be duplicates between stages. + + Meow_Fft_Stages stages; +} +Meow_FFT_Workset; + +typedef struct Meow_FFT_Workset_Real +{ + Meow_FFT_Complex* w_2n; + Meow_FFT_Workset half; +} +Meow_FFT_Workset_Real; + +typedef struct Meow_Stage_Info +{ + unsigned is_slow; + unsigned stage_count; + unsigned w_count; +} +Meow_Stage_Info; + +// --------------------- IGT prototype changes start here --------------------- + +unsigned meow_is_codelet(unsigned radix); +void meow_make_twiddles(unsigned n, unsigned count, Meow_FFT_Complex* w); +unsigned meow_make_twiddles_sequential(unsigned n, Meow_FFT_Complex* w, Meow_Fft_Stages* stages); +Meow_Stage_Info meow_calculate_stages(unsigned n, Meow_FFT_Workset* workset); + +void meow_dft_n_dit(const Meow_FFT_Complex* w_n, + Meow_FFT_Complex* out, + unsigned count, + unsigned w_multiplier, + unsigned radix, + unsigned N, + unsigned reverse); + +void meow_radix_2_dit(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); +void meow_radix_3_dit(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); +void meow_radix_4_dit(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); +void meow_radix_5_dit(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); + +void meow_radix_2_dit_i(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); +void meow_radix_3_dit_i(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); +void meow_radix_4_dit_i(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); +void meow_radix_5_dit_i(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); + +void meow_recursive_fft_mixed_meow_radix_dit(const Meow_FFT_Workset* fft, + unsigned stage, + Complex* in, + Meow_FFT_Complex* out, + unsigned w_mul); + +void meow_recursive_fft_mixed_meow_radix_dit_i(const Meow_FFT_Workset* fft, + unsigned stage, + Complex* in, + Meow_FFT_Complex* out, + unsigned w_mul); + +// ---------------------- IGT prototype changes end here ---------------------- + +unsigned meow_is_codelet(unsigned radix) +{ + return ((radix <= 5) || (radix == 8)); +} + +void meow_make_twiddles +( + unsigned n + , unsigned count + , Meow_FFT_Complex* w +) +{ + const double ni = 1.0f / n; + for (unsigned i = 0; i < count; ++i) + { + w[i].r = (Meow_Float) cos(MEOW_TAU * i * ni); + w[i].j = (Meow_Float) sin(MEOW_TAU * i * ni); + } +} + +unsigned meow_make_twiddles_sequential +( + unsigned n + , Meow_FFT_Complex* w + , Meow_Fft_Stages* stages +) +// Returns number of W constants needed. +{ + // Figure out the tiddle offsets. + unsigned w_count = 0; + { + unsigned offset = 0; + + for (unsigned s = 0; s < stages->count; s++) + { + unsigned r = stages->radix[s]; + unsigned count = stages->remainder[s]; + + unsigned amount = meow_is_codelet(r) ? (r - 1) * (count - 1) : 0u; + + stages->offsets[s] = amount; + offset += amount; + } + + w_count = offset; + + for (unsigned s = 0; s < stages->count; s++) + { + unsigned count = stages->offsets[s]; + offset -= count; + stages->offsets[s] = offset; + } + } + + // Fill in the twiddles so that they are accessed sequentially in the radix + // code for best cacheline use. + if (w) + { + unsigned w_mul = 1; + double ni = 1.0 / n; + + for (unsigned s = 0; s < stages->count; s++) + { + const unsigned radix = stages->radix[s]; + const unsigned count = stages->remainder[s]; + unsigned offset = stages->offsets[s]; + + if (meow_is_codelet(radix)) + { + for (unsigned i = 1 ; i < count; i++) + { + for (unsigned j = 1; j < radix; j++) + { + const unsigned w_x = i * j * w_mul; + + w[offset].r = (Meow_Float) cos(MEOW_TAU * w_x * ni); + w[offset].j = (Meow_Float) sin(MEOW_TAU * w_x * ni); + + offset++; + } + } + } + + w_mul *= radix; + } + } + + return w_count; +} + +Meow_Stage_Info meow_calculate_stages(unsigned n, Meow_FFT_Workset* workset) +{ + unsigned is_slow = 0u; + unsigned stage = 0u; + unsigned w_count = 0u; + + while (n > 1) + { + // premade codelets 2, 3, 4, 5, 8 + unsigned i = 8; + for (; i > 1; i--) + { + if ((i == 7) || (i == 6)) + { + // don't have radix-7 or radix-6. + continue; + } + + if (!(n % i)) + { + w_count += ((i - 1) * (n - 1)); + break; + } + } + + // bah, plain slow dft instead + if (i == 1) + { + is_slow = 1; + i = 7; + for (; i <= n; i++) + { + if (!(n % i)) + { + break; + } + } + } + + n /= i; + + if (workset) + { + workset->stages.radix[stage] = i; + workset->stages.remainder[stage] = n; + } + + stage++; + } + + { + Meow_Stage_Info result = + { + is_slow + , stage + , w_count + }; + + return result; + } +} + +size_t meow_fft_generate_workset(int N, Meow_FFT_Workset* workset) +{ + size_t size_workset, size_radix, size_remainder, size_offsets; + size_t size_twiddles, size_twiddles_ordered, size_total; + Meow_Stage_Info info; + + if (N < 2) + { + // Too small. + return 0; + } + + info = meow_calculate_stages(N, NULL); + + size_workset = sizeof(Meow_FFT_Workset); + size_radix = info.stage_count * sizeof(int); + size_remainder = info.stage_count * sizeof(int); + size_offsets = info.stage_count * sizeof(int); + + size_twiddles_ordered = + info.w_count * sizeof(Meow_FFT_Complex); + + size_twiddles = + N * sizeof(Meow_FFT_Complex) * info.is_slow; + + size_total = + size_workset + + size_twiddles + + size_radix + + size_remainder + + size_offsets + + size_twiddles_ordered; + + if (workset) + { + uint8_t* data = (uint8_t*)(workset); + + uint8_t* data_wn = data + size_workset; + uint8_t* data_radix = data_wn + size_twiddles; + uint8_t* data_remainder = data_radix + size_radix; + uint8_t* data_offsets = data_remainder + size_offsets; + uint8_t* data_wn_ordered = data_offsets + size_remainder; + + workset->wn = + (info.is_slow) + ? (Meow_FFT_Complex*)(data_wn) + : NULL; + + workset->stages.radix = (unsigned*)(data_radix); + workset->stages.remainder = (unsigned*)(data_remainder); + workset->stages.offsets = (unsigned*)(data_offsets); + workset->stages.count = info.stage_count; + workset->wn_ordered = (Meow_FFT_Complex*)(data_wn_ordered); + workset->N = N; + + if (workset->wn) + { + meow_make_twiddles(N, N, workset->wn); + } + + meow_calculate_stages(N, workset); + + meow_make_twiddles_sequential + ( + N + , workset->wn_ordered + , &workset->stages + ); + } + + return size_total; +} + +size_t meow_fft_generate_workset_real +( + const int N + , Meow_FFT_Workset_Real* workset +) +{ + unsigned N_2, N_4; + size_t size_workset, size_w_2n, size_half; + + if ((N < 4) || (N % 2)) + { + // Too small or not divisible by two. + return 0; + } + + N_2 = N / 2; + N_4 = N / 4; + + size_workset = sizeof(Meow_FFT_Workset_Real); + size_w_2n = (N_4 + 1) * sizeof(Meow_FFT_Complex); + size_half = meow_fft_generate_workset(N_2, NULL); + + if (workset) + { + uint8_t *data, *data_w_2n; + + meow_fft_generate_workset(N_2, &workset->half); + + data = (uint8_t*)(&workset->half); + data_w_2n = data + size_half; + + workset->w_2n = (Meow_FFT_Complex*)(data_w_2n); + + meow_make_twiddles(N, N_4 + 1, workset->w_2n); + } + + return size_workset + size_w_2n + size_half; +} + +// ----------------------------------------------------------------------------- + +unsigned meow_fft_is_slow(const Meow_FFT_Workset* workset) +{ + return !!(workset->wn); +} + +unsigned meow_fft_is_slow_real(const Meow_FFT_Workset_Real* workset) +{ + return meow_fft_is_slow(&workset->half); +} + +// ----------------------------------------------------------------------------- + +inline Meow_FFT_Complex meow_add +( + const Meow_FFT_Complex lhs + , const Meow_FFT_Complex rhs +) +{ + Meow_FFT_Complex result = + { + lhs.r + rhs.r + , lhs.j + rhs.j + }; + + return result; +} + +inline Meow_FFT_Complex meow_sub +( + const Meow_FFT_Complex lhs + , const Meow_FFT_Complex rhs +) +{ + Meow_FFT_Complex result = + { + lhs.r - rhs.r + , lhs.j - rhs.j + }; + + return result; +} + +inline Meow_FFT_Complex meow_negate(const Meow_FFT_Complex lhs) +{ + Meow_FFT_Complex result = + { + -lhs.r + , -lhs.j + }; + + return result; +} + +inline Meow_FFT_Complex meow_conjugate(const Meow_FFT_Complex lhs) +{ + Meow_FFT_Complex result = + { + lhs.r + , -lhs.j + }; + + return result; +} + +inline Meow_FFT_Complex meow_mul +( + const Meow_FFT_Complex lhs + , const Meow_FFT_Complex rhs +) +{ + Meow_FFT_Complex result = + { + (lhs.r * rhs.r) - (lhs.j * rhs.j) + , (lhs.r * rhs.j) + (lhs.j * rhs.r) + }; + + return result; +} + +inline Meow_FFT_Complex meow_mul_by_conjugate +( + const Meow_FFT_Complex lhs + , const Meow_FFT_Complex rhs +) +{ + Meow_FFT_Complex result = + { + (lhs.r * rhs.r) + (lhs.j * rhs.j) + , (lhs.j * rhs.r) - (lhs.r * rhs.j) + }; + + return result; +} + +inline Meow_FFT_Complex meow_mul_by_j(const Meow_FFT_Complex lhs) +{ + Meow_FFT_Complex result = + { + -lhs.j + , lhs.r + }; + + return result; +} + +inline Meow_FFT_Complex meow_mulf +( + const Meow_FFT_Complex lhs + , Meow_Float rhs +) +{ + Meow_FFT_Complex result = + { + lhs.r * rhs + , lhs.j * rhs + }; + + return result; +} + +// ----------------------------------------------------------------------------- + +// https://developercommunity.visualstudio.com/t/fatal-error-C1001:-Internal-compiler-err/1390698 +// https://developercommunity.visualstudio.com/t/bug-in-visual-c-2019-and-below-i-think-it-is-relat/1119500 +// https://developercommunity.visualstudio.com/t/optimized-compiler-bug/846597 +#if defined(_MSC_VER) && (_MSC_VER < 1930) +#define MSVC_BUGFIX volatile +#else +#define MSVC_BUGFIX +#endif + +void meow_dft_n_dit +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count + , unsigned w_multiplier + , unsigned radix + , unsigned N + , unsigned reverse +) +{ + Meow_FFT_Complex scratch[2048]; + // Can I do something with the knowledge that n is always odd? + + if (radix > 2048) + { + abort(); + // removing VLAs, so set a hard limit we support. + } + + for (unsigned butterfly = 0; butterfly < count; ++butterfly) + { + for (unsigned i = 0; i < radix; i++) + { + scratch[i] = out[i * count + butterfly]; + } + + for (unsigned i = 0 ; i < radix ; ++i) + { + MSVC_BUGFIX const unsigned index_out = i * count + butterfly; + + // W0 is always 1 + Meow_FFT_Complex sum = scratch[0]; + + for (unsigned j = 1; j < radix; ++j ) + { + const unsigned wi = (j * w_multiplier * index_out) % N; + Complex w = w_n[wi]; + Complex in = scratch[j]; + + Meow_Float rr; + Meow_Float jj; + + if (reverse) + { + rr = (in.r * w.r) - (in.j * w.j); + jj = (in.r * w.j) + (in.j * w.r); + } + else + { + rr = (in.r * w.r) + (in.j * w.j); + jj = (in.j * w.r) - (in.r * w.j); + } + + sum.r += rr; + sum.j += jj; + } + + out[index_out] = sum; + } + } +} + +// ----------------------------------------------------------------------------- + +// Algorithms taken from +// http://www.briangough.com/fftalgorithms.pdf +// (equations 135 to 146) +// in, out and twiddle indicies taken from kiss_fft +// All twiddles are assumed to be ifft calculated. Conjugation is done in the +// maths. +// All twiddle input arrays are assumed to be sequentiall accessed. Twiddle +// indicies are pre-calculated. + +// ----------------------------------------------------------------------------- +// Forward +// ----------------------------------------------------------------------------- + +void meow_radix_2_dit +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + // butteryfly 0 always has the twiddle factor == 1.0f + // so special case that one. + { + Complex z0 = out[0]; + Complex z1 = out[count]; + + out[0] = meow_add(z0, z1); + out[count] = meow_sub(z0, z1); + } + + for (unsigned butterfly = 1; butterfly < count; ++butterfly) + { + Complex w = w_n[butterfly - 1]; + + const unsigned i0 = butterfly; + const unsigned i1 = butterfly + count; + + Complex z0 = out[i0]; + Complex z1 = meow_mul_by_conjugate(out[i1], w); + + out[i0] = meow_add(z0, z1); + out[i1] = meow_sub(z0, z1); + // Equation 135 + } +} + +#define MEOW_SIN_PI_3 -0.866025403784438646763723170752936183471402626905190314f + +void meow_radix_3_dit +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + unsigned wi = 0; + + // W[0] is always 1.0f; + { + const unsigned i0 = 0 * count; + const unsigned i1 = 1 * count; + const unsigned i2 = 2 * count; + + Complex z0 = out[i0]; + Complex z1 = out[i1]; + Complex z2 = out[i2]; + + Complex t1 = meow_add(z1, z2); + Complex t2 = meow_sub(z0, meow_mulf(t1, 0.5)); + Complex t3j = meow_mul_by_j(meow_mulf(meow_sub(z1, z2), MEOW_SIN_PI_3)); + + out[i0] = meow_add(z0, t1); + out[i1] = meow_add(t2, t3j); + out[i2] = meow_sub(t2, t3j); + } + + for (unsigned butterfly = 1; butterfly < count; butterfly++, wi+=2) + { + Complex w1 = w_n[wi + 0]; + Complex w2 = w_n[wi + 1]; + + const unsigned i0 = butterfly; + const unsigned i1 = butterfly + count; + const unsigned i2 = butterfly + 2 * count; + + Complex z0 = out[i0]; + Complex z1 = meow_mul_by_conjugate(out[i1], w1); + Complex z2 = meow_mul_by_conjugate(out[i2], w2); + + Complex t1 = meow_add(z1, z2); + Complex t2 = meow_sub(z0, meow_mulf(t1, 0.5)); + Complex t3j = meow_mul_by_j(meow_mulf(meow_sub(z1, z2), MEOW_SIN_PI_3)); + // Equation 136 + + out[i0] = meow_add(z0, t1); + out[i1] = meow_add(t2, t3j); + out[i2] = meow_sub(t2, t3j); + // Equation 137 + } +} + +void meow_radix_4_dit +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + unsigned wi = 0u; + + // W[0] is always 1.0f; + { + const unsigned i0 = 0 * count; + const unsigned i1 = 1 * count; + const unsigned i2 = 2 * count; + const unsigned i3 = 3 * count; + + Complex z0 = out[i0]; + Complex z1 = out[i1]; + Complex z2 = out[i2]; + Complex z3 = out[i3]; + + Complex t1 = meow_add(z0, z2); + Complex t2 = meow_add(z1, z3); + Complex t3 = meow_sub(z0, z2); + Complex t4j = meow_negate(meow_mul_by_j(meow_sub(z1, z3))); + + out[i0] = meow_add(t1, t2); + out[i1] = meow_add(t3, t4j); + out[i2] = meow_sub(t1, t2); + out[i3] = meow_sub(t3, t4j); + } + + for (unsigned butterfly = 1; butterfly < count; ++butterfly, wi+=3) + { + Complex w1 = w_n[wi + 0]; + Complex w2 = w_n[wi + 1]; + Complex w3 = w_n[wi + 2]; + + const unsigned i0 = butterfly + 0 * count; + const unsigned i1 = butterfly + 1 * count; + const unsigned i2 = butterfly + 2 * count; + const unsigned i3 = butterfly + 3 * count; + + Complex z0 = out[i0]; + Complex z1 = meow_mul_by_conjugate(out[i1], w1); + Complex z2 = meow_mul_by_conjugate(out[i2], w2); + Complex z3 = meow_mul_by_conjugate(out[i3], w3); + + Complex t1 = meow_add(z0, z2); + Complex t2 = meow_add(z1, z3); + Complex t3 = meow_sub(z0, z2); + Complex t4j = meow_negate(meow_mul_by_j(meow_sub(z1, z3))); + // Equations 138 + // Also instead of conjugating the input and multplying with the + // twiddles for the ifft, we invert the twiddles instead. This works + // fine except here, the mul_by_j is assuming that it's the forward + // fft twiddle we are multiplying with, not the conjugated one we + // actually have. So we have to conjugate it _back_ if we are doing the + // ifft. + // Also, had to multiply by -j, not j for reasons I am yet to grasp. + + out[i0] = meow_add(t1, t2); + out[i1] = meow_add(t3, t4j); + out[i2] = meow_sub(t1, t2); + out[i3] = meow_sub(t3, t4j); + // Equations 139 + } +} + +#define MEOW_SQR_5_DIV_4 0.5590169943749474241022934171828190588601545899028814f +#define MEOW_SIN_2PI_5 -0.9510565162951535721164393333793821434056986341257502f +#define MEOW_SIN_2PI_10 -0.5877852522924731291687059546390727685976524376431459f + +void meow_radix_5_dit +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + unsigned wi = 0u; + + // W[0] is always 1.0f; + { + const unsigned i0 = 0 * count; + const unsigned i1 = 1 * count; + const unsigned i2 = 2 * count; + const unsigned i3 = 3 * count; + const unsigned i4 = 4 * count; + + Complex z0 = out[i0]; + Complex z1 = out[i1]; + Complex z2 = out[i2]; + Complex z3 = out[i3]; + Complex z4 = out[i4]; + + Complex t1 = meow_add(z1, z4); + Complex t2 = meow_add(z2, z3); + Complex t3 = meow_sub(z1, z4); + Complex t4 = meow_sub(z2, z3); + // Equations 140 + + Complex t5 = meow_add(t1, t2); + Complex t6 = meow_mulf(meow_sub(t1, t2), MEOW_SQR_5_DIV_4); + Complex t7 = meow_sub(z0, meow_mulf(t5, 0.25f)); + // Equation 141 + + Complex t8 = meow_add(t7, t6); + Complex t9 = meow_sub(t7, t6); + // Equation 142 + + Complex t10j = meow_mul_by_j + ( + meow_add + ( + meow_mulf(t3, MEOW_SIN_2PI_5) + , meow_mulf(t4, MEOW_SIN_2PI_10) + ) + ); + + Complex t11j = meow_mul_by_j + ( + meow_sub + ( + meow_mulf(t3, MEOW_SIN_2PI_10) + , meow_mulf(t4, MEOW_SIN_2PI_5) + ) + ); + // Equation 143 + + out[i0] = meow_add(z0, t5); + // Equation 144 + + out[i1] = meow_add(t8, t10j); + out[i2] = meow_add(t9, t11j); + // Equation 145 + + out[i3] = meow_sub(t9, t11j); + out[i4] = meow_sub(t8, t10j); + // Equation 146 + } + + for (unsigned butterfly = 1; butterfly < count; ++butterfly, wi+=4) + { + Complex w1 = w_n[wi + 0]; + Complex w2 = w_n[wi + 1]; + Complex w3 = w_n[wi + 2]; + Complex w4 = w_n[wi + 3]; + + unsigned i0 = butterfly + 0 * count; + unsigned i1 = butterfly + 1 * count; + unsigned i2 = butterfly + 2 * count; + unsigned i3 = butterfly + 3 * count; + unsigned i4 = butterfly + 4 * count; + + Complex z0 = out[i0]; + Complex z1 = meow_mul_by_conjugate(out[i1], w1); + Complex z2 = meow_mul_by_conjugate(out[i2], w2); + Complex z3 = meow_mul_by_conjugate(out[i3], w3); + Complex z4 = meow_mul_by_conjugate(out[i4], w4); + + Complex t1 = meow_add(z1, z4); + Complex t2 = meow_add(z2, z3); + Complex t3 = meow_sub(z1, z4); + Complex t4 = meow_sub(z2, z3); + // Equations 140 + + Complex t5 = meow_add(t1, t2); + Complex t6 = meow_mulf(meow_sub(t1, t2), MEOW_SQR_5_DIV_4); + Complex t7 = meow_sub(z0, meow_mulf(t5, 0.25f)); + // Equation 141 + + Complex t8 = meow_add(t7, t6); + Complex t9 = meow_sub(t7, t6); + // Equation 142 + + Complex t10j = meow_mul_by_j + ( + meow_add + ( + meow_mulf(t3, MEOW_SIN_2PI_5) + , meow_mulf(t4, MEOW_SIN_2PI_10) + ) + ); + + Complex t11j = meow_mul_by_j + ( + meow_sub + ( + meow_mulf(t3, MEOW_SIN_2PI_10) + , meow_mulf(t4, MEOW_SIN_2PI_5) + ) + ); + // Equation 143 + + out[i0] = meow_add(z0, t5); + // Equation 144 + + out[i1] = meow_add(t8, t10j); + out[i2] = meow_add(t9, t11j); + // Equation 145 + + out[i3] = meow_sub(t9, t11j); + out[i4] = meow_sub(t8, t10j); + // Equation 146 + } +} + +#define MEOW_1_DIV_SQR_2 0.707106781186547524400844362104849039284835938f + +static void meow_radix_8_dit +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + const Meow_Float* W = &w_n[0].r; + + { + Meow_Float T3; + Meow_Float T23; + Meow_Float T18; + Meow_Float T38; + Meow_Float T6; + Meow_Float T37; + Meow_Float T21; + Meow_Float T24; + Meow_Float T13; + Meow_Float T49; + Meow_Float T35; + Meow_Float T43; + Meow_Float T10; + Meow_Float T48; + Meow_Float T30; + Meow_Float T42; + { + Meow_Float T1; + Meow_Float T2; + Meow_Float T19; + Meow_Float T20; + T1 = out[0].r; + T2 = out[count * 4].r; + T3 = T1 + T2; + T23 = T1 - T2; + { + Meow_Float T16; + Meow_Float T17; + Meow_Float T4; + Meow_Float T5; + T16 = out[0].j; + T17 = out[count * 4].j; + T18 = T16 + T17; + T38 = T16 - T17; + T4 = out[count * 2].r; + T5 = out[count * 6].r; + T6 = T4 + T5; + T37 = T4 - T5; + } + T19 = out[count * 2].j; + T20 = out[count * 6].j; + T21 = T19 + T20; + T24 = T19 - T20; + { + Meow_Float T11; + Meow_Float T12; + Meow_Float T31; + Meow_Float T32; + Meow_Float T33; + Meow_Float T34; + T11 = out[count * 7].r; + T12 = out[count * 3].r; + T31 = T11 - T12; + T32 = out[count * 7].j; + T33 = out[count * 3].j; + T34 = T32 - T33; + T13 = T11 + T12; + T49 = T32 + T33; + T35 = T31 - T34; + T43 = T31 + T34; + } + { + Meow_Float T8; + Meow_Float T9; + Meow_Float T26; + Meow_Float T27; + Meow_Float T28; + Meow_Float T29; + T8 = out[count * 1].r; + T9 = out[count * 5].r; + T26 = T8 - T9; + T27 = out[count * 1].j; + T28 = out[count * 5].j; + T29 = T27 - T28; + T10 = T8 + T9; + T48 = T27 + T28; + T30 = T26 + T29; + T42 = T29 - T26; + } + } + { + Meow_Float T7; + Meow_Float T14; + Meow_Float T51; + Meow_Float T52; + T7 = T3 + T6; + T14 = T10 + T13; + out[count * 4].r = T7 - T14; + out[0].r = T7 + T14; + T51 = T18 + T21; + T52 = T48 + T49; + out[count * 4].j = T51 - T52; + out[0].j = T51 + T52; + } + { + Meow_Float T15; + Meow_Float T22; + Meow_Float T47; + Meow_Float T50; + T15 = T13 - T10; + T22 = T18 - T21; + out[count * 2].j = T15 + T22; + out[count * 6].j = T22 - T15; + T47 = T3 - T6; + T50 = T48 - T49; + out[count * 6].r = T47 - T50; + out[count * 2].r = T47 + T50; + } + { + Meow_Float T25; + Meow_Float T36; + Meow_Float T45; + Meow_Float T46; + T25 = T23 + T24; + T36 = MEOW_1_DIV_SQR_2 * (T30 + T35); + out[count * 5].r = T25 - T36; + out[count * 1].r = T25 + T36; + T45 = T38 - T37; + T46 = MEOW_1_DIV_SQR_2 * (T42 + T43); + out[count * 5].j = T45 - T46; + out[count * 1].j = T45 + T46; + } + { + Meow_Float T39; + Meow_Float T40; + Meow_Float T41; + Meow_Float T44; + T39 = T37 + T38; + T40 = MEOW_1_DIV_SQR_2 * (T35 - T30); + out[count * 7].j = T39 - T40; + out[count * 3].j = T39 + T40; + T41 = T23 - T24; + T44 = MEOW_1_DIV_SQR_2 * (T42 - T43); + out[count * 7].r = T41 - T44; + out[count * 3].r = T41 + T44; + } + } + + out = out + 1; + + { + unsigned m; + for (m = 1; m < count; m = m + 1, out = out + 1, W = W + 14) + { + Meow_Float T7; + Meow_Float T76; + Meow_Float T43; + Meow_Float T71; + Meow_Float T41; + Meow_Float T65; + Meow_Float T53; + Meow_Float T56; + Meow_Float T18; + Meow_Float T77; + Meow_Float T46; + Meow_Float T68; + Meow_Float T30; + Meow_Float T64; + Meow_Float T48; + Meow_Float T51; + { + Meow_Float T1; + Meow_Float T70; + Meow_Float T6; + Meow_Float T69; + T1 = out[0].r; + T70 = out[0].j; + { + Meow_Float T3; + Meow_Float T5; + Meow_Float T2; + Meow_Float T4; + T3 = out[count * 4].r; + T5 = out[count * 4].j; + T2 = W[6]; + T4 = W[7]; + T6 = (T2 * T3) + (T4 * T5); + T69 = (T2 * T5) - (T4 * T3); + } + T7 = T1 + T6; + T76 = T70 - T69; + T43 = T1 - T6; + T71 = T69 + T70; + } + { + Meow_Float T35; + Meow_Float T54; + Meow_Float T40; + Meow_Float T55; + { + Meow_Float T32; + Meow_Float T34; + Meow_Float T31; + Meow_Float T33; + T32 = out[count * 7].r; + T34 = out[count * 7].j; + T31 = W[12]; + T33 = W[13]; + T35 = (T31 * T32) + (T33 * T34); + T54 = (T31 * T34) - (T33 * T32); + } + { + Meow_Float T37; + Meow_Float T39; + Meow_Float T36; + Meow_Float T38; + T37 = out[count * 3].r; + T39 = out[count * 3].j; + T36 = W[4]; + T38 = W[5]; + T40 = (T36 * T37) + (T38 * T39); + T55 = (T36 * T39) - (T38 * T37); + } + T41 = T35 + T40; + T65 = T54 + T55; + T53 = T35 - T40; + T56 = T54 - T55; + } + { + Meow_Float T12; + Meow_Float T44; + Meow_Float T17; + Meow_Float T45; + { + Meow_Float T9; + Meow_Float T11; + Meow_Float T8; + Meow_Float T10; + T9 = out[count * 2].r; + T11 = out[count * 2].j; + T8 = W[2]; + T10 = W[3]; + T12 = (T8 * T9) + (T10 * T11); + T44 = (T8 * T11) - (T10 * T9); + } + { + Meow_Float T14; + Meow_Float T16; + Meow_Float T13; + Meow_Float T15; + T14 = out[count * 6].r; + T16 = out[count * 6].j; + T13 = W[10]; + T15 = W[11]; + T17 = (T13 * T14) + (T15 * T16); + T45 = (T13 * T16) - (T15 * T14); + } + T18 = T12 + T17; + T77 = T12 - T17; + T46 = T44 - T45; + T68 = T44 + T45; + } + { + Meow_Float T24; + Meow_Float T49; + Meow_Float T29; + Meow_Float T50; + { + Meow_Float T21; + Meow_Float T23; + Meow_Float T20; + Meow_Float T22; + T21 = out[count * 1].r; + T23 = out[count * 1].j; + T20 = W[0]; + T22 = W[1]; + T24 = (T20 * T21) + (T22 * T23); + T49 = (T20 * T23) - (T22 * T21); + } + { + Meow_Float T26; + Meow_Float T28; + Meow_Float T25; + Meow_Float T27; + T26 = out[count * 5].r; + T28 = out[count * 5].j; + T25 = W[8]; + T27 = W[9]; + T29 = (T25 * T26) + (T27 * T28); + T50 = (T25 * T28) - (T27 * T26); + } + T30 = T24 + T29; + T64 = T49 + T50; + T48 = T24 - T29; + T51 = T49 - T50; + } + { + Meow_Float T19; + Meow_Float T42; + Meow_Float T73; + Meow_Float T74; + T19 = T7 + T18; + T42 = T30 + T41; + out[count * 4].r = T19 - T42; + out[0].r = T19 + T42; + { + Meow_Float T67; + Meow_Float T72; + Meow_Float T63; + Meow_Float T66; + T67 = T64 + T65; + T72 = T68 + T71; + out[0].j = T67 + T72; + out[count * 4].j = T72 - T67; + T63 = T7 - T18; + T66 = T64 - T65; + out[count * 6].r = T63 - T66; + out[count * 2].r = T63 + T66; + } + T73 = T41 - T30; + T74 = T71 - T68; + out[count * 2].j = T73 + T74; + out[count * 6].j = T74 - T73; + { + Meow_Float T59; + Meow_Float T78; + Meow_Float T62; + Meow_Float T75; + Meow_Float T60; + Meow_Float T61; + T59 = T43 - T46; + T78 = T76 - T77; + T60 = T51 - T48; + T61 = T53 + T56; + T62 = MEOW_1_DIV_SQR_2 * (T60 - T61); + T75 = MEOW_1_DIV_SQR_2 * (T60 + T61); + out[count * 7].r = T59 - T62; + out[count * 5].j = T78 - T75; + out[count * 3].r = T59 + T62; + out[count * 1].j = T75 + T78; + } + { + Meow_Float T47; + Meow_Float T80; + Meow_Float T58; + Meow_Float T79; + Meow_Float T52; + Meow_Float T57; + T47 = T43 + T46; + T80 = T77 + T76; + T52 = T48 + T51; + T57 = T53 - T56; + T58 = MEOW_1_DIV_SQR_2 * (T52 + T57); + T79 = MEOW_1_DIV_SQR_2 * (T57 - T52); + out[count * 5].r = T47 - T58; + out[count * 7].j = T80 - T79; + out[count * 1].r = T47 + T58; + out[count * 3].j = T79 + T80; + } + } + } + } +} + +// ----------------------------------------------------------------------------- +// Inverse +// ----------------------------------------------------------------------------- + +void meow_radix_2_dit_i +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + // butteryfly 0 always has the twiddle factor == 1.0f + // so special case that one. + { + Complex z0 = out[0]; + Complex z1 = out[count]; + + out[0] = meow_add(z0, z1); + out[count] = meow_sub(z0, z1); + } + + for (unsigned butterfly = 1; butterfly < count; ++butterfly) + { + Complex w = w_n[butterfly - 1]; + + const unsigned i0 = butterfly; + const unsigned i1 = butterfly + count; + + Complex z0 = out[i0]; + Complex z1 = meow_mul(out[i1], w); + + out[i0] = meow_add(z0, z1); + out[i1] = meow_sub(z0, z1); + // Equation 135 + } +} + +void meow_radix_3_dit_i +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + unsigned wi = 0u; + + // W[0] is always 1.0f; + { + const unsigned i0 = 0 * count; + const unsigned i1 = 1 * count; + const unsigned i2 = 2 * count; + + Complex z0 = out[i0]; + Complex z1 = out[i1]; + Complex z2 = out[i2]; + + Complex t1 = meow_add(z1, z2); + Complex t2 = meow_sub(z0, meow_mulf(t1, 0.5)); + Complex t3j = meow_mul_by_j + ( + meow_mulf(meow_sub(z1, z2), -MEOW_SIN_PI_3) + ); + + out[i0] = meow_add(z0, t1); + out[i1] = meow_add(t2, t3j); + out[i2] = meow_sub(t2, t3j); + } + + for (unsigned butterfly = 1; butterfly < count; butterfly++, wi+=2) + { + Complex w1 = w_n[wi + 0]; + Complex w2 = w_n[wi + 1]; + + const unsigned i0 = butterfly; + const unsigned i1 = butterfly + count; + const unsigned i2 = butterfly + 2 * count; + + Complex z0 = out[i0]; + Complex z1 = meow_mul(w1, out[i1]); + Complex z2 = meow_mul(w2, out[i2]); + + Complex t1 = meow_add(z1, z2); + Complex t2 = meow_sub(z0, meow_mulf(t1, 0.5)); + Complex t3j = meow_mul_by_j + ( + meow_mulf(meow_sub(z1, z2), -MEOW_SIN_PI_3) + ); + // Equation 136 + + out[i0] = meow_add(z0, t1); + out[i1] = meow_add(t2, t3j); + out[i2] = meow_sub(t2, t3j); + // Equation 137 + } +} + +void meow_radix_4_dit_i +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + unsigned wi = 0u; + + // W[0] is always 1.0f; + { + const unsigned i0 = 0 * count; + const unsigned i1 = 1 * count; + const unsigned i2 = 2 * count; + const unsigned i3 = 3 * count; + + Complex z0 = out[i0]; + Complex z1 = out[i1]; + Complex z2 = out[i2]; + Complex z3 = out[i3]; + + Complex t1 = meow_add(z0, z2); + Complex t2 = meow_add(z1, z3); + Complex t3 = meow_sub(z0, z2); + Complex t4j = meow_mul_by_j(meow_sub(z1, z3)); + + out[i0] = meow_add(t1, t2); + out[i1] = meow_add(t3, t4j); + out[i2] = meow_sub(t1, t2); + out[i3] = meow_sub(t3, t4j); + } + + for (unsigned butterfly = 1; butterfly < count; ++butterfly, wi+=3) + { + Complex w1 = w_n[wi + 0]; + Complex w2 = w_n[wi + 1]; + Complex w3 = w_n[wi + 2]; + + const unsigned i0 = butterfly + 0 * count; + const unsigned i1 = butterfly + 1 * count; + const unsigned i2 = butterfly + 2 * count; + const unsigned i3 = butterfly + 3 * count; + + Complex z0 = out[i0]; + Complex z1 = meow_mul(w1, out[i1]); + Complex z2 = meow_mul(w2, out[i2]); + Complex z3 = meow_mul(w3, out[i3]); + + Complex t1 = meow_add(z0, z2); + Complex t2 = meow_add(z1, z3); + Complex t3 = meow_sub(z0, z2); + + Complex t4j = meow_mul_by_j(meow_sub(z1, z3)); + // Equations 138 + // Also instead of conjugating the input and multplying with the + // twiddles for the ifft, we invert the twiddles instead. This works + // fine except here, the mul_by_j is assuming that it's the forward + // fft twiddle we are multiplying with, not the conjugated one we + // actually have. So we have to conjugate it _back_ if we are doing the + // ifft. + // Also, had to multiply by -j, not j for reasons I am yet to grasp. + + out[i0] = meow_add(t1, t2); + out[i1] = meow_add(t3, t4j); + out[i2] = meow_sub(t1, t2); + out[i3] = meow_sub(t3, t4j); + // Equations 139 + } +} + +void meow_radix_5_dit_i +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + unsigned wi = 0u; + + // W[0] is always 1.0f; + { + const unsigned i0 = 0 * count; + const unsigned i1 = 1 * count; + const unsigned i2 = 2 * count; + const unsigned i3 = 3 * count; + const unsigned i4 = 4 * count; + + Complex z0 = out[i0]; + Complex z1 = out[i1]; + Complex z2 = out[i2]; + Complex z3 = out[i3]; + Complex z4 = out[i4]; + + Complex t1 = meow_add(z1, z4); + Complex t2 = meow_add(z2, z3); + Complex t3 = meow_sub(z1, z4); + Complex t4 = meow_sub(z2, z3); + // Equations 140 + + Complex t5 = meow_add(t1, t2); + Complex t6 = meow_mulf(meow_sub(t1, t2), MEOW_SQR_5_DIV_4); + Complex t7 = meow_sub(z0, meow_mulf(t5, 0.25f)); + // Equation 141 + + Complex t8 = meow_add(t7, t6); + Complex t9 = meow_sub(t7, t6); + // Equation 142 + + Complex t10j = meow_mul_by_j + ( + meow_add + ( + meow_mulf(t3, -MEOW_SIN_2PI_5) + , meow_mulf(t4, -MEOW_SIN_2PI_10) + ) + ); + + Complex t11j = meow_mul_by_j + ( + meow_sub + ( + meow_mulf(t3, -MEOW_SIN_2PI_10) + , meow_mulf(t4, -MEOW_SIN_2PI_5) + ) + ); + // Equation 143 + + out[i0] = meow_add(z0, t5); + // Equation 144 + + out[i1] = meow_add(t8, t10j); + out[i2] = meow_add(t9, t11j); + // Equation 145 + + out[i3] = meow_sub(t9, t11j); + out[i4] = meow_sub(t8, t10j); + // Equation 146 + } + + for (unsigned butterfly = 1; butterfly < count; ++butterfly, wi+=4) + { + Complex w1 = w_n[wi + 0]; + Complex w2 = w_n[wi + 1]; + Complex w3 = w_n[wi + 2]; + Complex w4 = w_n[wi + 3]; + + const unsigned i0 = butterfly + 0 * count; + const unsigned i1 = butterfly + 1 * count; + const unsigned i2 = butterfly + 2 * count; + const unsigned i3 = butterfly + 3 * count; + const unsigned i4 = butterfly + 4 * count; + + Complex z0 = out[i0]; + Complex z1 = meow_mul(w1, out[i1]); + Complex z2 = meow_mul(w2, out[i2]); + Complex z3 = meow_mul(w3, out[i3]); + Complex z4 = meow_mul(w4, out[i4]); + + Complex t1 = meow_add(z1, z4); + Complex t2 = meow_add(z2, z3); + Complex t3 = meow_sub(z1, z4); + Complex t4 = meow_sub(z2, z3); + // Equations 140 + + Complex t5 = meow_add(t1, t2); + Complex t6 = meow_mulf(meow_sub(t1, t2), MEOW_SQR_5_DIV_4); + Complex t7 = meow_sub(z0, meow_mulf(t5, 0.25f)); + // Equation 141 + + Complex t8 = meow_add(t7, t6); + Complex t9 = meow_sub(t7, t6); + // Equation 142 + + Complex t10j = meow_mul_by_j + ( + meow_add + ( + meow_mulf(t3, -MEOW_SIN_2PI_5) + , meow_mulf(t4, -MEOW_SIN_2PI_10) + ) + ); + + Complex t11j = meow_mul_by_j + ( + meow_sub + ( + meow_mulf(t3, -MEOW_SIN_2PI_10) + , meow_mulf(t4, -MEOW_SIN_2PI_5) + ) + ); + // Equation 143 + + out[i0] = meow_add(z0, t5); + // Equation 144 + + out[i1] = meow_add(t8, t10j); + out[i2] = meow_add(t9, t11j); + // Equation 145 + + out[i3] = meow_sub(t9, t11j); + out[i4] = meow_sub(t8, t10j); + // Equation 146 + } +} + +static void meow_radix_8_dit_i +( + const Meow_FFT_Complex* w_n + , Meow_FFT_Complex* out + , unsigned count +) +{ + const Meow_Float* W = &w_n[0].r; + { + Meow_Float T3; + Meow_Float T37; + Meow_Float T18; + Meow_Float T23; + Meow_Float T6; + Meow_Float T24; + Meow_Float T21; + Meow_Float T38; + Meow_Float T13; + Meow_Float T49; + Meow_Float T35; + Meow_Float T43; + Meow_Float T10; + Meow_Float T48; + Meow_Float T30; + Meow_Float T42; + { + Meow_Float T1; + Meow_Float T2; + Meow_Float T19; + Meow_Float T20; + T1 = out[0].r; + T2 = out[count * 4].r; + T3 = T1 + T2; + T37 = T1 - T2; + { + Meow_Float T16; + Meow_Float T17; + Meow_Float T4; + Meow_Float T5; + T16 = out[0].j; + T17 = out[count * 4].j; + T18 = T16 + T17; + T23 = T16 - T17; + T4 = out[count * 2].r; + T5 = out[count * 6].r; + T6 = T4 + T5; + T24 = T4 - T5; + } + T19 = out[count * 2].j; + T20 = out[count * 6].j; + T21 = T19 + T20; + T38 = T19 - T20; + { + Meow_Float T11; + Meow_Float T12; + Meow_Float T31; + Meow_Float T32; + Meow_Float T33; + Meow_Float T34; + T11 = out[count * 7].r; + T12 = out[count * 3].r; + T31 = T11 - T12; + T32 = out[count * 7].j; + T33 = out[count * 3].j; + T34 = T32 - T33; + T13 = T11 + T12; + T49 = T32 + T33; + T35 = T31 + T34; + T43 = T34 - T31; + } + { + Meow_Float T8; + Meow_Float T9; + Meow_Float T26; + Meow_Float T27; + Meow_Float T28; + Meow_Float T29; + T8 = out[count * 1].r; + T9 = out[count * 5].r; + T26 = T8 - T9; + T27 = out[count * 1].j; + T28 = out[count * 5].j; + T29 = T27 - T28; + T10 = T8 + T9; + T48 = T27 + T28; + T30 = T26 - T29; + T42 = T26 + T29; + } + } + { + Meow_Float T7; + Meow_Float T14; + Meow_Float T47; + Meow_Float T50; + T7 = T3 + T6; + T14 = T10 + T13; + out[count * 4].r = T7 - T14; + out[0].r = T7 + T14; + T47 = T18 + T21; + T50 = T48 + T49; + out[count * 4].j = T47 - T50; + out[0].j = T47 + T50; + } + { + Meow_Float T15; + Meow_Float T22; + Meow_Float T51; + Meow_Float T52; + T15 = T10 - T13; + T22 = T18 - T21; + out[count * 2].j = T15 + T22; + out[count * 6].j = T22 - T15; + T51 = T3 - T6; + T52 = T49 - T48; + out[count * 6].r = T51 - T52; + out[count * 2].r = T51 + T52; + } + { + Meow_Float T25; + Meow_Float T36; + Meow_Float T45; + Meow_Float T46; + T25 = T23 - T24; + T36 = MEOW_1_DIV_SQR_2 * (T30 - T35); + out[count * 7].j = T25 - T36; + out[count * 3].j = T25 + T36; + T45 = T37 + T38; + T46 = MEOW_1_DIV_SQR_2 * (T43 - T42); + out[count * 7].r = T45 - T46; + out[count * 3].r = T45 + T46; + } + { + Meow_Float T39; + Meow_Float T40; + Meow_Float T41; + Meow_Float T44; + T39 = T37 - T38; + T40 = MEOW_1_DIV_SQR_2 * (T30 + T35); + out[count * 5].r = T39 - T40; + out[count * 1].r = T39 + T40; + T41 = T24 + T23; + T44 = MEOW_1_DIV_SQR_2 * (T42 + T43); + out[count * 5].j = T41 - T44; + out[count * 1].j = T41 + T44; + } + } + + out = out + 1; + + { + unsigned m; + for (m = 1; m < count; m = m + 1, out = out + 1, W = W + 14) + { + Meow_Float T7; + Meow_Float T77; + Meow_Float T43; + Meow_Float T71; + Meow_Float T41; + Meow_Float T64; + Meow_Float T53; + Meow_Float T56; + Meow_Float T18; + Meow_Float T76; + Meow_Float T46; + Meow_Float T68; + Meow_Float T30; + Meow_Float T65; + Meow_Float T48; + Meow_Float T51; + { + Meow_Float T1; + Meow_Float T70; + Meow_Float T6; + Meow_Float T69; + T1 = out[0].r; + T70 = out[0].j; + { + Meow_Float T3; + Meow_Float T5; + Meow_Float T2; + Meow_Float T4; + T3 = out[count * 4].r; + T5 = out[count * 4].j; + T2 = W[6]; + T4 = W[7]; + T6 = (T2 * T3) - (T4 * T5); + T69 = (T4 * T3) + (T2 * T5); + } + T7 = T1 + T6; + T77 = T70 - T69; + T43 = T1 - T6; + T71 = T69 + T70; + } + { + Meow_Float T35; + Meow_Float T54; + Meow_Float T40; + Meow_Float T55; + { + Meow_Float T32; + Meow_Float T34; + Meow_Float T31; + Meow_Float T33; + T32 = out[count * 7].r; + T34 = out[count * 7].j; + T31 = W[12]; + T33 = W[13]; + T35 = (T31 * T32) - (T33 * T34); + T54 = (T33 * T32) + (T31 * T34); + } + { + Meow_Float T37; + Meow_Float T39; + Meow_Float T36; + Meow_Float T38; + T37 = out[count * 3].r; + T39 = out[count * 3].j; + T36 = W[4]; + T38 = W[5]; + T40 = (T36 * T37) - (T38 * T39); + T55 = (T38 * T37) + (T36 * T39); + } + T41 = T35 + T40; + T64 = T54 + T55; + T53 = T35 - T40; + T56 = T54 - T55; + } + { + Meow_Float T12; + Meow_Float T44; + Meow_Float T17; + Meow_Float T45; + { + Meow_Float T9; + Meow_Float T11; + Meow_Float T8; + Meow_Float T10; + T9 = out[count * 2].r; + T11 = out[count * 2].j; + T8 = W[2]; + T10 = W[3]; + T12 = (T8 * T9) - (T10 * T11); + T44 = (T10 * T9) + (T8 * T11); + } + { + Meow_Float T14; + Meow_Float T16; + Meow_Float T13; + Meow_Float T15; + T14 = out[count * 6].r; + T16 = out[count * 6].j; + T13 = W[10]; + T15 = W[11]; + T17 = (T13 * T14) - (T15 * T16); + T45 = (T15 * T14) + (T13 * T16); + } + T18 = T12 + T17; + T76 = T12 - T17; + T46 = T44 - T45; + T68 = T44 + T45; + } + { + Meow_Float T24; + Meow_Float T49; + Meow_Float T29; + Meow_Float T50; + { + Meow_Float T21; + Meow_Float T23; + Meow_Float T20; + Meow_Float T22; + T21 = out[count * 1].r; + T23 = out[count * 1].j; + T20 = W[0]; + T22 = W[1]; + T24 = (T20 * T21) - (T22 * T23); + T49 = (T22 * T21) + (T20 * T23); + } + { + Meow_Float T26; + Meow_Float T28; + Meow_Float T25; + Meow_Float T27; + T26 = out[count * 5].r; + T28 = out[count * 5].j; + T25 = W[8]; + T27 = W[9]; + T29 = (T25 * T26) - (T27 * T28); + T50 = (T27 * T26) + (T25 * T28); + } + T30 = T24 + T29; + T65 = T49 + T50; + T48 = T24 - T29; + T51 = T49 - T50; + } + { + Meow_Float T19; + Meow_Float T42; + Meow_Float T73; + Meow_Float T74; + T19 = T7 + T18; + T42 = T30 + T41; + out[count * 4].r = T19 - T42; + out[0].r = T19 + T42; + { + Meow_Float T67; + Meow_Float T72; + Meow_Float T63; + Meow_Float T66; + T67 = T65 + T64; + T72 = T68 + T71; + out[0].j = T67 + T72; + out[count * 4].j = T72 - T67; + T63 = T7 - T18; + T66 = T64 - T65; + out[count * 6].r = T63 - T66; + out[count * 2].r = T63 + T66; + } + T73 = T30 - T41; + T74 = T71 - T68; + out[count * 2].j = T73 + T74; + out[count * 6].j = T74 - T73; + { + Meow_Float T59; + Meow_Float T78; + Meow_Float T62; + Meow_Float T75; + Meow_Float T60; + Meow_Float T61; + T59 = T43 + T46; + T78 = T76 + T77; + T60 = T56 - T53; + T61 = T48 + T51; + T62 = MEOW_1_DIV_SQR_2 * (T60 - T61); + T75 = MEOW_1_DIV_SQR_2 * (T61 + T60); + out[count * 7].r = T59 - T62; + out[count * 5].j = T78 - T75; + out[count * 3].r = T59 + T62; + out[count * 1].j = T75 + T78; + } + { + Meow_Float T47; + Meow_Float T80; + Meow_Float T58; + Meow_Float T79; + Meow_Float T52; + Meow_Float T57; + T47 = T43 - T46; + T80 = T77 - T76; + T52 = T48 - T51; + T57 = T53 + T56; + T58 = MEOW_1_DIV_SQR_2 * (T52 + T57); + T79 = MEOW_1_DIV_SQR_2 * (T52 - T57); + out[count * 5].r = T47 - T58; + out[count * 7].j = T80 - T79; + out[count * 1].r = T47 + T58; + out[count * 3].j = T79 + T80; + } + } + } + } +} + +// ----------------------------------------------------------------------------- + +// Paraphrased from kiss-fft +void meow_recursive_fft_mixed_meow_radix_dit +( + const Meow_FFT_Workset* fft + , unsigned stage + , Complex* in + , Meow_FFT_Complex* out + , unsigned w_mul +) +{ + const unsigned radix = fft->stages.radix[stage]; + const unsigned count = fft->stages.remainder[stage]; + + Complex* w = fft->wn; + const unsigned w_offset = fft->stages.offsets[stage]; + Complex* w_sequential = &fft->wn_ordered[w_offset]; + + if (count == 1) + { + for (unsigned i = 0; i < radix; i++) + { + out[i] = in[i * w_mul]; + } + } + else + { + const unsigned new_w_multiplier = w_mul * radix; + + for (unsigned i = 0; i < radix; ++i) + { + meow_recursive_fft_mixed_meow_radix_dit + ( + fft + , stage + 1 + , &in[w_mul * i] + , &out[count * i] + , new_w_multiplier + ); + } + } + + switch (radix) + { + case 2: meow_radix_2_dit(w_sequential, out, count); break; + case 3: meow_radix_3_dit(w_sequential, out, count); break; + case 4: meow_radix_4_dit(w_sequential, out, count); break; + case 5: meow_radix_5_dit(w_sequential, out, count); break; + case 8: meow_radix_8_dit(w_sequential, out, count); break; + + default: meow_dft_n_dit(w, out, count, w_mul, radix, fft->N, 0); break; + } +} + +void meow_recursive_fft_mixed_meow_radix_dit_i +( + const Meow_FFT_Workset* fft + , unsigned stage + , Complex* in + , Meow_FFT_Complex* out + , unsigned w_mul +) +{ + const unsigned radix = fft->stages.radix[stage]; + const unsigned count = fft->stages.remainder[stage]; + + Complex* w = fft->wn; + const unsigned w_offset = fft->stages.offsets[stage]; + Complex* w_sequential = &fft->wn_ordered[w_offset]; + + if (count == 1) + { + for (unsigned i = 0; i < radix; i++) + { + out[i] = in[i * w_mul]; + } + } + else + { + const unsigned new_w_multiplier = w_mul * radix; + + for (unsigned i = 0; i < radix; ++i) + { + meow_recursive_fft_mixed_meow_radix_dit_i + ( + fft + , stage + 1 + , &in[w_mul * i] + , &out[count * i] + , new_w_multiplier + ); + } + } + + switch (radix) + { + case 2: meow_radix_2_dit_i(w_sequential, out, count); break; + case 3: meow_radix_3_dit_i(w_sequential, out, count); break; + case 4: meow_radix_4_dit_i(w_sequential, out, count); break; + case 5: meow_radix_5_dit_i(w_sequential, out, count); break; + case 8: meow_radix_8_dit_i(w_sequential, out, count); break; + + default: meow_dft_n_dit(w, out, count, w_mul, radix, fft->N, 1); break; + } +} + +// ----------------------------------------------------------------------------- +// +// http://www.engineeringproductivitytools.com/stuff/T0001/PT10.HTM +// I finally figured out why this page confused me so much. It wasn't +// _consistent_ with formular chunks. Sometimes with would include j, othertimes +// it wouldn't. Sometimes it would include Wk, othertimes not. Ugh. No wonder +// my maths was wrong by the wrong twiddle or incorrect sign. +// +// So the magic forumlar is: +// +// Z() == two-for-one-fft result waiting for final tiwddle +// F() == result fft, what we want +// Wn() == twiddle factor for N +// Wn2() == twiddle factor for N/2 +// +// Note for fft Wn() == e^(-j*2*pi*k/N) +// Note for ifft Wn() == e^( j*2*pi*k/N) // <--- NOTICE MISSING '-'! + +// For FFT +// k = 0 + +// F(0) = Z(0).real + Z(0).imag +// F(N/2) = Z(0).real - Z(0).imag + +// k > 0 +// Feven_a(k) = Z(k) + Z(N/2 - k)* +// Fodd_a(k) = Z(k) - Z(N/2 - k)* +// +// Feven = Feven_a(k) +// Fodd = -j * Fodd_a(k) +// +// F(k) = 0.5 * (Feven + (Wn(k) * Fodd)) + +// ----------------------------------------------------------------------------- + +// For IFFT (think the twiddle is DIF hence not * 0.5) +// k = 0 + +// Z(0).real = F(0).real + F(N/2).real +// Z(0).imag = F(0).real - F(N/2).real + +// k > 0 +// Zeven_a(k) = F(k) + F(N/2 - k)* +// Zodd_a(k) = F(k) - F(N/2 - k)* +// +// Feven = Feven_a(k) +// Fodd = j * Fodd_a(k) // <---- NOTICE missing '-'! +// +// F(k) = Feven + (Wn(k) * Fodd) // <---- Remember ifft twiddles!, no * 0.5. + +inline void meow_mixer +( + unsigned N_2 + , Complex* w_2n + , Complex* in + , Meow_FFT_Complex* out +) +{ + // looking at kiss_fft they use double symmetery, so we only need to + // actaully do N/4 twiddles. engineeringproductivitytools mentions something + // similar as well. + + const unsigned N_4 = N_2 / 2u; + + for (unsigned k = 1; k <= N_4; k++) + { + Complex x_k = in[k]; + Complex x_n_2_minus_k = meow_conjugate(in[N_2 - k]); + Complex wk = meow_conjugate(w_2n[k]); + + Complex za = meow_add(x_k, x_n_2_minus_k); + Complex zb = meow_sub(x_k, x_n_2_minus_k); + + Complex x_even = za; + + Complex x_odd = meow_negate(meow_mul_by_j(zb)); + + Complex wk_x_odd = meow_mul(x_odd, wk); + Complex x_k_sum = meow_add(x_even, wk_x_odd); + Complex x_n_2_minus_k_sum = meow_conjugate(meow_sub(x_even, wk_x_odd)); + + Complex x_k_out = meow_mulf(x_k_sum , 0.5f); + Complex x_n_2_minus_k_out = meow_mulf(x_n_2_minus_k_sum, 0.5f); + + out[k] = x_k_out; + out[N_2 - k] = x_n_2_minus_k_out; + } +} + +inline void meow_mixer_i +( + unsigned N_2 + , Complex* w_2n + , Complex* in + , Meow_FFT_Complex* out +) +{ + const unsigned N_4 = N_2 / 2u; + + for (unsigned k = 1; k <= N_4; k++) + { + Complex x_k = in[k]; + Complex x_n_2_minus_k = meow_conjugate(in[N_2 - k]); + Complex wk = w_2n[k]; + + Complex za = meow_add(x_k, x_n_2_minus_k); + Complex zb = meow_sub(x_k, x_n_2_minus_k); + + Complex x_even = za; + + Complex x_odd = meow_mul_by_j(zb); + + Complex wk_x_odd = meow_mul(x_odd, wk); + Complex x_k_sum = meow_add(x_even, wk_x_odd); + Complex x_n_2_minus_k_sum = meow_conjugate(meow_sub(x_even, wk_x_odd)); + + Complex x_k_out = x_k_sum; + Complex x_n_2_minus_k_out = x_n_2_minus_k_sum; + + out[k] = x_k_out; + out[N_2 - k] = x_n_2_minus_k_out; + } +} + +// ----------------------------------------------------------------------------- + +void meow_fft_real +( + const Meow_FFT_Workset_Real* fft + , const Meow_Float* in + , Meow_FFT_Complex* out +) +{ + // Need two sets of twiddles. One set for N/2, and one set for N. + // However for the N set, we only need N/4 twiddles due to symmetry * 2. + + const unsigned N_2 = fft->half.N; + Complex* magic = fft->w_2n; + Meow_FFT_Complex z0; + + meow_recursive_fft_mixed_meow_radix_dit + ( + &fft->half + , 0 + , (Complex*)(in) + , out + , 1 + ); + + z0 = out[0]; + + out[0].r = z0.r + z0.j; + out[0].j = z0.r - z0.j; + // combine 0, and N_2 into the same number in order + // to keep the array size N/2 + + meow_mixer(N_2, magic, out, out); +} + +void meow_fft_real_i +( + const Meow_FFT_Workset_Real* ifft + , const Meow_FFT_Complex* in + , Meow_FFT_Complex* temp + , Meow_Float* out +) +{ + const unsigned N_2 = ifft->half.N; + Complex* magic = ifft->w_2n; + + temp[0].r = in[0].r + in[0].j; + temp[0].j = in[0].r - in[0].j; + + meow_mixer_i(N_2, magic, in, temp); + + meow_recursive_fft_mixed_meow_radix_dit_i + ( + &ifft->half + , 0 + , temp + , (Meow_FFT_Complex*)(out) + , 1 + ); +} + +void meow_fft +( + const Meow_FFT_Workset* data + , const Meow_FFT_Complex* in + , Meow_FFT_Complex* out +) +{ + meow_recursive_fft_mixed_meow_radix_dit + ( + data + , 0 + , in + , out + , 1 + ); +} + +void meow_fft_i +( + const Meow_FFT_Workset* data + , const Meow_FFT_Complex* in + , Meow_FFT_Complex* out +) +{ + meow_recursive_fft_mixed_meow_radix_dit_i + ( + data + , 0 + , in + , out + , 1 + ); +} + +#endif + +// bash script used to generate radix N codelets from fftw that suit this code. +// since my tests run slower with > 8 radix, I hand modified the radix 8 +// generated (function signature) instead of updating this code. +#if 0 +#!/bin/sh +# <command> N [-1|1] [|_i] + +cat << EOF + +static void meow_radix_${1}_dit${3} +( + meow_fft_complex* out + , const Meow_Float* W + , unsigned count +) +{ +EOF + +#// First loop doesn't use twiddles +./gen_notw.native -n ${1} -standalone -sign ${2} \ + | sed 's/E /Meow_Float /g' \ + | sed '/INT.*/d' \ + | sed -r 's/r[io]\[(.+)]/out\[\1\].r/g' \ + | sed -r 's/i[io]\[(.+)]/out\[\1\].j/g' \ + | sed '/for (.*).*/d' \ + | sed -r 's/WS\(.., (.*)\)/count * \1/g' \ + | sed -r 's/FMA\((.+), (.+), (.+)\)/\(\1 * \2\) + \(\3\)/g' \ + | sed -r 's/FMS\((.+), (.+), (.+)\)/\(\1 * \2\) - \(\3\)/g' \ + | sed -r 's/FNMA\((.+), (.+), (.+)\)/-\(\1 * \2\) + \(\3\)/g' \ + | sed -r 's/FNMS\((.+), (.+), (.+)\)/\(\3\) - \(\1 * \2\)/g' \ + | sed -r 's/DK\((.+), (.+)\);/static const Meow_Float \1 = \2;/g' \ + | head -n -3 \ + | tail -n +9 + +echo "" +echo "out = out + 1;" +echo "" + +./gen_twiddle.native -n ${1} -standalone -sign ${2} -dit -with-ms 1 \ + | sed 's/E /Meow_Float /g' \ + | sed 's/INT /unsigned /g' \ + | sed -r 's/r[io]\[(.+)]/out\[\1\].r/g' \ + | sed -r 's/i[io]\[(.+)]/out\[\1\].j/g' \ + | sed 's/, MAKE_VOLATILE_STRIDE(.*))/)/g' \ + | sed 's/, MAKE_VOLATILE_STRIDE(.*)//g' \ + | sed -r 's/WS\(.., (.*)\)/count * \1/g' \ + | sed -r 's/FMA\((.+), (.+), (.+)\)/\(\1 * \2\) + \(\3\)/g' \ + | sed -r 's/FMS\((.+), (.+), (.+)\)/\(\1 * \2\) - \(\3\)/g' \ + | sed -r 's/FNMA\((.+), (.+), (.+)\)/-\(\1 * \2\) + \(\3\)/g' \ + | sed -r 's/FNMS\((.+), (.+), (.+)\)/\(\3\) - \(\1 * \2\)/g' \ + | sed '/DK(.*);/d' \ + | sed 's/ri = ri + 1, ii = ii + 1,/out = out + 1,/g' \ + | sed 's/m = mb, W = W + (mb * .*);/m = 1;/g' \ + | sed -r 's/(for \(.*\)).*/\1\n{/g' \ + | sed 's/me/count/g' \ + | head -n -2 \ + | tail -n +10 + + +echo "}" +#endif -- 2.43.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH i-g-t 2/3] lib/vendor: Add the meow_fft library 2024-09-13 10:44 ` [PATCH i-g-t 2/3] lib/vendor: Add the meow_fft library Kamil Konieczny @ 2024-10-08 6:06 ` Peter Senna Tschudin 0 siblings, 0 replies; 12+ messages in thread From: Peter Senna Tschudin @ 2024-10-08 6:06 UTC (permalink / raw) To: Kamil Konieczny, igt-dev; +Cc: Ryszard Knop On 13.09.2024 12:44, Kamil Konieczny wrote: > From: Ryszard Knop <ryszard.knop@intel.com> > > The meow_fft library provides a simple and permissively-licensed Fast > Fourier Transform implementation. It is an alternative for GSL's FFT. > > The library was modified to conform to the IGT's compiler warning flags > and to use doubles instead of floats by default for higher accuracy. > > v2: Replace licence with equivalent SPDX 0BSD (Kamil) > Reviewed-by: Peter Senna Tschudin <peter.senna@linux.intel.com> > Signed-off-by: Ryszard Knop <ryszard.knop@intel.com> > Signed-off-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> > --- > lib/meson.build | 1 + > lib/vendor/meow_fft/meow_fft.c | 12 + > lib/vendor/meow_fft/meow_fft.h | 2402 ++++++++++++++++++++++++++++++++ > 3 files changed, 2415 insertions(+) > create mode 100644 lib/vendor/meow_fft/meow_fft.c > create mode 100644 lib/vendor/meow_fft/meow_fft.h > > diff --git a/lib/meson.build b/lib/meson.build > index b10410c8a..dff8b4728 100644 > --- a/lib/meson.build > +++ b/lib/meson.build > @@ -119,6 +119,7 @@ lib_sources = [ > > # Vendored libraries: > 'vendor/uwildmat/uwildmat.c', > + 'vendor/meow_fft/meow_fft.c', > ] > > lib_deps = [ > diff --git a/lib/vendor/meow_fft/meow_fft.c b/lib/vendor/meow_fft/meow_fft.c > new file mode 100644 > index 000000000..a1ec504cd > --- /dev/null > +++ b/lib/vendor/meow_fft/meow_fft.c > @@ -0,0 +1,12 @@ > +// SPDX-License-Identifier: 0BSD > + > +#define MEOW_FFT_IMPLEMENTATION > +#define MEOW_FLOAT_TYPE double > +#include "meow_fft.h" > + > +/* > + * This is a dummy file to build the object file containing > + * the meow_fft implementation. All code should go into the > + * header itself. If you want to use it in any other file, > + * just #include the header without defining MEOW_FFT_IMPL. > + */ > diff --git a/lib/vendor/meow_fft/meow_fft.h b/lib/vendor/meow_fft/meow_fft.h > new file mode 100644 > index 000000000..0269211ea > --- /dev/null > +++ b/lib/vendor/meow_fft/meow_fft.h > @@ -0,0 +1,2402 @@ > +/* SPDX-License-Identifier: 0BSD */ > +/* > + Imported from https://github.com/JodiTheTigger/meow_fft + Pull Request #11 > + > + Changes for igt-gpu-tools: > + - Default MEOW_FLOAT_TYPE is now double > + - Added extra function prototypes to satisfy -Wmissing-prototypes > + - Hoisted variable declarations to satisfy -Wdeclaration-after-statement > +*/ > +/* > + meow_fft. My Easy Oresome Wonderful Fast Fourier Transform. > + Copyright (C) 2017 Richard Maxwell <jodi.the.tigger@gmail.com> > +*/ > + > +#ifndef MEOW_FFT > +#define MEOW_FFT > + > +#include <stdlib.h> > +// for size_t, abort > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +// C-API ----------------------------------------------------------------------- > + > +// Can be float, double or long double > +#ifndef MEOW_FLOAT_TYPE > +#define MEOW_FLOAT_TYPE double > +#endif > + > +typedef MEOW_FLOAT_TYPE Meow_Float; > + > +typedef struct Meow_FFT_Complex > +{ > + Meow_Float r; > + Meow_Float j; > +} > +Meow_FFT_Complex; > + > +struct Meow_FFT_Workset; > +struct Meow_FFT_Workset_Real; > + > +size_t meow_fft_generate_workset > +( > + int N > + , struct Meow_FFT_Workset* workset > +); > +// returns the size of the workset if null is passed. 0 if N is invalid. > + > +size_t meow_fft_generate_workset_real > +( > + int N > + , struct Meow_FFT_Workset_Real* workset > +); > +// returns the size of the workset if null is passed. 0 if N is invalid. > + > +unsigned meow_fft_is_slow (const struct Meow_FFT_Workset* workset); > +unsigned meow_fft_is_slow_real(const struct Meow_FFT_Workset_Real* workset); > +// returns non-zero if the fft has a slow dft in any one of its stages. > + > +// C-API (ffts) ---------------------------------------------------------------- > + > +// NOTES: > +// countof(out) == countof(in). > +// In order to do that I have mixed out[0] with out[N/2]. That is: > +// out[0].r == out[0].r, out[0].j = out[N/2].r > + > + > +void meow_fft_real > +( > + const struct Meow_FFT_Workset_Real* workset > + , const Meow_Float* in > + , Meow_FFT_Complex* out > +); > + > +void meow_fft_real_i > +( > + const struct Meow_FFT_Workset_Real* workset > + , const Meow_FFT_Complex* in > + , Meow_FFT_Complex* temp > + , Meow_Float* out > +); > + > +void meow_fft > +( > + const struct Meow_FFT_Workset* data > + , const Meow_FFT_Complex* in > + , Meow_FFT_Complex* out > +); > + > +void meow_fft_i > +( > + const struct Meow_FFT_Workset* data > + , const Meow_FFT_Complex* in > + , Meow_FFT_Complex* out > +); > + > +// ----------------------------------------------------------------------------- > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif // MEOW_FFT > + > +#ifdef MEOW_FFT_IMPLEMENTATION > + > +// Reading List ---------------------------------------------------------------- > +// > +// It's a circle! -> How FFTs _actually_ work > +// http://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/ > +// > +// How to get radix-2, 3, 4, and 5 formulas: > +// http://www.briangough.com/fftalgorithms.pdf pages 18 and 19 > +// > +// How do make a faster fft when only dealing with real (non-complex) inputs. > +// (Warning, the maths is confusing due to inconsisten formulas and assumptions) > +// http://www.engineeringproductivitytools.com/stuff/T0001/PT10.HTM > +// > +// Finally, know that ffts are pretty much as fast as you can get, you need > +// to start making them cache friendly to get any extra speed. > +// https://math.mit.edu/~stevenj/18.335/FFTW-Alan-2008.pdf > +// > +// ----------------------------------------------------------------------------- > + > +#include <math.h> > +#include <stdint.h> > + > +typedef const Meow_FFT_Complex Complex; > + > +#define MEOW_TAU 6.283185307179586476925286766559005768394338798750211641949889 > + > +// Plumbing -------------------------------------------------------------------- > + > +typedef struct Meow_Fft_Stages > +{ > + unsigned count; > + unsigned* radix; > + unsigned* remainder; > + unsigned* offsets; > +} > +Meow_Fft_Stages; > + > +typedef struct Meow_FFT_Workset > +{ > + int N; > + > + Meow_FFT_Complex* wn; > + // Non-null only defined if there is a slow-dft as one of the radix stages. > + > + Meow_FFT_Complex* wn_ordered; > + // Sequentially ordered per stage, will be duplicates between stages. > + > + Meow_Fft_Stages stages; > +} > +Meow_FFT_Workset; > + > +typedef struct Meow_FFT_Workset_Real > +{ > + Meow_FFT_Complex* w_2n; > + Meow_FFT_Workset half; > +} > +Meow_FFT_Workset_Real; > + > +typedef struct Meow_Stage_Info > +{ > + unsigned is_slow; > + unsigned stage_count; > + unsigned w_count; > +} > +Meow_Stage_Info; > + > +// --------------------- IGT prototype changes start here --------------------- > + > +unsigned meow_is_codelet(unsigned radix); > +void meow_make_twiddles(unsigned n, unsigned count, Meow_FFT_Complex* w); > +unsigned meow_make_twiddles_sequential(unsigned n, Meow_FFT_Complex* w, Meow_Fft_Stages* stages); > +Meow_Stage_Info meow_calculate_stages(unsigned n, Meow_FFT_Workset* workset); > + > +void meow_dft_n_dit(const Meow_FFT_Complex* w_n, > + Meow_FFT_Complex* out, > + unsigned count, > + unsigned w_multiplier, > + unsigned radix, > + unsigned N, > + unsigned reverse); > + > +void meow_radix_2_dit(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); > +void meow_radix_3_dit(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); > +void meow_radix_4_dit(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); > +void meow_radix_5_dit(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); > + > +void meow_radix_2_dit_i(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); > +void meow_radix_3_dit_i(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); > +void meow_radix_4_dit_i(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); > +void meow_radix_5_dit_i(const Meow_FFT_Complex* w_n, Meow_FFT_Complex* out, unsigned count); > + > +void meow_recursive_fft_mixed_meow_radix_dit(const Meow_FFT_Workset* fft, > + unsigned stage, > + Complex* in, > + Meow_FFT_Complex* out, > + unsigned w_mul); > + > +void meow_recursive_fft_mixed_meow_radix_dit_i(const Meow_FFT_Workset* fft, > + unsigned stage, > + Complex* in, > + Meow_FFT_Complex* out, > + unsigned w_mul); > + > +// ---------------------- IGT prototype changes end here ---------------------- > + > +unsigned meow_is_codelet(unsigned radix) > +{ > + return ((radix <= 5) || (radix == 8)); > +} > + > +void meow_make_twiddles > +( > + unsigned n > + , unsigned count > + , Meow_FFT_Complex* w > +) > +{ > + const double ni = 1.0f / n; > + for (unsigned i = 0; i < count; ++i) > + { > + w[i].r = (Meow_Float) cos(MEOW_TAU * i * ni); > + w[i].j = (Meow_Float) sin(MEOW_TAU * i * ni); > + } > +} > + > +unsigned meow_make_twiddles_sequential > +( > + unsigned n > + , Meow_FFT_Complex* w > + , Meow_Fft_Stages* stages > +) > +// Returns number of W constants needed. > +{ > + // Figure out the tiddle offsets. > + unsigned w_count = 0; > + { > + unsigned offset = 0; > + > + for (unsigned s = 0; s < stages->count; s++) > + { > + unsigned r = stages->radix[s]; > + unsigned count = stages->remainder[s]; > + > + unsigned amount = meow_is_codelet(r) ? (r - 1) * (count - 1) : 0u; > + > + stages->offsets[s] = amount; > + offset += amount; > + } > + > + w_count = offset; > + > + for (unsigned s = 0; s < stages->count; s++) > + { > + unsigned count = stages->offsets[s]; > + offset -= count; > + stages->offsets[s] = offset; > + } > + } > + > + // Fill in the twiddles so that they are accessed sequentially in the radix > + // code for best cacheline use. > + if (w) > + { > + unsigned w_mul = 1; > + double ni = 1.0 / n; > + > + for (unsigned s = 0; s < stages->count; s++) > + { > + const unsigned radix = stages->radix[s]; > + const unsigned count = stages->remainder[s]; > + unsigned offset = stages->offsets[s]; > + > + if (meow_is_codelet(radix)) > + { > + for (unsigned i = 1 ; i < count; i++) > + { > + for (unsigned j = 1; j < radix; j++) > + { > + const unsigned w_x = i * j * w_mul; > + > + w[offset].r = (Meow_Float) cos(MEOW_TAU * w_x * ni); > + w[offset].j = (Meow_Float) sin(MEOW_TAU * w_x * ni); > + > + offset++; > + } > + } > + } > + > + w_mul *= radix; > + } > + } > + > + return w_count; > +} > + > +Meow_Stage_Info meow_calculate_stages(unsigned n, Meow_FFT_Workset* workset) > +{ > + unsigned is_slow = 0u; > + unsigned stage = 0u; > + unsigned w_count = 0u; > + > + while (n > 1) > + { > + // premade codelets 2, 3, 4, 5, 8 > + unsigned i = 8; > + for (; i > 1; i--) > + { > + if ((i == 7) || (i == 6)) > + { > + // don't have radix-7 or radix-6. > + continue; > + } > + > + if (!(n % i)) > + { > + w_count += ((i - 1) * (n - 1)); > + break; > + } > + } > + > + // bah, plain slow dft instead > + if (i == 1) > + { > + is_slow = 1; > + i = 7; > + for (; i <= n; i++) > + { > + if (!(n % i)) > + { > + break; > + } > + } > + } > + > + n /= i; > + > + if (workset) > + { > + workset->stages.radix[stage] = i; > + workset->stages.remainder[stage] = n; > + } > + > + stage++; > + } > + > + { > + Meow_Stage_Info result = > + { > + is_slow > + , stage > + , w_count > + }; > + > + return result; > + } > +} > + > +size_t meow_fft_generate_workset(int N, Meow_FFT_Workset* workset) > +{ > + size_t size_workset, size_radix, size_remainder, size_offsets; > + size_t size_twiddles, size_twiddles_ordered, size_total; > + Meow_Stage_Info info; > + > + if (N < 2) > + { > + // Too small. > + return 0; > + } > + > + info = meow_calculate_stages(N, NULL); > + > + size_workset = sizeof(Meow_FFT_Workset); > + size_radix = info.stage_count * sizeof(int); > + size_remainder = info.stage_count * sizeof(int); > + size_offsets = info.stage_count * sizeof(int); > + > + size_twiddles_ordered = > + info.w_count * sizeof(Meow_FFT_Complex); > + > + size_twiddles = > + N * sizeof(Meow_FFT_Complex) * info.is_slow; > + > + size_total = > + size_workset > + + size_twiddles > + + size_radix > + + size_remainder > + + size_offsets > + + size_twiddles_ordered; > + > + if (workset) > + { > + uint8_t* data = (uint8_t*)(workset); > + > + uint8_t* data_wn = data + size_workset; > + uint8_t* data_radix = data_wn + size_twiddles; > + uint8_t* data_remainder = data_radix + size_radix; > + uint8_t* data_offsets = data_remainder + size_offsets; > + uint8_t* data_wn_ordered = data_offsets + size_remainder; > + > + workset->wn = > + (info.is_slow) > + ? (Meow_FFT_Complex*)(data_wn) > + : NULL; > + > + workset->stages.radix = (unsigned*)(data_radix); > + workset->stages.remainder = (unsigned*)(data_remainder); > + workset->stages.offsets = (unsigned*)(data_offsets); > + workset->stages.count = info.stage_count; > + workset->wn_ordered = (Meow_FFT_Complex*)(data_wn_ordered); > + workset->N = N; > + > + if (workset->wn) > + { > + meow_make_twiddles(N, N, workset->wn); > + } > + > + meow_calculate_stages(N, workset); > + > + meow_make_twiddles_sequential > + ( > + N > + , workset->wn_ordered > + , &workset->stages > + ); > + } > + > + return size_total; > +} > + > +size_t meow_fft_generate_workset_real > +( > + const int N > + , Meow_FFT_Workset_Real* workset > +) > +{ > + unsigned N_2, N_4; > + size_t size_workset, size_w_2n, size_half; > + > + if ((N < 4) || (N % 2)) > + { > + // Too small or not divisible by two. > + return 0; > + } > + > + N_2 = N / 2; > + N_4 = N / 4; > + > + size_workset = sizeof(Meow_FFT_Workset_Real); > + size_w_2n = (N_4 + 1) * sizeof(Meow_FFT_Complex); > + size_half = meow_fft_generate_workset(N_2, NULL); > + > + if (workset) > + { > + uint8_t *data, *data_w_2n; > + > + meow_fft_generate_workset(N_2, &workset->half); > + > + data = (uint8_t*)(&workset->half); > + data_w_2n = data + size_half; > + > + workset->w_2n = (Meow_FFT_Complex*)(data_w_2n); > + > + meow_make_twiddles(N, N_4 + 1, workset->w_2n); > + } > + > + return size_workset + size_w_2n + size_half; > +} > + > +// ----------------------------------------------------------------------------- > + > +unsigned meow_fft_is_slow(const Meow_FFT_Workset* workset) > +{ > + return !!(workset->wn); > +} > + > +unsigned meow_fft_is_slow_real(const Meow_FFT_Workset_Real* workset) > +{ > + return meow_fft_is_slow(&workset->half); > +} > + > +// ----------------------------------------------------------------------------- > + > +inline Meow_FFT_Complex meow_add > +( > + const Meow_FFT_Complex lhs > + , const Meow_FFT_Complex rhs > +) > +{ > + Meow_FFT_Complex result = > + { > + lhs.r + rhs.r > + , lhs.j + rhs.j > + }; > + > + return result; > +} > + > +inline Meow_FFT_Complex meow_sub > +( > + const Meow_FFT_Complex lhs > + , const Meow_FFT_Complex rhs > +) > +{ > + Meow_FFT_Complex result = > + { > + lhs.r - rhs.r > + , lhs.j - rhs.j > + }; > + > + return result; > +} > + > +inline Meow_FFT_Complex meow_negate(const Meow_FFT_Complex lhs) > +{ > + Meow_FFT_Complex result = > + { > + -lhs.r > + , -lhs.j > + }; > + > + return result; > +} > + > +inline Meow_FFT_Complex meow_conjugate(const Meow_FFT_Complex lhs) > +{ > + Meow_FFT_Complex result = > + { > + lhs.r > + , -lhs.j > + }; > + > + return result; > +} > + > +inline Meow_FFT_Complex meow_mul > +( > + const Meow_FFT_Complex lhs > + , const Meow_FFT_Complex rhs > +) > +{ > + Meow_FFT_Complex result = > + { > + (lhs.r * rhs.r) - (lhs.j * rhs.j) > + , (lhs.r * rhs.j) + (lhs.j * rhs.r) > + }; > + > + return result; > +} > + > +inline Meow_FFT_Complex meow_mul_by_conjugate > +( > + const Meow_FFT_Complex lhs > + , const Meow_FFT_Complex rhs > +) > +{ > + Meow_FFT_Complex result = > + { > + (lhs.r * rhs.r) + (lhs.j * rhs.j) > + , (lhs.j * rhs.r) - (lhs.r * rhs.j) > + }; > + > + return result; > +} > + > +inline Meow_FFT_Complex meow_mul_by_j(const Meow_FFT_Complex lhs) > +{ > + Meow_FFT_Complex result = > + { > + -lhs.j > + , lhs.r > + }; > + > + return result; > +} > + > +inline Meow_FFT_Complex meow_mulf > +( > + const Meow_FFT_Complex lhs > + , Meow_Float rhs > +) > +{ > + Meow_FFT_Complex result = > + { > + lhs.r * rhs > + , lhs.j * rhs > + }; > + > + return result; > +} > + > +// ----------------------------------------------------------------------------- > + > +// https://developercommunity.visualstudio.com/t/fatal-error-C1001:-Internal-compiler-err/1390698 > +// https://developercommunity.visualstudio.com/t/bug-in-visual-c-2019-and-below-i-think-it-is-relat/1119500 > +// https://developercommunity.visualstudio.com/t/optimized-compiler-bug/846597 > +#if defined(_MSC_VER) && (_MSC_VER < 1930) > +#define MSVC_BUGFIX volatile > +#else > +#define MSVC_BUGFIX > +#endif > + > +void meow_dft_n_dit > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > + , unsigned w_multiplier > + , unsigned radix > + , unsigned N > + , unsigned reverse > +) > +{ > + Meow_FFT_Complex scratch[2048]; > + // Can I do something with the knowledge that n is always odd? > + > + if (radix > 2048) > + { > + abort(); > + // removing VLAs, so set a hard limit we support. > + } > + > + for (unsigned butterfly = 0; butterfly < count; ++butterfly) > + { > + for (unsigned i = 0; i < radix; i++) > + { > + scratch[i] = out[i * count + butterfly]; > + } > + > + for (unsigned i = 0 ; i < radix ; ++i) > + { > + MSVC_BUGFIX const unsigned index_out = i * count + butterfly; > + > + // W0 is always 1 > + Meow_FFT_Complex sum = scratch[0]; > + > + for (unsigned j = 1; j < radix; ++j ) > + { > + const unsigned wi = (j * w_multiplier * index_out) % N; > + Complex w = w_n[wi]; > + Complex in = scratch[j]; > + > + Meow_Float rr; > + Meow_Float jj; > + > + if (reverse) > + { > + rr = (in.r * w.r) - (in.j * w.j); > + jj = (in.r * w.j) + (in.j * w.r); > + } > + else > + { > + rr = (in.r * w.r) + (in.j * w.j); > + jj = (in.j * w.r) - (in.r * w.j); > + } > + > + sum.r += rr; > + sum.j += jj; > + } > + > + out[index_out] = sum; > + } > + } > +} > + > +// ----------------------------------------------------------------------------- > + > +// Algorithms taken from > +// http://www.briangough.com/fftalgorithms.pdf > +// (equations 135 to 146) > +// in, out and twiddle indicies taken from kiss_fft > +// All twiddles are assumed to be ifft calculated. Conjugation is done in the > +// maths. > +// All twiddle input arrays are assumed to be sequentiall accessed. Twiddle > +// indicies are pre-calculated. > + > +// ----------------------------------------------------------------------------- > +// Forward > +// ----------------------------------------------------------------------------- > + > +void meow_radix_2_dit > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + // butteryfly 0 always has the twiddle factor == 1.0f > + // so special case that one. > + { > + Complex z0 = out[0]; > + Complex z1 = out[count]; > + > + out[0] = meow_add(z0, z1); > + out[count] = meow_sub(z0, z1); > + } > + > + for (unsigned butterfly = 1; butterfly < count; ++butterfly) > + { > + Complex w = w_n[butterfly - 1]; > + > + const unsigned i0 = butterfly; > + const unsigned i1 = butterfly + count; > + > + Complex z0 = out[i0]; > + Complex z1 = meow_mul_by_conjugate(out[i1], w); > + > + out[i0] = meow_add(z0, z1); > + out[i1] = meow_sub(z0, z1); > + // Equation 135 > + } > +} > + > +#define MEOW_SIN_PI_3 -0.866025403784438646763723170752936183471402626905190314f > + > +void meow_radix_3_dit > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + unsigned wi = 0; > + > + // W[0] is always 1.0f; > + { > + const unsigned i0 = 0 * count; > + const unsigned i1 = 1 * count; > + const unsigned i2 = 2 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = out[i1]; > + Complex z2 = out[i2]; > + > + Complex t1 = meow_add(z1, z2); > + Complex t2 = meow_sub(z0, meow_mulf(t1, 0.5)); > + Complex t3j = meow_mul_by_j(meow_mulf(meow_sub(z1, z2), MEOW_SIN_PI_3)); > + > + out[i0] = meow_add(z0, t1); > + out[i1] = meow_add(t2, t3j); > + out[i2] = meow_sub(t2, t3j); > + } > + > + for (unsigned butterfly = 1; butterfly < count; butterfly++, wi+=2) > + { > + Complex w1 = w_n[wi + 0]; > + Complex w2 = w_n[wi + 1]; > + > + const unsigned i0 = butterfly; > + const unsigned i1 = butterfly + count; > + const unsigned i2 = butterfly + 2 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = meow_mul_by_conjugate(out[i1], w1); > + Complex z2 = meow_mul_by_conjugate(out[i2], w2); > + > + Complex t1 = meow_add(z1, z2); > + Complex t2 = meow_sub(z0, meow_mulf(t1, 0.5)); > + Complex t3j = meow_mul_by_j(meow_mulf(meow_sub(z1, z2), MEOW_SIN_PI_3)); > + // Equation 136 > + > + out[i0] = meow_add(z0, t1); > + out[i1] = meow_add(t2, t3j); > + out[i2] = meow_sub(t2, t3j); > + // Equation 137 > + } > +} > + > +void meow_radix_4_dit > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + unsigned wi = 0u; > + > + // W[0] is always 1.0f; > + { > + const unsigned i0 = 0 * count; > + const unsigned i1 = 1 * count; > + const unsigned i2 = 2 * count; > + const unsigned i3 = 3 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = out[i1]; > + Complex z2 = out[i2]; > + Complex z3 = out[i3]; > + > + Complex t1 = meow_add(z0, z2); > + Complex t2 = meow_add(z1, z3); > + Complex t3 = meow_sub(z0, z2); > + Complex t4j = meow_negate(meow_mul_by_j(meow_sub(z1, z3))); > + > + out[i0] = meow_add(t1, t2); > + out[i1] = meow_add(t3, t4j); > + out[i2] = meow_sub(t1, t2); > + out[i3] = meow_sub(t3, t4j); > + } > + > + for (unsigned butterfly = 1; butterfly < count; ++butterfly, wi+=3) > + { > + Complex w1 = w_n[wi + 0]; > + Complex w2 = w_n[wi + 1]; > + Complex w3 = w_n[wi + 2]; > + > + const unsigned i0 = butterfly + 0 * count; > + const unsigned i1 = butterfly + 1 * count; > + const unsigned i2 = butterfly + 2 * count; > + const unsigned i3 = butterfly + 3 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = meow_mul_by_conjugate(out[i1], w1); > + Complex z2 = meow_mul_by_conjugate(out[i2], w2); > + Complex z3 = meow_mul_by_conjugate(out[i3], w3); > + > + Complex t1 = meow_add(z0, z2); > + Complex t2 = meow_add(z1, z3); > + Complex t3 = meow_sub(z0, z2); > + Complex t4j = meow_negate(meow_mul_by_j(meow_sub(z1, z3))); > + // Equations 138 > + // Also instead of conjugating the input and multplying with the > + // twiddles for the ifft, we invert the twiddles instead. This works > + // fine except here, the mul_by_j is assuming that it's the forward > + // fft twiddle we are multiplying with, not the conjugated one we > + // actually have. So we have to conjugate it _back_ if we are doing the > + // ifft. > + // Also, had to multiply by -j, not j for reasons I am yet to grasp. > + > + out[i0] = meow_add(t1, t2); > + out[i1] = meow_add(t3, t4j); > + out[i2] = meow_sub(t1, t2); > + out[i3] = meow_sub(t3, t4j); > + // Equations 139 > + } > +} > + > +#define MEOW_SQR_5_DIV_4 0.5590169943749474241022934171828190588601545899028814f > +#define MEOW_SIN_2PI_5 -0.9510565162951535721164393333793821434056986341257502f > +#define MEOW_SIN_2PI_10 -0.5877852522924731291687059546390727685976524376431459f > + > +void meow_radix_5_dit > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + unsigned wi = 0u; > + > + // W[0] is always 1.0f; > + { > + const unsigned i0 = 0 * count; > + const unsigned i1 = 1 * count; > + const unsigned i2 = 2 * count; > + const unsigned i3 = 3 * count; > + const unsigned i4 = 4 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = out[i1]; > + Complex z2 = out[i2]; > + Complex z3 = out[i3]; > + Complex z4 = out[i4]; > + > + Complex t1 = meow_add(z1, z4); > + Complex t2 = meow_add(z2, z3); > + Complex t3 = meow_sub(z1, z4); > + Complex t4 = meow_sub(z2, z3); > + // Equations 140 > + > + Complex t5 = meow_add(t1, t2); > + Complex t6 = meow_mulf(meow_sub(t1, t2), MEOW_SQR_5_DIV_4); > + Complex t7 = meow_sub(z0, meow_mulf(t5, 0.25f)); > + // Equation 141 > + > + Complex t8 = meow_add(t7, t6); > + Complex t9 = meow_sub(t7, t6); > + // Equation 142 > + > + Complex t10j = meow_mul_by_j > + ( > + meow_add > + ( > + meow_mulf(t3, MEOW_SIN_2PI_5) > + , meow_mulf(t4, MEOW_SIN_2PI_10) > + ) > + ); > + > + Complex t11j = meow_mul_by_j > + ( > + meow_sub > + ( > + meow_mulf(t3, MEOW_SIN_2PI_10) > + , meow_mulf(t4, MEOW_SIN_2PI_5) > + ) > + ); > + // Equation 143 > + > + out[i0] = meow_add(z0, t5); > + // Equation 144 > + > + out[i1] = meow_add(t8, t10j); > + out[i2] = meow_add(t9, t11j); > + // Equation 145 > + > + out[i3] = meow_sub(t9, t11j); > + out[i4] = meow_sub(t8, t10j); > + // Equation 146 > + } > + > + for (unsigned butterfly = 1; butterfly < count; ++butterfly, wi+=4) > + { > + Complex w1 = w_n[wi + 0]; > + Complex w2 = w_n[wi + 1]; > + Complex w3 = w_n[wi + 2]; > + Complex w4 = w_n[wi + 3]; > + > + unsigned i0 = butterfly + 0 * count; > + unsigned i1 = butterfly + 1 * count; > + unsigned i2 = butterfly + 2 * count; > + unsigned i3 = butterfly + 3 * count; > + unsigned i4 = butterfly + 4 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = meow_mul_by_conjugate(out[i1], w1); > + Complex z2 = meow_mul_by_conjugate(out[i2], w2); > + Complex z3 = meow_mul_by_conjugate(out[i3], w3); > + Complex z4 = meow_mul_by_conjugate(out[i4], w4); > + > + Complex t1 = meow_add(z1, z4); > + Complex t2 = meow_add(z2, z3); > + Complex t3 = meow_sub(z1, z4); > + Complex t4 = meow_sub(z2, z3); > + // Equations 140 > + > + Complex t5 = meow_add(t1, t2); > + Complex t6 = meow_mulf(meow_sub(t1, t2), MEOW_SQR_5_DIV_4); > + Complex t7 = meow_sub(z0, meow_mulf(t5, 0.25f)); > + // Equation 141 > + > + Complex t8 = meow_add(t7, t6); > + Complex t9 = meow_sub(t7, t6); > + // Equation 142 > + > + Complex t10j = meow_mul_by_j > + ( > + meow_add > + ( > + meow_mulf(t3, MEOW_SIN_2PI_5) > + , meow_mulf(t4, MEOW_SIN_2PI_10) > + ) > + ); > + > + Complex t11j = meow_mul_by_j > + ( > + meow_sub > + ( > + meow_mulf(t3, MEOW_SIN_2PI_10) > + , meow_mulf(t4, MEOW_SIN_2PI_5) > + ) > + ); > + // Equation 143 > + > + out[i0] = meow_add(z0, t5); > + // Equation 144 > + > + out[i1] = meow_add(t8, t10j); > + out[i2] = meow_add(t9, t11j); > + // Equation 145 > + > + out[i3] = meow_sub(t9, t11j); > + out[i4] = meow_sub(t8, t10j); > + // Equation 146 > + } > +} > + > +#define MEOW_1_DIV_SQR_2 0.707106781186547524400844362104849039284835938f > + > +static void meow_radix_8_dit > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + const Meow_Float* W = &w_n[0].r; > + > + { > + Meow_Float T3; > + Meow_Float T23; > + Meow_Float T18; > + Meow_Float T38; > + Meow_Float T6; > + Meow_Float T37; > + Meow_Float T21; > + Meow_Float T24; > + Meow_Float T13; > + Meow_Float T49; > + Meow_Float T35; > + Meow_Float T43; > + Meow_Float T10; > + Meow_Float T48; > + Meow_Float T30; > + Meow_Float T42; > + { > + Meow_Float T1; > + Meow_Float T2; > + Meow_Float T19; > + Meow_Float T20; > + T1 = out[0].r; > + T2 = out[count * 4].r; > + T3 = T1 + T2; > + T23 = T1 - T2; > + { > + Meow_Float T16; > + Meow_Float T17; > + Meow_Float T4; > + Meow_Float T5; > + T16 = out[0].j; > + T17 = out[count * 4].j; > + T18 = T16 + T17; > + T38 = T16 - T17; > + T4 = out[count * 2].r; > + T5 = out[count * 6].r; > + T6 = T4 + T5; > + T37 = T4 - T5; > + } > + T19 = out[count * 2].j; > + T20 = out[count * 6].j; > + T21 = T19 + T20; > + T24 = T19 - T20; > + { > + Meow_Float T11; > + Meow_Float T12; > + Meow_Float T31; > + Meow_Float T32; > + Meow_Float T33; > + Meow_Float T34; > + T11 = out[count * 7].r; > + T12 = out[count * 3].r; > + T31 = T11 - T12; > + T32 = out[count * 7].j; > + T33 = out[count * 3].j; > + T34 = T32 - T33; > + T13 = T11 + T12; > + T49 = T32 + T33; > + T35 = T31 - T34; > + T43 = T31 + T34; > + } > + { > + Meow_Float T8; > + Meow_Float T9; > + Meow_Float T26; > + Meow_Float T27; > + Meow_Float T28; > + Meow_Float T29; > + T8 = out[count * 1].r; > + T9 = out[count * 5].r; > + T26 = T8 - T9; > + T27 = out[count * 1].j; > + T28 = out[count * 5].j; > + T29 = T27 - T28; > + T10 = T8 + T9; > + T48 = T27 + T28; > + T30 = T26 + T29; > + T42 = T29 - T26; > + } > + } > + { > + Meow_Float T7; > + Meow_Float T14; > + Meow_Float T51; > + Meow_Float T52; > + T7 = T3 + T6; > + T14 = T10 + T13; > + out[count * 4].r = T7 - T14; > + out[0].r = T7 + T14; > + T51 = T18 + T21; > + T52 = T48 + T49; > + out[count * 4].j = T51 - T52; > + out[0].j = T51 + T52; > + } > + { > + Meow_Float T15; > + Meow_Float T22; > + Meow_Float T47; > + Meow_Float T50; > + T15 = T13 - T10; > + T22 = T18 - T21; > + out[count * 2].j = T15 + T22; > + out[count * 6].j = T22 - T15; > + T47 = T3 - T6; > + T50 = T48 - T49; > + out[count * 6].r = T47 - T50; > + out[count * 2].r = T47 + T50; > + } > + { > + Meow_Float T25; > + Meow_Float T36; > + Meow_Float T45; > + Meow_Float T46; > + T25 = T23 + T24; > + T36 = MEOW_1_DIV_SQR_2 * (T30 + T35); > + out[count * 5].r = T25 - T36; > + out[count * 1].r = T25 + T36; > + T45 = T38 - T37; > + T46 = MEOW_1_DIV_SQR_2 * (T42 + T43); > + out[count * 5].j = T45 - T46; > + out[count * 1].j = T45 + T46; > + } > + { > + Meow_Float T39; > + Meow_Float T40; > + Meow_Float T41; > + Meow_Float T44; > + T39 = T37 + T38; > + T40 = MEOW_1_DIV_SQR_2 * (T35 - T30); > + out[count * 7].j = T39 - T40; > + out[count * 3].j = T39 + T40; > + T41 = T23 - T24; > + T44 = MEOW_1_DIV_SQR_2 * (T42 - T43); > + out[count * 7].r = T41 - T44; > + out[count * 3].r = T41 + T44; > + } > + } > + > + out = out + 1; > + > + { > + unsigned m; > + for (m = 1; m < count; m = m + 1, out = out + 1, W = W + 14) > + { > + Meow_Float T7; > + Meow_Float T76; > + Meow_Float T43; > + Meow_Float T71; > + Meow_Float T41; > + Meow_Float T65; > + Meow_Float T53; > + Meow_Float T56; > + Meow_Float T18; > + Meow_Float T77; > + Meow_Float T46; > + Meow_Float T68; > + Meow_Float T30; > + Meow_Float T64; > + Meow_Float T48; > + Meow_Float T51; > + { > + Meow_Float T1; > + Meow_Float T70; > + Meow_Float T6; > + Meow_Float T69; > + T1 = out[0].r; > + T70 = out[0].j; > + { > + Meow_Float T3; > + Meow_Float T5; > + Meow_Float T2; > + Meow_Float T4; > + T3 = out[count * 4].r; > + T5 = out[count * 4].j; > + T2 = W[6]; > + T4 = W[7]; > + T6 = (T2 * T3) + (T4 * T5); > + T69 = (T2 * T5) - (T4 * T3); > + } > + T7 = T1 + T6; > + T76 = T70 - T69; > + T43 = T1 - T6; > + T71 = T69 + T70; > + } > + { > + Meow_Float T35; > + Meow_Float T54; > + Meow_Float T40; > + Meow_Float T55; > + { > + Meow_Float T32; > + Meow_Float T34; > + Meow_Float T31; > + Meow_Float T33; > + T32 = out[count * 7].r; > + T34 = out[count * 7].j; > + T31 = W[12]; > + T33 = W[13]; > + T35 = (T31 * T32) + (T33 * T34); > + T54 = (T31 * T34) - (T33 * T32); > + } > + { > + Meow_Float T37; > + Meow_Float T39; > + Meow_Float T36; > + Meow_Float T38; > + T37 = out[count * 3].r; > + T39 = out[count * 3].j; > + T36 = W[4]; > + T38 = W[5]; > + T40 = (T36 * T37) + (T38 * T39); > + T55 = (T36 * T39) - (T38 * T37); > + } > + T41 = T35 + T40; > + T65 = T54 + T55; > + T53 = T35 - T40; > + T56 = T54 - T55; > + } > + { > + Meow_Float T12; > + Meow_Float T44; > + Meow_Float T17; > + Meow_Float T45; > + { > + Meow_Float T9; > + Meow_Float T11; > + Meow_Float T8; > + Meow_Float T10; > + T9 = out[count * 2].r; > + T11 = out[count * 2].j; > + T8 = W[2]; > + T10 = W[3]; > + T12 = (T8 * T9) + (T10 * T11); > + T44 = (T8 * T11) - (T10 * T9); > + } > + { > + Meow_Float T14; > + Meow_Float T16; > + Meow_Float T13; > + Meow_Float T15; > + T14 = out[count * 6].r; > + T16 = out[count * 6].j; > + T13 = W[10]; > + T15 = W[11]; > + T17 = (T13 * T14) + (T15 * T16); > + T45 = (T13 * T16) - (T15 * T14); > + } > + T18 = T12 + T17; > + T77 = T12 - T17; > + T46 = T44 - T45; > + T68 = T44 + T45; > + } > + { > + Meow_Float T24; > + Meow_Float T49; > + Meow_Float T29; > + Meow_Float T50; > + { > + Meow_Float T21; > + Meow_Float T23; > + Meow_Float T20; > + Meow_Float T22; > + T21 = out[count * 1].r; > + T23 = out[count * 1].j; > + T20 = W[0]; > + T22 = W[1]; > + T24 = (T20 * T21) + (T22 * T23); > + T49 = (T20 * T23) - (T22 * T21); > + } > + { > + Meow_Float T26; > + Meow_Float T28; > + Meow_Float T25; > + Meow_Float T27; > + T26 = out[count * 5].r; > + T28 = out[count * 5].j; > + T25 = W[8]; > + T27 = W[9]; > + T29 = (T25 * T26) + (T27 * T28); > + T50 = (T25 * T28) - (T27 * T26); > + } > + T30 = T24 + T29; > + T64 = T49 + T50; > + T48 = T24 - T29; > + T51 = T49 - T50; > + } > + { > + Meow_Float T19; > + Meow_Float T42; > + Meow_Float T73; > + Meow_Float T74; > + T19 = T7 + T18; > + T42 = T30 + T41; > + out[count * 4].r = T19 - T42; > + out[0].r = T19 + T42; > + { > + Meow_Float T67; > + Meow_Float T72; > + Meow_Float T63; > + Meow_Float T66; > + T67 = T64 + T65; > + T72 = T68 + T71; > + out[0].j = T67 + T72; > + out[count * 4].j = T72 - T67; > + T63 = T7 - T18; > + T66 = T64 - T65; > + out[count * 6].r = T63 - T66; > + out[count * 2].r = T63 + T66; > + } > + T73 = T41 - T30; > + T74 = T71 - T68; > + out[count * 2].j = T73 + T74; > + out[count * 6].j = T74 - T73; > + { > + Meow_Float T59; > + Meow_Float T78; > + Meow_Float T62; > + Meow_Float T75; > + Meow_Float T60; > + Meow_Float T61; > + T59 = T43 - T46; > + T78 = T76 - T77; > + T60 = T51 - T48; > + T61 = T53 + T56; > + T62 = MEOW_1_DIV_SQR_2 * (T60 - T61); > + T75 = MEOW_1_DIV_SQR_2 * (T60 + T61); > + out[count * 7].r = T59 - T62; > + out[count * 5].j = T78 - T75; > + out[count * 3].r = T59 + T62; > + out[count * 1].j = T75 + T78; > + } > + { > + Meow_Float T47; > + Meow_Float T80; > + Meow_Float T58; > + Meow_Float T79; > + Meow_Float T52; > + Meow_Float T57; > + T47 = T43 + T46; > + T80 = T77 + T76; > + T52 = T48 + T51; > + T57 = T53 - T56; > + T58 = MEOW_1_DIV_SQR_2 * (T52 + T57); > + T79 = MEOW_1_DIV_SQR_2 * (T57 - T52); > + out[count * 5].r = T47 - T58; > + out[count * 7].j = T80 - T79; > + out[count * 1].r = T47 + T58; > + out[count * 3].j = T79 + T80; > + } > + } > + } > + } > +} > + > +// ----------------------------------------------------------------------------- > +// Inverse > +// ----------------------------------------------------------------------------- > + > +void meow_radix_2_dit_i > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + // butteryfly 0 always has the twiddle factor == 1.0f > + // so special case that one. > + { > + Complex z0 = out[0]; > + Complex z1 = out[count]; > + > + out[0] = meow_add(z0, z1); > + out[count] = meow_sub(z0, z1); > + } > + > + for (unsigned butterfly = 1; butterfly < count; ++butterfly) > + { > + Complex w = w_n[butterfly - 1]; > + > + const unsigned i0 = butterfly; > + const unsigned i1 = butterfly + count; > + > + Complex z0 = out[i0]; > + Complex z1 = meow_mul(out[i1], w); > + > + out[i0] = meow_add(z0, z1); > + out[i1] = meow_sub(z0, z1); > + // Equation 135 > + } > +} > + > +void meow_radix_3_dit_i > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + unsigned wi = 0u; > + > + // W[0] is always 1.0f; > + { > + const unsigned i0 = 0 * count; > + const unsigned i1 = 1 * count; > + const unsigned i2 = 2 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = out[i1]; > + Complex z2 = out[i2]; > + > + Complex t1 = meow_add(z1, z2); > + Complex t2 = meow_sub(z0, meow_mulf(t1, 0.5)); > + Complex t3j = meow_mul_by_j > + ( > + meow_mulf(meow_sub(z1, z2), -MEOW_SIN_PI_3) > + ); > + > + out[i0] = meow_add(z0, t1); > + out[i1] = meow_add(t2, t3j); > + out[i2] = meow_sub(t2, t3j); > + } > + > + for (unsigned butterfly = 1; butterfly < count; butterfly++, wi+=2) > + { > + Complex w1 = w_n[wi + 0]; > + Complex w2 = w_n[wi + 1]; > + > + const unsigned i0 = butterfly; > + const unsigned i1 = butterfly + count; > + const unsigned i2 = butterfly + 2 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = meow_mul(w1, out[i1]); > + Complex z2 = meow_mul(w2, out[i2]); > + > + Complex t1 = meow_add(z1, z2); > + Complex t2 = meow_sub(z0, meow_mulf(t1, 0.5)); > + Complex t3j = meow_mul_by_j > + ( > + meow_mulf(meow_sub(z1, z2), -MEOW_SIN_PI_3) > + ); > + // Equation 136 > + > + out[i0] = meow_add(z0, t1); > + out[i1] = meow_add(t2, t3j); > + out[i2] = meow_sub(t2, t3j); > + // Equation 137 > + } > +} > + > +void meow_radix_4_dit_i > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + unsigned wi = 0u; > + > + // W[0] is always 1.0f; > + { > + const unsigned i0 = 0 * count; > + const unsigned i1 = 1 * count; > + const unsigned i2 = 2 * count; > + const unsigned i3 = 3 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = out[i1]; > + Complex z2 = out[i2]; > + Complex z3 = out[i3]; > + > + Complex t1 = meow_add(z0, z2); > + Complex t2 = meow_add(z1, z3); > + Complex t3 = meow_sub(z0, z2); > + Complex t4j = meow_mul_by_j(meow_sub(z1, z3)); > + > + out[i0] = meow_add(t1, t2); > + out[i1] = meow_add(t3, t4j); > + out[i2] = meow_sub(t1, t2); > + out[i3] = meow_sub(t3, t4j); > + } > + > + for (unsigned butterfly = 1; butterfly < count; ++butterfly, wi+=3) > + { > + Complex w1 = w_n[wi + 0]; > + Complex w2 = w_n[wi + 1]; > + Complex w3 = w_n[wi + 2]; > + > + const unsigned i0 = butterfly + 0 * count; > + const unsigned i1 = butterfly + 1 * count; > + const unsigned i2 = butterfly + 2 * count; > + const unsigned i3 = butterfly + 3 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = meow_mul(w1, out[i1]); > + Complex z2 = meow_mul(w2, out[i2]); > + Complex z3 = meow_mul(w3, out[i3]); > + > + Complex t1 = meow_add(z0, z2); > + Complex t2 = meow_add(z1, z3); > + Complex t3 = meow_sub(z0, z2); > + > + Complex t4j = meow_mul_by_j(meow_sub(z1, z3)); > + // Equations 138 > + // Also instead of conjugating the input and multplying with the > + // twiddles for the ifft, we invert the twiddles instead. This works > + // fine except here, the mul_by_j is assuming that it's the forward > + // fft twiddle we are multiplying with, not the conjugated one we > + // actually have. So we have to conjugate it _back_ if we are doing the > + // ifft. > + // Also, had to multiply by -j, not j for reasons I am yet to grasp. > + > + out[i0] = meow_add(t1, t2); > + out[i1] = meow_add(t3, t4j); > + out[i2] = meow_sub(t1, t2); > + out[i3] = meow_sub(t3, t4j); > + // Equations 139 > + } > +} > + > +void meow_radix_5_dit_i > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + unsigned wi = 0u; > + > + // W[0] is always 1.0f; > + { > + const unsigned i0 = 0 * count; > + const unsigned i1 = 1 * count; > + const unsigned i2 = 2 * count; > + const unsigned i3 = 3 * count; > + const unsigned i4 = 4 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = out[i1]; > + Complex z2 = out[i2]; > + Complex z3 = out[i3]; > + Complex z4 = out[i4]; > + > + Complex t1 = meow_add(z1, z4); > + Complex t2 = meow_add(z2, z3); > + Complex t3 = meow_sub(z1, z4); > + Complex t4 = meow_sub(z2, z3); > + // Equations 140 > + > + Complex t5 = meow_add(t1, t2); > + Complex t6 = meow_mulf(meow_sub(t1, t2), MEOW_SQR_5_DIV_4); > + Complex t7 = meow_sub(z0, meow_mulf(t5, 0.25f)); > + // Equation 141 > + > + Complex t8 = meow_add(t7, t6); > + Complex t9 = meow_sub(t7, t6); > + // Equation 142 > + > + Complex t10j = meow_mul_by_j > + ( > + meow_add > + ( > + meow_mulf(t3, -MEOW_SIN_2PI_5) > + , meow_mulf(t4, -MEOW_SIN_2PI_10) > + ) > + ); > + > + Complex t11j = meow_mul_by_j > + ( > + meow_sub > + ( > + meow_mulf(t3, -MEOW_SIN_2PI_10) > + , meow_mulf(t4, -MEOW_SIN_2PI_5) > + ) > + ); > + // Equation 143 > + > + out[i0] = meow_add(z0, t5); > + // Equation 144 > + > + out[i1] = meow_add(t8, t10j); > + out[i2] = meow_add(t9, t11j); > + // Equation 145 > + > + out[i3] = meow_sub(t9, t11j); > + out[i4] = meow_sub(t8, t10j); > + // Equation 146 > + } > + > + for (unsigned butterfly = 1; butterfly < count; ++butterfly, wi+=4) > + { > + Complex w1 = w_n[wi + 0]; > + Complex w2 = w_n[wi + 1]; > + Complex w3 = w_n[wi + 2]; > + Complex w4 = w_n[wi + 3]; > + > + const unsigned i0 = butterfly + 0 * count; > + const unsigned i1 = butterfly + 1 * count; > + const unsigned i2 = butterfly + 2 * count; > + const unsigned i3 = butterfly + 3 * count; > + const unsigned i4 = butterfly + 4 * count; > + > + Complex z0 = out[i0]; > + Complex z1 = meow_mul(w1, out[i1]); > + Complex z2 = meow_mul(w2, out[i2]); > + Complex z3 = meow_mul(w3, out[i3]); > + Complex z4 = meow_mul(w4, out[i4]); > + > + Complex t1 = meow_add(z1, z4); > + Complex t2 = meow_add(z2, z3); > + Complex t3 = meow_sub(z1, z4); > + Complex t4 = meow_sub(z2, z3); > + // Equations 140 > + > + Complex t5 = meow_add(t1, t2); > + Complex t6 = meow_mulf(meow_sub(t1, t2), MEOW_SQR_5_DIV_4); > + Complex t7 = meow_sub(z0, meow_mulf(t5, 0.25f)); > + // Equation 141 > + > + Complex t8 = meow_add(t7, t6); > + Complex t9 = meow_sub(t7, t6); > + // Equation 142 > + > + Complex t10j = meow_mul_by_j > + ( > + meow_add > + ( > + meow_mulf(t3, -MEOW_SIN_2PI_5) > + , meow_mulf(t4, -MEOW_SIN_2PI_10) > + ) > + ); > + > + Complex t11j = meow_mul_by_j > + ( > + meow_sub > + ( > + meow_mulf(t3, -MEOW_SIN_2PI_10) > + , meow_mulf(t4, -MEOW_SIN_2PI_5) > + ) > + ); > + // Equation 143 > + > + out[i0] = meow_add(z0, t5); > + // Equation 144 > + > + out[i1] = meow_add(t8, t10j); > + out[i2] = meow_add(t9, t11j); > + // Equation 145 > + > + out[i3] = meow_sub(t9, t11j); > + out[i4] = meow_sub(t8, t10j); > + // Equation 146 > + } > +} > + > +static void meow_radix_8_dit_i > +( > + const Meow_FFT_Complex* w_n > + , Meow_FFT_Complex* out > + , unsigned count > +) > +{ > + const Meow_Float* W = &w_n[0].r; > + { > + Meow_Float T3; > + Meow_Float T37; > + Meow_Float T18; > + Meow_Float T23; > + Meow_Float T6; > + Meow_Float T24; > + Meow_Float T21; > + Meow_Float T38; > + Meow_Float T13; > + Meow_Float T49; > + Meow_Float T35; > + Meow_Float T43; > + Meow_Float T10; > + Meow_Float T48; > + Meow_Float T30; > + Meow_Float T42; > + { > + Meow_Float T1; > + Meow_Float T2; > + Meow_Float T19; > + Meow_Float T20; > + T1 = out[0].r; > + T2 = out[count * 4].r; > + T3 = T1 + T2; > + T37 = T1 - T2; > + { > + Meow_Float T16; > + Meow_Float T17; > + Meow_Float T4; > + Meow_Float T5; > + T16 = out[0].j; > + T17 = out[count * 4].j; > + T18 = T16 + T17; > + T23 = T16 - T17; > + T4 = out[count * 2].r; > + T5 = out[count * 6].r; > + T6 = T4 + T5; > + T24 = T4 - T5; > + } > + T19 = out[count * 2].j; > + T20 = out[count * 6].j; > + T21 = T19 + T20; > + T38 = T19 - T20; > + { > + Meow_Float T11; > + Meow_Float T12; > + Meow_Float T31; > + Meow_Float T32; > + Meow_Float T33; > + Meow_Float T34; > + T11 = out[count * 7].r; > + T12 = out[count * 3].r; > + T31 = T11 - T12; > + T32 = out[count * 7].j; > + T33 = out[count * 3].j; > + T34 = T32 - T33; > + T13 = T11 + T12; > + T49 = T32 + T33; > + T35 = T31 + T34; > + T43 = T34 - T31; > + } > + { > + Meow_Float T8; > + Meow_Float T9; > + Meow_Float T26; > + Meow_Float T27; > + Meow_Float T28; > + Meow_Float T29; > + T8 = out[count * 1].r; > + T9 = out[count * 5].r; > + T26 = T8 - T9; > + T27 = out[count * 1].j; > + T28 = out[count * 5].j; > + T29 = T27 - T28; > + T10 = T8 + T9; > + T48 = T27 + T28; > + T30 = T26 - T29; > + T42 = T26 + T29; > + } > + } > + { > + Meow_Float T7; > + Meow_Float T14; > + Meow_Float T47; > + Meow_Float T50; > + T7 = T3 + T6; > + T14 = T10 + T13; > + out[count * 4].r = T7 - T14; > + out[0].r = T7 + T14; > + T47 = T18 + T21; > + T50 = T48 + T49; > + out[count * 4].j = T47 - T50; > + out[0].j = T47 + T50; > + } > + { > + Meow_Float T15; > + Meow_Float T22; > + Meow_Float T51; > + Meow_Float T52; > + T15 = T10 - T13; > + T22 = T18 - T21; > + out[count * 2].j = T15 + T22; > + out[count * 6].j = T22 - T15; > + T51 = T3 - T6; > + T52 = T49 - T48; > + out[count * 6].r = T51 - T52; > + out[count * 2].r = T51 + T52; > + } > + { > + Meow_Float T25; > + Meow_Float T36; > + Meow_Float T45; > + Meow_Float T46; > + T25 = T23 - T24; > + T36 = MEOW_1_DIV_SQR_2 * (T30 - T35); > + out[count * 7].j = T25 - T36; > + out[count * 3].j = T25 + T36; > + T45 = T37 + T38; > + T46 = MEOW_1_DIV_SQR_2 * (T43 - T42); > + out[count * 7].r = T45 - T46; > + out[count * 3].r = T45 + T46; > + } > + { > + Meow_Float T39; > + Meow_Float T40; > + Meow_Float T41; > + Meow_Float T44; > + T39 = T37 - T38; > + T40 = MEOW_1_DIV_SQR_2 * (T30 + T35); > + out[count * 5].r = T39 - T40; > + out[count * 1].r = T39 + T40; > + T41 = T24 + T23; > + T44 = MEOW_1_DIV_SQR_2 * (T42 + T43); > + out[count * 5].j = T41 - T44; > + out[count * 1].j = T41 + T44; > + } > + } > + > + out = out + 1; > + > + { > + unsigned m; > + for (m = 1; m < count; m = m + 1, out = out + 1, W = W + 14) > + { > + Meow_Float T7; > + Meow_Float T77; > + Meow_Float T43; > + Meow_Float T71; > + Meow_Float T41; > + Meow_Float T64; > + Meow_Float T53; > + Meow_Float T56; > + Meow_Float T18; > + Meow_Float T76; > + Meow_Float T46; > + Meow_Float T68; > + Meow_Float T30; > + Meow_Float T65; > + Meow_Float T48; > + Meow_Float T51; > + { > + Meow_Float T1; > + Meow_Float T70; > + Meow_Float T6; > + Meow_Float T69; > + T1 = out[0].r; > + T70 = out[0].j; > + { > + Meow_Float T3; > + Meow_Float T5; > + Meow_Float T2; > + Meow_Float T4; > + T3 = out[count * 4].r; > + T5 = out[count * 4].j; > + T2 = W[6]; > + T4 = W[7]; > + T6 = (T2 * T3) - (T4 * T5); > + T69 = (T4 * T3) + (T2 * T5); > + } > + T7 = T1 + T6; > + T77 = T70 - T69; > + T43 = T1 - T6; > + T71 = T69 + T70; > + } > + { > + Meow_Float T35; > + Meow_Float T54; > + Meow_Float T40; > + Meow_Float T55; > + { > + Meow_Float T32; > + Meow_Float T34; > + Meow_Float T31; > + Meow_Float T33; > + T32 = out[count * 7].r; > + T34 = out[count * 7].j; > + T31 = W[12]; > + T33 = W[13]; > + T35 = (T31 * T32) - (T33 * T34); > + T54 = (T33 * T32) + (T31 * T34); > + } > + { > + Meow_Float T37; > + Meow_Float T39; > + Meow_Float T36; > + Meow_Float T38; > + T37 = out[count * 3].r; > + T39 = out[count * 3].j; > + T36 = W[4]; > + T38 = W[5]; > + T40 = (T36 * T37) - (T38 * T39); > + T55 = (T38 * T37) + (T36 * T39); > + } > + T41 = T35 + T40; > + T64 = T54 + T55; > + T53 = T35 - T40; > + T56 = T54 - T55; > + } > + { > + Meow_Float T12; > + Meow_Float T44; > + Meow_Float T17; > + Meow_Float T45; > + { > + Meow_Float T9; > + Meow_Float T11; > + Meow_Float T8; > + Meow_Float T10; > + T9 = out[count * 2].r; > + T11 = out[count * 2].j; > + T8 = W[2]; > + T10 = W[3]; > + T12 = (T8 * T9) - (T10 * T11); > + T44 = (T10 * T9) + (T8 * T11); > + } > + { > + Meow_Float T14; > + Meow_Float T16; > + Meow_Float T13; > + Meow_Float T15; > + T14 = out[count * 6].r; > + T16 = out[count * 6].j; > + T13 = W[10]; > + T15 = W[11]; > + T17 = (T13 * T14) - (T15 * T16); > + T45 = (T15 * T14) + (T13 * T16); > + } > + T18 = T12 + T17; > + T76 = T12 - T17; > + T46 = T44 - T45; > + T68 = T44 + T45; > + } > + { > + Meow_Float T24; > + Meow_Float T49; > + Meow_Float T29; > + Meow_Float T50; > + { > + Meow_Float T21; > + Meow_Float T23; > + Meow_Float T20; > + Meow_Float T22; > + T21 = out[count * 1].r; > + T23 = out[count * 1].j; > + T20 = W[0]; > + T22 = W[1]; > + T24 = (T20 * T21) - (T22 * T23); > + T49 = (T22 * T21) + (T20 * T23); > + } > + { > + Meow_Float T26; > + Meow_Float T28; > + Meow_Float T25; > + Meow_Float T27; > + T26 = out[count * 5].r; > + T28 = out[count * 5].j; > + T25 = W[8]; > + T27 = W[9]; > + T29 = (T25 * T26) - (T27 * T28); > + T50 = (T27 * T26) + (T25 * T28); > + } > + T30 = T24 + T29; > + T65 = T49 + T50; > + T48 = T24 - T29; > + T51 = T49 - T50; > + } > + { > + Meow_Float T19; > + Meow_Float T42; > + Meow_Float T73; > + Meow_Float T74; > + T19 = T7 + T18; > + T42 = T30 + T41; > + out[count * 4].r = T19 - T42; > + out[0].r = T19 + T42; > + { > + Meow_Float T67; > + Meow_Float T72; > + Meow_Float T63; > + Meow_Float T66; > + T67 = T65 + T64; > + T72 = T68 + T71; > + out[0].j = T67 + T72; > + out[count * 4].j = T72 - T67; > + T63 = T7 - T18; > + T66 = T64 - T65; > + out[count * 6].r = T63 - T66; > + out[count * 2].r = T63 + T66; > + } > + T73 = T30 - T41; > + T74 = T71 - T68; > + out[count * 2].j = T73 + T74; > + out[count * 6].j = T74 - T73; > + { > + Meow_Float T59; > + Meow_Float T78; > + Meow_Float T62; > + Meow_Float T75; > + Meow_Float T60; > + Meow_Float T61; > + T59 = T43 + T46; > + T78 = T76 + T77; > + T60 = T56 - T53; > + T61 = T48 + T51; > + T62 = MEOW_1_DIV_SQR_2 * (T60 - T61); > + T75 = MEOW_1_DIV_SQR_2 * (T61 + T60); > + out[count * 7].r = T59 - T62; > + out[count * 5].j = T78 - T75; > + out[count * 3].r = T59 + T62; > + out[count * 1].j = T75 + T78; > + } > + { > + Meow_Float T47; > + Meow_Float T80; > + Meow_Float T58; > + Meow_Float T79; > + Meow_Float T52; > + Meow_Float T57; > + T47 = T43 - T46; > + T80 = T77 - T76; > + T52 = T48 - T51; > + T57 = T53 + T56; > + T58 = MEOW_1_DIV_SQR_2 * (T52 + T57); > + T79 = MEOW_1_DIV_SQR_2 * (T52 - T57); > + out[count * 5].r = T47 - T58; > + out[count * 7].j = T80 - T79; > + out[count * 1].r = T47 + T58; > + out[count * 3].j = T79 + T80; > + } > + } > + } > + } > +} > + > +// ----------------------------------------------------------------------------- > + > +// Paraphrased from kiss-fft > +void meow_recursive_fft_mixed_meow_radix_dit > +( > + const Meow_FFT_Workset* fft > + , unsigned stage > + , Complex* in > + , Meow_FFT_Complex* out > + , unsigned w_mul > +) > +{ > + const unsigned radix = fft->stages.radix[stage]; > + const unsigned count = fft->stages.remainder[stage]; > + > + Complex* w = fft->wn; > + const unsigned w_offset = fft->stages.offsets[stage]; > + Complex* w_sequential = &fft->wn_ordered[w_offset]; > + > + if (count == 1) > + { > + for (unsigned i = 0; i < radix; i++) > + { > + out[i] = in[i * w_mul]; > + } > + } > + else > + { > + const unsigned new_w_multiplier = w_mul * radix; > + > + for (unsigned i = 0; i < radix; ++i) > + { > + meow_recursive_fft_mixed_meow_radix_dit > + ( > + fft > + , stage + 1 > + , &in[w_mul * i] > + , &out[count * i] > + , new_w_multiplier > + ); > + } > + } > + > + switch (radix) > + { > + case 2: meow_radix_2_dit(w_sequential, out, count); break; > + case 3: meow_radix_3_dit(w_sequential, out, count); break; > + case 4: meow_radix_4_dit(w_sequential, out, count); break; > + case 5: meow_radix_5_dit(w_sequential, out, count); break; > + case 8: meow_radix_8_dit(w_sequential, out, count); break; > + > + default: meow_dft_n_dit(w, out, count, w_mul, radix, fft->N, 0); break; > + } > +} > + > +void meow_recursive_fft_mixed_meow_radix_dit_i > +( > + const Meow_FFT_Workset* fft > + , unsigned stage > + , Complex* in > + , Meow_FFT_Complex* out > + , unsigned w_mul > +) > +{ > + const unsigned radix = fft->stages.radix[stage]; > + const unsigned count = fft->stages.remainder[stage]; > + > + Complex* w = fft->wn; > + const unsigned w_offset = fft->stages.offsets[stage]; > + Complex* w_sequential = &fft->wn_ordered[w_offset]; > + > + if (count == 1) > + { > + for (unsigned i = 0; i < radix; i++) > + { > + out[i] = in[i * w_mul]; > + } > + } > + else > + { > + const unsigned new_w_multiplier = w_mul * radix; > + > + for (unsigned i = 0; i < radix; ++i) > + { > + meow_recursive_fft_mixed_meow_radix_dit_i > + ( > + fft > + , stage + 1 > + , &in[w_mul * i] > + , &out[count * i] > + , new_w_multiplier > + ); > + } > + } > + > + switch (radix) > + { > + case 2: meow_radix_2_dit_i(w_sequential, out, count); break; > + case 3: meow_radix_3_dit_i(w_sequential, out, count); break; > + case 4: meow_radix_4_dit_i(w_sequential, out, count); break; > + case 5: meow_radix_5_dit_i(w_sequential, out, count); break; > + case 8: meow_radix_8_dit_i(w_sequential, out, count); break; > + > + default: meow_dft_n_dit(w, out, count, w_mul, radix, fft->N, 1); break; > + } > +} > + > +// ----------------------------------------------------------------------------- > +// > +// http://www.engineeringproductivitytools.com/stuff/T0001/PT10.HTM > +// I finally figured out why this page confused me so much. It wasn't > +// _consistent_ with formular chunks. Sometimes with would include j, othertimes > +// it wouldn't. Sometimes it would include Wk, othertimes not. Ugh. No wonder > +// my maths was wrong by the wrong twiddle or incorrect sign. > +// > +// So the magic forumlar is: > +// > +// Z() == two-for-one-fft result waiting for final tiwddle > +// F() == result fft, what we want > +// Wn() == twiddle factor for N > +// Wn2() == twiddle factor for N/2 > +// > +// Note for fft Wn() == e^(-j*2*pi*k/N) > +// Note for ifft Wn() == e^( j*2*pi*k/N) // <--- NOTICE MISSING '-'! > + > +// For FFT > +// k = 0 > + > +// F(0) = Z(0).real + Z(0).imag > +// F(N/2) = Z(0).real - Z(0).imag > + > +// k > 0 > +// Feven_a(k) = Z(k) + Z(N/2 - k)* > +// Fodd_a(k) = Z(k) - Z(N/2 - k)* > +// > +// Feven = Feven_a(k) > +// Fodd = -j * Fodd_a(k) > +// > +// F(k) = 0.5 * (Feven + (Wn(k) * Fodd)) > + > +// ----------------------------------------------------------------------------- > + > +// For IFFT (think the twiddle is DIF hence not * 0.5) > +// k = 0 > + > +// Z(0).real = F(0).real + F(N/2).real > +// Z(0).imag = F(0).real - F(N/2).real > + > +// k > 0 > +// Zeven_a(k) = F(k) + F(N/2 - k)* > +// Zodd_a(k) = F(k) - F(N/2 - k)* > +// > +// Feven = Feven_a(k) > +// Fodd = j * Fodd_a(k) // <---- NOTICE missing '-'! > +// > +// F(k) = Feven + (Wn(k) * Fodd) // <---- Remember ifft twiddles!, no * 0.5. > + > +inline void meow_mixer > +( > + unsigned N_2 > + , Complex* w_2n > + , Complex* in > + , Meow_FFT_Complex* out > +) > +{ > + // looking at kiss_fft they use double symmetery, so we only need to > + // actaully do N/4 twiddles. engineeringproductivitytools mentions something > + // similar as well. > + > + const unsigned N_4 = N_2 / 2u; > + > + for (unsigned k = 1; k <= N_4; k++) > + { > + Complex x_k = in[k]; > + Complex x_n_2_minus_k = meow_conjugate(in[N_2 - k]); > + Complex wk = meow_conjugate(w_2n[k]); > + > + Complex za = meow_add(x_k, x_n_2_minus_k); > + Complex zb = meow_sub(x_k, x_n_2_minus_k); > + > + Complex x_even = za; > + > + Complex x_odd = meow_negate(meow_mul_by_j(zb)); > + > + Complex wk_x_odd = meow_mul(x_odd, wk); > + Complex x_k_sum = meow_add(x_even, wk_x_odd); > + Complex x_n_2_minus_k_sum = meow_conjugate(meow_sub(x_even, wk_x_odd)); > + > + Complex x_k_out = meow_mulf(x_k_sum , 0.5f); > + Complex x_n_2_minus_k_out = meow_mulf(x_n_2_minus_k_sum, 0.5f); > + > + out[k] = x_k_out; > + out[N_2 - k] = x_n_2_minus_k_out; > + } > +} > + > +inline void meow_mixer_i > +( > + unsigned N_2 > + , Complex* w_2n > + , Complex* in > + , Meow_FFT_Complex* out > +) > +{ > + const unsigned N_4 = N_2 / 2u; > + > + for (unsigned k = 1; k <= N_4; k++) > + { > + Complex x_k = in[k]; > + Complex x_n_2_minus_k = meow_conjugate(in[N_2 - k]); > + Complex wk = w_2n[k]; > + > + Complex za = meow_add(x_k, x_n_2_minus_k); > + Complex zb = meow_sub(x_k, x_n_2_minus_k); > + > + Complex x_even = za; > + > + Complex x_odd = meow_mul_by_j(zb); > + > + Complex wk_x_odd = meow_mul(x_odd, wk); > + Complex x_k_sum = meow_add(x_even, wk_x_odd); > + Complex x_n_2_minus_k_sum = meow_conjugate(meow_sub(x_even, wk_x_odd)); > + > + Complex x_k_out = x_k_sum; > + Complex x_n_2_minus_k_out = x_n_2_minus_k_sum; > + > + out[k] = x_k_out; > + out[N_2 - k] = x_n_2_minus_k_out; > + } > +} > + > +// ----------------------------------------------------------------------------- > + > +void meow_fft_real > +( > + const Meow_FFT_Workset_Real* fft > + , const Meow_Float* in > + , Meow_FFT_Complex* out > +) > +{ > + // Need two sets of twiddles. One set for N/2, and one set for N. > + // However for the N set, we only need N/4 twiddles due to symmetry * 2. > + > + const unsigned N_2 = fft->half.N; > + Complex* magic = fft->w_2n; > + Meow_FFT_Complex z0; > + > + meow_recursive_fft_mixed_meow_radix_dit > + ( > + &fft->half > + , 0 > + , (Complex*)(in) > + , out > + , 1 > + ); > + > + z0 = out[0]; > + > + out[0].r = z0.r + z0.j; > + out[0].j = z0.r - z0.j; > + // combine 0, and N_2 into the same number in order > + // to keep the array size N/2 > + > + meow_mixer(N_2, magic, out, out); > +} > + > +void meow_fft_real_i > +( > + const Meow_FFT_Workset_Real* ifft > + , const Meow_FFT_Complex* in > + , Meow_FFT_Complex* temp > + , Meow_Float* out > +) > +{ > + const unsigned N_2 = ifft->half.N; > + Complex* magic = ifft->w_2n; > + > + temp[0].r = in[0].r + in[0].j; > + temp[0].j = in[0].r - in[0].j; > + > + meow_mixer_i(N_2, magic, in, temp); > + > + meow_recursive_fft_mixed_meow_radix_dit_i > + ( > + &ifft->half > + , 0 > + , temp > + , (Meow_FFT_Complex*)(out) > + , 1 > + ); > +} > + > +void meow_fft > +( > + const Meow_FFT_Workset* data > + , const Meow_FFT_Complex* in > + , Meow_FFT_Complex* out > +) > +{ > + meow_recursive_fft_mixed_meow_radix_dit > + ( > + data > + , 0 > + , in > + , out > + , 1 > + ); > +} > + > +void meow_fft_i > +( > + const Meow_FFT_Workset* data > + , const Meow_FFT_Complex* in > + , Meow_FFT_Complex* out > +) > +{ > + meow_recursive_fft_mixed_meow_radix_dit_i > + ( > + data > + , 0 > + , in > + , out > + , 1 > + ); > +} > + > +#endif > + > +// bash script used to generate radix N codelets from fftw that suit this code. > +// since my tests run slower with > 8 radix, I hand modified the radix 8 > +// generated (function signature) instead of updating this code. > +#if 0 > +#!/bin/sh > +# <command> N [-1|1] [|_i] > + > +cat << EOF > + > +static void meow_radix_${1}_dit${3} > +( > + meow_fft_complex* out > + , const Meow_Float* W > + , unsigned count > +) > +{ > +EOF > + > +#// First loop doesn't use twiddles > +./gen_notw.native -n ${1} -standalone -sign ${2} \ > + | sed 's/E /Meow_Float /g' \ > + | sed '/INT.*/d' \ > + | sed -r 's/r[io]\[(.+)]/out\[\1\].r/g' \ > + | sed -r 's/i[io]\[(.+)]/out\[\1\].j/g' \ > + | sed '/for (.*).*/d' \ > + | sed -r 's/WS\(.., (.*)\)/count * \1/g' \ > + | sed -r 's/FMA\((.+), (.+), (.+)\)/\(\1 * \2\) + \(\3\)/g' \ > + | sed -r 's/FMS\((.+), (.+), (.+)\)/\(\1 * \2\) - \(\3\)/g' \ > + | sed -r 's/FNMA\((.+), (.+), (.+)\)/-\(\1 * \2\) + \(\3\)/g' \ > + | sed -r 's/FNMS\((.+), (.+), (.+)\)/\(\3\) - \(\1 * \2\)/g' \ > + | sed -r 's/DK\((.+), (.+)\);/static const Meow_Float \1 = \2;/g' \ > + | head -n -3 \ > + | tail -n +9 > + > +echo "" > +echo "out = out + 1;" > +echo "" > + > +./gen_twiddle.native -n ${1} -standalone -sign ${2} -dit -with-ms 1 \ > + | sed 's/E /Meow_Float /g' \ > + | sed 's/INT /unsigned /g' \ > + | sed -r 's/r[io]\[(.+)]/out\[\1\].r/g' \ > + | sed -r 's/i[io]\[(.+)]/out\[\1\].j/g' \ > + | sed 's/, MAKE_VOLATILE_STRIDE(.*))/)/g' \ > + | sed 's/, MAKE_VOLATILE_STRIDE(.*)//g' \ > + | sed -r 's/WS\(.., (.*)\)/count * \1/g' \ > + | sed -r 's/FMA\((.+), (.+), (.+)\)/\(\1 * \2\) + \(\3\)/g' \ > + | sed -r 's/FMS\((.+), (.+), (.+)\)/\(\1 * \2\) - \(\3\)/g' \ > + | sed -r 's/FNMA\((.+), (.+), (.+)\)/-\(\1 * \2\) + \(\3\)/g' \ > + | sed -r 's/FNMS\((.+), (.+), (.+)\)/\(\3\) - \(\1 * \2\)/g' \ > + | sed '/DK(.*);/d' \ > + | sed 's/ri = ri + 1, ii = ii + 1,/out = out + 1,/g' \ > + | sed 's/m = mb, W = W + (mb * .*);/m = 1;/g' \ > + | sed -r 's/(for \(.*\)).*/\1\n{/g' \ > + | sed 's/me/count/g' \ > + | head -n -2 \ > + | tail -n +10 > + > + > +echo "}" > +#endif Intel Semiconductor AG Registered No. 020.30.913.786-7 Registered Office: Dufourstrasse 101 , 8008 Zurich, Switzerland ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH i-g-t 3/3] lib/igt_audio: Replace GSL FFT usage with meow_fft 2024-09-13 10:44 [PATCH i-g-t 0/3] Switch the FFT library to meow_fft Kamil Konieczny 2024-09-13 10:44 ` [PATCH i-g-t 1/3] lib/uwildmat: Move to a dedicated vendored library directory Kamil Konieczny 2024-09-13 10:44 ` [PATCH i-g-t 2/3] lib/vendor: Add the meow_fft library Kamil Konieczny @ 2024-09-13 10:44 ` Kamil Konieczny 2024-10-08 6:04 ` Peter Senna Tschudin 2024-10-08 6:08 ` Peter Senna Tschudin 2024-09-13 14:01 ` ✓ Fi.CI.BAT: success for Switch the FFT library to meow_fft Patchwork ` (3 subsequent siblings) 6 siblings, 2 replies; 12+ messages in thread From: Kamil Konieczny @ 2024-09-13 10:44 UTC (permalink / raw) To: igt-dev; +Cc: Ryszard Knop, Kamil Konieczny From: Ryszard Knop <ryszard.knop@intel.com> Tested by running kms_chamelium tests related with audio and comparing GSL and meow_fft outputs in a separate test program. It appears meow_fft is slightly less accurate than GSL (result differs after the 6th decimal place), but the error is low enough that it does not matter here. v2: sort headers, remove blank spaces, fixed codestyle (Kamil) Signed-off-by: Ryszard Knop <ryszard.knop@intel.com> Signed-off-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> --- lib/igt_audio.c | 74 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 14 deletions(-) diff --git a/lib/igt_audio.c b/lib/igt_audio.c index e0b1bafe1..193f9aa05 100644 --- a/lib/igt_audio.c +++ b/lib/igt_audio.c @@ -28,12 +28,14 @@ #include <errno.h> #include <fcntl.h> -#include <gsl/gsl_fft_real.h> +#include <limits.h> #include <math.h> #include <unistd.h> #include "igt_audio.h" +#include "igt_aux.h" #include "igt_core.h" +#include "meow_fft/meow_fft.h" #define FREQS_MAX 64 #define CHANNELS_MAX 8 @@ -322,6 +324,53 @@ static double hann_window(double v, size_t i, size_t N) return v * 0.5 * (1 - cos(2.0 * M_PI * (double) i / (double) N)); } +/** + * run_fft: + * @array: The signal to run FFT on + * @length: The signal buffer length (must be a power of 2) + * + * Run the Fast Fourier Transform on the provided signal, whose + * length must be a power of 2. The return value points to an + * array of N/2 structs with real (.r) and imaginary (.j) parts. + * + * For the 0-th FFT element, only the real part is valid - its + * imaginary part is always 0 and is not saved anywhere. + * + * For the (N/2)-th element, again, only the real part is valid. + * The array does not have enough space to save it as a separate + * element, so its real part is saved in the 0-th element's + * imaginary part. + */ +static Meow_FFT_Complex *run_fft(double *array, size_t length) +{ + size_t workset_bytes; + Meow_FFT_Complex *fft_data; + struct Meow_FFT_Workset_Real *fft_workset; + + igt_assert(length >= 2 && is_power_of_two(length)); + + // Get size for a N point fft working on non-complex (real) data. + workset_bytes = meow_fft_generate_workset_real(length, NULL); + if (workset_bytes == 0) + return NULL; + + fft_data = malloc(sizeof(Meow_FFT_Complex) * length); + if (!fft_data) + return NULL; + + fft_workset = (struct Meow_FFT_Workset_Real *)malloc(workset_bytes); + if (!fft_workset) { + free(fft_data); + return NULL; + } + + meow_fft_generate_workset_real(length, fft_workset); + meow_fft_real(fft_workset, array, fft_data); + free(fft_workset); + + return fft_data; +} + /** * Checks that frequencies specified in signal, and only those, are included * in the input data. @@ -333,11 +382,12 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, int channel, const double *samples, size_t samples_len) { double *data; + Meow_FFT_Complex *fft_data; size_t data_len = samples_len; size_t bin_power_len = data_len / 2 + 1; double bin_power[bin_power_len]; bool detected[FREQS_MAX]; - int ret, freq_accuracy, freq, local_max_freq; + int freq_accuracy, freq, local_max_freq; double max, local_max, threshold; size_t i, j; bool above, success; @@ -360,27 +410,22 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, freq_accuracy = sampling_rate / data_len; igt_debug("Allowed freq. error: %d Hz\n", freq_accuracy); - ret = gsl_fft_real_radix2_transform(data, 1, data_len); - if (ret != 0) { + fft_data = run_fft(data, data_len); + if (!fft_data) { free(data); igt_assert(0); } - /* Compute the power received by every bin of the FFT. - * - * For i < data_len / 2, the real part of the i-th term is stored at - * data[i] and its imaginary part is stored at data[data_len - i]. - * i = 0 and i = data_len / 2 are special cases, they are purely real - * so their imaginary part isn't stored. - * + /* Compute the power received by every bin of the FFT. The run_fft + * function docs explain the special cases outside of the for loop. * The power is encoded as the magnitude of the complex number and the * phase is encoded as its angle. */ - bin_power[0] = data[0]; + bin_power[0] = fft_data[0].r; for (i = 1; i < bin_power_len - 1; i++) { - bin_power[i] = hypot(data[i], data[data_len - i]); + bin_power[i] = hypot(fft_data[i].r, fft_data[i].j); } - bin_power[bin_power_len - 1] = data[data_len / 2]; + bin_power[bin_power_len - 1] = fft_data[0].j; /* Normalize the power */ for (i = 0; i < bin_power_len; i++) @@ -487,6 +532,7 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, } } + free(fft_data); free(data); return success; -- 2.43.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH i-g-t 3/3] lib/igt_audio: Replace GSL FFT usage with meow_fft 2024-09-13 10:44 ` [PATCH i-g-t 3/3] lib/igt_audio: Replace GSL FFT usage with meow_fft Kamil Konieczny @ 2024-10-08 6:04 ` Peter Senna Tschudin 2024-10-08 6:08 ` Peter Senna Tschudin 1 sibling, 0 replies; 12+ messages in thread From: Peter Senna Tschudin @ 2024-10-08 6:04 UTC (permalink / raw) To: Kamil Konieczny, igt-dev; +Cc: Ryszard Knop On 13.09.2024 12:44, Kamil Konieczny wrote: > From: Ryszard Knop <ryszard.knop@intel.com> > > Tested by running kms_chamelium tests related with audio and comparing > GSL and meow_fft outputs in a separate test program. It appears meow_fft > is slightly less accurate than GSL (result differs after the 6th decimal > place), but the error is low enough that it does not matter here. > > v2: sort headers, remove blank spaces, fixed codestyle (Kamil) > Reviewed-by: Peter Senna Tschudin <peter.senna@linux.intel.com> > Signed-off-by: Ryszard Knop <ryszard.knop@intel.com> > Signed-off-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> > --- > lib/igt_audio.c | 74 +++++++++++++++++++++++++++++++++++++++---------- > 1 file changed, 60 insertions(+), 14 deletions(-) > > diff --git a/lib/igt_audio.c b/lib/igt_audio.c > index e0b1bafe1..193f9aa05 100644 > --- a/lib/igt_audio.c > +++ b/lib/igt_audio.c > @@ -28,12 +28,14 @@ > > #include <errno.h> > #include <fcntl.h> > -#include <gsl/gsl_fft_real.h> > +#include <limits.h> > #include <math.h> > #include <unistd.h> > > #include "igt_audio.h" > +#include "igt_aux.h" > #include "igt_core.h" > +#include "meow_fft/meow_fft.h" > > #define FREQS_MAX 64 > #define CHANNELS_MAX 8 > @@ -322,6 +324,53 @@ static double hann_window(double v, size_t i, size_t N) > return v * 0.5 * (1 - cos(2.0 * M_PI * (double) i / (double) N)); > } > > +/** > + * run_fft: > + * @array: The signal to run FFT on > + * @length: The signal buffer length (must be a power of 2) > + * > + * Run the Fast Fourier Transform on the provided signal, whose > + * length must be a power of 2. The return value points to an > + * array of N/2 structs with real (.r) and imaginary (.j) parts. > + * > + * For the 0-th FFT element, only the real part is valid - its > + * imaginary part is always 0 and is not saved anywhere. > + * > + * For the (N/2)-th element, again, only the real part is valid. > + * The array does not have enough space to save it as a separate > + * element, so its real part is saved in the 0-th element's > + * imaginary part. > + */ > +static Meow_FFT_Complex *run_fft(double *array, size_t length) > +{ > + size_t workset_bytes; > + Meow_FFT_Complex *fft_data; > + struct Meow_FFT_Workset_Real *fft_workset; > + > + igt_assert(length >= 2 && is_power_of_two(length)); > + > + // Get size for a N point fft working on non-complex (real) data. > + workset_bytes = meow_fft_generate_workset_real(length, NULL); > + if (workset_bytes == 0) > + return NULL; > + > + fft_data = malloc(sizeof(Meow_FFT_Complex) * length); > + if (!fft_data) > + return NULL; > + > + fft_workset = (struct Meow_FFT_Workset_Real *)malloc(workset_bytes); > + if (!fft_workset) { > + free(fft_data); > + return NULL; > + } > + > + meow_fft_generate_workset_real(length, fft_workset); > + meow_fft_real(fft_workset, array, fft_data); > + free(fft_workset); > + > + return fft_data; > +} > + > /** > * Checks that frequencies specified in signal, and only those, are included > * in the input data. > @@ -333,11 +382,12 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, > int channel, const double *samples, size_t samples_len) > { > double *data; > + Meow_FFT_Complex *fft_data; > size_t data_len = samples_len; > size_t bin_power_len = data_len / 2 + 1; > double bin_power[bin_power_len]; > bool detected[FREQS_MAX]; > - int ret, freq_accuracy, freq, local_max_freq; > + int freq_accuracy, freq, local_max_freq; > double max, local_max, threshold; > size_t i, j; > bool above, success; > @@ -360,27 +410,22 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, > freq_accuracy = sampling_rate / data_len; > igt_debug("Allowed freq. error: %d Hz\n", freq_accuracy); > > - ret = gsl_fft_real_radix2_transform(data, 1, data_len); > - if (ret != 0) { > + fft_data = run_fft(data, data_len); > + if (!fft_data) { > free(data); > igt_assert(0); > } > > - /* Compute the power received by every bin of the FFT. > - * > - * For i < data_len / 2, the real part of the i-th term is stored at > - * data[i] and its imaginary part is stored at data[data_len - i]. > - * i = 0 and i = data_len / 2 are special cases, they are purely real > - * so their imaginary part isn't stored. > - * > + /* Compute the power received by every bin of the FFT. The run_fft > + * function docs explain the special cases outside of the for loop. > * The power is encoded as the magnitude of the complex number and the > * phase is encoded as its angle. > */ > - bin_power[0] = data[0]; > + bin_power[0] = fft_data[0].r; > for (i = 1; i < bin_power_len - 1; i++) { > - bin_power[i] = hypot(data[i], data[data_len - i]); > + bin_power[i] = hypot(fft_data[i].r, fft_data[i].j); > } > - bin_power[bin_power_len - 1] = data[data_len / 2]; > + bin_power[bin_power_len - 1] = fft_data[0].j; > > /* Normalize the power */ > for (i = 0; i < bin_power_len; i++) > @@ -487,6 +532,7 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, > } > } > > + free(fft_data); > free(data); > > return success; ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH i-g-t 3/3] lib/igt_audio: Replace GSL FFT usage with meow_fft 2024-09-13 10:44 ` [PATCH i-g-t 3/3] lib/igt_audio: Replace GSL FFT usage with meow_fft Kamil Konieczny 2024-10-08 6:04 ` Peter Senna Tschudin @ 2024-10-08 6:08 ` Peter Senna Tschudin 1 sibling, 0 replies; 12+ messages in thread From: Peter Senna Tschudin @ 2024-10-08 6:08 UTC (permalink / raw) To: Kamil Konieczny, igt-dev; +Cc: Ryszard Knop On 13.09.2024 12:44, Kamil Konieczny wrote: > From: Ryszard Knop <ryszard.knop@intel.com> > > Tested by running kms_chamelium tests related with audio and comparing > GSL and meow_fft outputs in a separate test program. It appears meow_fft > is slightly less accurate than GSL (result differs after the 6th decimal > place), but the error is low enough that it does not matter here. > > v2: sort headers, remove blank spaces, fixed codestyle (Kamil) > Reviewed-by: Peter Senna Tschudin <peter.senna@linux.intel.com> > Signed-off-by: Ryszard Knop <ryszard.knop@intel.com> > Signed-off-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> > --- > lib/igt_audio.c | 74 +++++++++++++++++++++++++++++++++++++++---------- > 1 file changed, 60 insertions(+), 14 deletions(-) > > diff --git a/lib/igt_audio.c b/lib/igt_audio.c > index e0b1bafe1..193f9aa05 100644 > --- a/lib/igt_audio.c > +++ b/lib/igt_audio.c > @@ -28,12 +28,14 @@ > > #include <errno.h> > #include <fcntl.h> > -#include <gsl/gsl_fft_real.h> > +#include <limits.h> > #include <math.h> > #include <unistd.h> > > #include "igt_audio.h" > +#include "igt_aux.h" > #include "igt_core.h" > +#include "meow_fft/meow_fft.h" > > #define FREQS_MAX 64 > #define CHANNELS_MAX 8 > @@ -322,6 +324,53 @@ static double hann_window(double v, size_t i, size_t N) > return v * 0.5 * (1 - cos(2.0 * M_PI * (double) i / (double) N)); > } > > +/** > + * run_fft: > + * @array: The signal to run FFT on > + * @length: The signal buffer length (must be a power of 2) > + * > + * Run the Fast Fourier Transform on the provided signal, whose > + * length must be a power of 2. The return value points to an > + * array of N/2 structs with real (.r) and imaginary (.j) parts. > + * > + * For the 0-th FFT element, only the real part is valid - its > + * imaginary part is always 0 and is not saved anywhere. > + * > + * For the (N/2)-th element, again, only the real part is valid. > + * The array does not have enough space to save it as a separate > + * element, so its real part is saved in the 0-th element's > + * imaginary part. > + */ > +static Meow_FFT_Complex *run_fft(double *array, size_t length) > +{ > + size_t workset_bytes; > + Meow_FFT_Complex *fft_data; > + struct Meow_FFT_Workset_Real *fft_workset; > + > + igt_assert(length >= 2 && is_power_of_two(length)); > + > + // Get size for a N point fft working on non-complex (real) data. > + workset_bytes = meow_fft_generate_workset_real(length, NULL); > + if (workset_bytes == 0) > + return NULL; > + > + fft_data = malloc(sizeof(Meow_FFT_Complex) * length); > + if (!fft_data) > + return NULL; > + > + fft_workset = (struct Meow_FFT_Workset_Real *)malloc(workset_bytes); > + if (!fft_workset) { > + free(fft_data); > + return NULL; > + } > + > + meow_fft_generate_workset_real(length, fft_workset); > + meow_fft_real(fft_workset, array, fft_data); > + free(fft_workset); > + > + return fft_data; > +} > + > /** > * Checks that frequencies specified in signal, and only those, are included > * in the input data. > @@ -333,11 +382,12 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, > int channel, const double *samples, size_t samples_len) > { > double *data; > + Meow_FFT_Complex *fft_data; > size_t data_len = samples_len; > size_t bin_power_len = data_len / 2 + 1; > double bin_power[bin_power_len]; > bool detected[FREQS_MAX]; > - int ret, freq_accuracy, freq, local_max_freq; > + int freq_accuracy, freq, local_max_freq; > double max, local_max, threshold; > size_t i, j; > bool above, success; > @@ -360,27 +410,22 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, > freq_accuracy = sampling_rate / data_len; > igt_debug("Allowed freq. error: %d Hz\n", freq_accuracy); > > - ret = gsl_fft_real_radix2_transform(data, 1, data_len); > - if (ret != 0) { > + fft_data = run_fft(data, data_len); > + if (!fft_data) { > free(data); > igt_assert(0); > } > > - /* Compute the power received by every bin of the FFT. > - * > - * For i < data_len / 2, the real part of the i-th term is stored at > - * data[i] and its imaginary part is stored at data[data_len - i]. > - * i = 0 and i = data_len / 2 are special cases, they are purely real > - * so their imaginary part isn't stored. > - * > + /* Compute the power received by every bin of the FFT. The run_fft > + * function docs explain the special cases outside of the for loop. > * The power is encoded as the magnitude of the complex number and the > * phase is encoded as its angle. > */ > - bin_power[0] = data[0]; > + bin_power[0] = fft_data[0].r; > for (i = 1; i < bin_power_len - 1; i++) { > - bin_power[i] = hypot(data[i], data[data_len - i]); > + bin_power[i] = hypot(fft_data[i].r, fft_data[i].j); > } > - bin_power[bin_power_len - 1] = data[data_len / 2]; > + bin_power[bin_power_len - 1] = fft_data[0].j; > > /* Normalize the power */ > for (i = 0; i < bin_power_len; i++) > @@ -487,6 +532,7 @@ bool audio_signal_detect(struct audio_signal *signal, int sampling_rate, > } > } > > + free(fft_data); > free(data); > > return success; Intel Semiconductor AG Registered No. 020.30.913.786-7 Registered Office: Dufourstrasse 101 , 8008 Zurich, Switzerland ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ Fi.CI.BAT: success for Switch the FFT library to meow_fft 2024-09-13 10:44 [PATCH i-g-t 0/3] Switch the FFT library to meow_fft Kamil Konieczny ` (2 preceding siblings ...) 2024-09-13 10:44 ` [PATCH i-g-t 3/3] lib/igt_audio: Replace GSL FFT usage with meow_fft Kamil Konieczny @ 2024-09-13 14:01 ` Patchwork 2024-09-13 14:49 ` ✗ CI.xeBAT: failure " Patchwork ` (2 subsequent siblings) 6 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-09-13 14:01 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 15457 bytes --] == Series Details == Series: Switch the FFT library to meow_fft URL : https://patchwork.freedesktop.org/series/138642/ State : success == Summary == CI Bug Log - changes from IGT_8016 -> IGTPW_11742 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/index.html Participating hosts (39 -> 42) ------------------------------ Additional (4): bat-dg1-7 bat-arlh-3 fi-kbl-8809g bat-mtlp-6 Missing (1): fi-snb-2520m Known issues ------------ Here are the changes found in IGTPW_11742 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@debugfs_test@basic-hwmon: - bat-mtlp-6: NOTRUN -> [SKIP][1] ([i915#9318]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@debugfs_test@basic-hwmon.html * igt@fbdev@info: - bat-mtlp-6: NOTRUN -> [SKIP][2] ([i915#1849] / [i915#2582]) [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@fbdev@info.html * igt@fbdev@nullptr: - bat-arls-1: [PASS][3] -> [DMESG-WARN][4] ([i915#12102]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/bat-arls-1/igt@fbdev@nullptr.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-arls-1/igt@fbdev@nullptr.html * igt@fbdev@write: - bat-mtlp-6: NOTRUN -> [SKIP][5] ([i915#2582]) +3 other tests skip [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@fbdev@write.html * igt@gem_huc_copy@huc-copy: - fi-kbl-8809g: NOTRUN -> [SKIP][6] ([i915#2190]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html * igt@gem_lmem_swapping@parallel-random-engines: - fi-kbl-8809g: NOTRUN -> [SKIP][7] ([i915#4613]) +3 other tests skip [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/fi-kbl-8809g/igt@gem_lmem_swapping@parallel-random-engines.html * igt@gem_lmem_swapping@verify-random: - bat-mtlp-6: NOTRUN -> [SKIP][8] ([i915#4613]) +3 other tests skip [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@gem_lmem_swapping@verify-random.html * igt@gem_mmap@basic: - bat-dg1-7: NOTRUN -> [SKIP][9] ([i915#4083]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@gem_mmap@basic.html - bat-mtlp-6: NOTRUN -> [SKIP][10] ([i915#4083]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@gem_mmap@basic.html * igt@gem_tiled_blits@basic: - bat-dg1-7: NOTRUN -> [SKIP][11] ([i915#4077]) +2 other tests skip [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@gem_tiled_blits@basic.html - bat-mtlp-6: NOTRUN -> [SKIP][12] ([i915#4077]) +2 other tests skip [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@gem_tiled_blits@basic.html * igt@gem_tiled_pread_basic: - bat-dg1-7: NOTRUN -> [SKIP][13] ([i915#4079]) +1 other test skip [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@gem_tiled_pread_basic.html - bat-mtlp-6: NOTRUN -> [SKIP][14] ([i915#4079]) +1 other test skip [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@gem_tiled_pread_basic.html * igt@i915_pm_rps@basic-api: - bat-dg1-7: NOTRUN -> [SKIP][15] ([i915#11681] / [i915#6621]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@i915_pm_rps@basic-api.html - bat-mtlp-6: NOTRUN -> [SKIP][16] ([i915#11681] / [i915#6621]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@i915_pm_rps@basic-api.html * igt@kms_addfb_basic@addfb25-x-tiled-legacy: - bat-mtlp-6: NOTRUN -> [SKIP][17] ([i915#4212] / [i915#9792]) +8 other tests skip [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - bat-mtlp-6: NOTRUN -> [SKIP][18] ([i915#5190] / [i915#9792]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_addfb_basic@basic-y-tiled-legacy: - bat-dg1-7: NOTRUN -> [SKIP][19] ([i915#4215]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html * igt@kms_addfb_basic@bo-too-small-due-to-tiling: - bat-dg1-7: NOTRUN -> [SKIP][20] ([i915#4212]) +7 other tests skip [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - bat-dg1-7: NOTRUN -> [SKIP][21] ([i915#4103] / [i915#4213]) +1 other test skip [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy: - bat-mtlp-6: NOTRUN -> [SKIP][22] ([i915#9792]) +17 other tests skip [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html * igt@kms_dsc@dsc-basic: - fi-kbl-8809g: NOTRUN -> [SKIP][23] +30 other tests skip [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/fi-kbl-8809g/igt@kms_dsc@dsc-basic.html - bat-dg1-7: NOTRUN -> [SKIP][24] ([i915#3555] / [i915#3840]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_dsc@dsc-basic.html * igt@kms_flip@basic-flip-vs-dpms: - bat-mtlp-6: NOTRUN -> [SKIP][25] ([i915#3637] / [i915#9792]) +3 other tests skip [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_flip@basic-flip-vs-dpms.html * igt@kms_force_connector_basic@force-load-detect: - bat-dg1-7: NOTRUN -> [SKIP][26] [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_force_connector_basic@force-load-detect.html * igt@kms_force_connector_basic@prune-stale-modes: - bat-mtlp-6: NOTRUN -> [SKIP][27] ([i915#5274] / [i915#9792]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_force_connector_basic@prune-stale-modes.html * igt@kms_frontbuffer_tracking@basic: - bat-mtlp-6: NOTRUN -> [SKIP][28] ([i915#4342] / [i915#5354] / [i915#9792]) [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_frontbuffer_tracking@basic.html * igt@kms_hdmi_inject@inject-audio: - bat-dg1-7: NOTRUN -> [SKIP][29] ([i915#433]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_hdmi_inject@inject-audio.html * igt@kms_pipe_crc_basic@nonblocking-crc: - bat-arls-5: [PASS][30] -> [INCOMPLETE][31] ([i915#11320]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/bat-arls-5/igt@kms_pipe_crc_basic@nonblocking-crc.html [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-arls-5/igt@kms_pipe_crc_basic@nonblocking-crc.html * igt@kms_pm_backlight@basic-brightness: - bat-dg1-7: NOTRUN -> [SKIP][32] ([i915#5354]) [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_pm_backlight@basic-brightness.html - bat-mtlp-6: NOTRUN -> [SKIP][33] ([i915#5354] / [i915#9792]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_pm_backlight@basic-brightness.html * igt@kms_psr@psr-cursor-plane-move: - bat-mtlp-6: NOTRUN -> [SKIP][34] ([i915#1072] / [i915#9673] / [i915#9732] / [i915#9792]) +3 other tests skip [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_psr@psr-cursor-plane-move.html * igt@kms_psr@psr-primary-page-flip: - bat-dg1-7: NOTRUN -> [SKIP][35] ([i915#1072] / [i915#9732]) +3 other tests skip [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_psr@psr-primary-page-flip.html * igt@kms_setmode@basic-clone-single-crtc: - bat-mtlp-6: NOTRUN -> [SKIP][36] ([i915#3555] / [i915#8809] / [i915#9792]) [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@kms_setmode@basic-clone-single-crtc.html - bat-dg1-7: NOTRUN -> [SKIP][37] ([i915#3555]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@kms_setmode@basic-clone-single-crtc.html * igt@prime_vgem@basic-fence-flip: - bat-mtlp-6: NOTRUN -> [SKIP][38] ([i915#3708] / [i915#9792]) [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@prime_vgem@basic-fence-flip.html * igt@prime_vgem@basic-fence-mmap: - bat-dg1-7: NOTRUN -> [SKIP][39] ([i915#3708] / [i915#4077]) +1 other test skip [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@prime_vgem@basic-fence-mmap.html - bat-mtlp-6: NOTRUN -> [SKIP][40] ([i915#3708] / [i915#4077]) +1 other test skip [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@prime_vgem@basic-fence-mmap.html * igt@prime_vgem@basic-fence-read: - bat-dg1-7: NOTRUN -> [SKIP][41] ([i915#3708]) +3 other tests skip [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-dg1-7/igt@prime_vgem@basic-fence-read.html * igt@prime_vgem@basic-read: - bat-mtlp-6: NOTRUN -> [SKIP][42] ([i915#3708]) +1 other test skip [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@prime_vgem@basic-read.html * igt@prime_vgem@basic-write: - bat-mtlp-6: NOTRUN -> [SKIP][43] ([i915#10216] / [i915#3708]) [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-mtlp-6/igt@prime_vgem@basic-write.html #### Possible fixes #### * igt@fbdev@read: - bat-arls-1: [DMESG-WARN][44] ([i915#12102]) -> [PASS][45] [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/bat-arls-1/igt@fbdev@read.html [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-arls-1/igt@fbdev@read.html #### Warnings #### * igt@core_hotunplug@unbind-rebind: - bat-arls-5: [DMESG-WARN][46] ([i915#11637] / [i915#1982]) -> [DMESG-WARN][47] ([i915#11637]) [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/bat-arls-5/igt@core_hotunplug@unbind-rebind.html [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-arls-5/igt@core_hotunplug@unbind-rebind.html * igt@i915_module_load@load: - bat-apl-1: [DMESG-WARN][48] ([i915#180] / [i915#1982]) -> [DMESG-WARN][49] ([i915#180]) [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/bat-apl-1/igt@i915_module_load@load.html [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-apl-1/igt@i915_module_load@load.html * igt@i915_module_load@reload: - bat-arls-5: [DMESG-WARN][50] ([i915#11637]) -> [DMESG-WARN][51] ([i915#11637] / [i915#1982]) [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/bat-arls-5/igt@i915_module_load@reload.html [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/bat-arls-5/igt@i915_module_load@reload.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [i915#10196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10196 [i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216 [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072 [i915#11320]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11320 [i915#11343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11343 [i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346 [i915#11637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11637 [i915#11666]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11666 [i915#11671]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11671 [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681 [i915#11723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11723 [i915#11724]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11724 [i915#11725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11725 [i915#11726]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11726 [i915#12102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12102 [i915#12203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12203 [i915#180]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/180 [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849 [i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982 [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190 [i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582 [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555 [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637 [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708 [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840 [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077 [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083 [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103 [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212 [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213 [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215 [i915#433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/433 [i915#4342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4342 [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613 [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190 [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274 [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354 [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621 [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809 [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318 [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673 [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732 [i915#9792]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9792 [i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_8016 -> IGTPW_11742 CI-20190529: 20190529 CI_DRM_15413: ceffbbae8df33f194ae06e0174dfb0a7d726b2f7 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_11742: 57d5e1175de54513890bf9465f99844405b367bb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_8016: 786f0469afc0665a02dd82bf17544868188fbdeb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/index.html [-- Attachment #2: Type: text/html, Size: 18912 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✗ CI.xeBAT: failure for Switch the FFT library to meow_fft 2024-09-13 10:44 [PATCH i-g-t 0/3] Switch the FFT library to meow_fft Kamil Konieczny ` (3 preceding siblings ...) 2024-09-13 14:01 ` ✓ Fi.CI.BAT: success for Switch the FFT library to meow_fft Patchwork @ 2024-09-13 14:49 ` Patchwork 2024-09-14 4:53 ` ✗ CI.xeFULL: " Patchwork 2024-09-14 22:25 ` ✗ Fi.CI.IGT: " Patchwork 6 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-09-13 14:49 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 1461 bytes --] == Series Details == Series: Switch the FFT library to meow_fft URL : https://patchwork.freedesktop.org/series/138642/ State : failure == Summary == CI Bug Log - changes from XEIGT_8016_BAT -> XEIGTPW_11742_BAT ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with XEIGTPW_11742_BAT absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in XEIGTPW_11742_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (9 -> 1) ------------------------------ ERROR: It appears as if the changes made in XEIGTPW_11742_BAT prevented too many machines from booting. Missing (8): bat-bmg-1 bat-lnl-2 bat-lnl-1 bat-pvc-2 bat-dg2-oem2 bat-atsm-2 bat-bmg-2 bat-adlp-7 Changes ------- No changes found Build changes ------------- * IGT: IGT_8016 -> IGTPW_11742 IGTPW_11742: 57d5e1175de54513890bf9465f99844405b367bb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_8016: 786f0469afc0665a02dd82bf17544868188fbdeb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git xe-1945-ceffbbae8df33f194ae06e0174dfb0a7d726b2f7: ceffbbae8df33f194ae06e0174dfb0a7d726b2f7 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/index.html [-- Attachment #2: Type: text/html, Size: 2030 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✗ CI.xeFULL: failure for Switch the FFT library to meow_fft 2024-09-13 10:44 [PATCH i-g-t 0/3] Switch the FFT library to meow_fft Kamil Konieczny ` (4 preceding siblings ...) 2024-09-13 14:49 ` ✗ CI.xeBAT: failure " Patchwork @ 2024-09-14 4:53 ` Patchwork 2024-09-14 22:25 ` ✗ Fi.CI.IGT: " Patchwork 6 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-09-14 4:53 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 50708 bytes --] == Series Details == Series: Switch the FFT library to meow_fft URL : https://patchwork.freedesktop.org/series/138642/ State : failure == Summary == CI Bug Log - changes from XEIGT_8016_full -> XEIGTPW_11742_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with XEIGTPW_11742_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in XEIGTPW_11742_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (4 -> 4) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in XEIGTPW_11742_full: ### IGT changes ### #### Possible regressions #### * igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-b: - shard-lnl: NOTRUN -> [SKIP][1] +3 other tests skip [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-4/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-b.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * igt@xe_wedged@wedged-at-any-timeout: - {shard-bmg}: [PASS][2] -> [FAIL][3] [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-bmg-1/igt@xe_wedged@wedged-at-any-timeout.html [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-bmg-2/igt@xe_wedged@wedged-at-any-timeout.html Known issues ------------ Here are the changes found in XEIGTPW_11742_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-6: - shard-dg2-set2: NOTRUN -> [FAIL][4] ([Intel XE#1426]) +1 other test fail [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-6.html * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1: - shard-lnl: [PASS][5] -> [FAIL][6] ([Intel XE#1426]) +1 other test fail [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-1/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-2/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html * igt@kms_big_fb@4-tiled-64bpp-rotate-0: - shard-lnl: [PASS][7] -> [FAIL][8] ([Intel XE#1659]) +1 other test fail [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-7/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-7/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html * igt@kms_big_fb@linear-16bpp-rotate-270: - shard-dg2-set2: NOTRUN -> [SKIP][9] ([Intel XE#1201] / [Intel XE#316]) +1 other test skip [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@kms_big_fb@linear-16bpp-rotate-270.html * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip: - shard-lnl: NOTRUN -> [SKIP][10] ([Intel XE#1124]) +1 other test skip [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-5/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip.html * igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p: - shard-dg2-set2: NOTRUN -> [SKIP][11] ([Intel XE#1201] / [Intel XE#2191]) [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-466/igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p.html * igt@kms_ccs@bad-aux-stride-yf-tiled-ccs: - shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1399]) [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-7/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs.html * igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs@pipe-c-edp-1: - shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#2669]) +7 other tests skip [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-7/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs@pipe-c-edp-1.html * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-a-dp-4: - shard-dg2-set2: NOTRUN -> [SKIP][14] ([Intel XE#1201] / [Intel XE#787]) +6 other tests skip [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-a-dp-4.html * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4: - shard-dg2-set2: NOTRUN -> [SKIP][15] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +1 other test skip [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4.html * igt@kms_cdclk@mode-transition-all-outputs: - shard-dg2-set2: NOTRUN -> [SKIP][16] ([Intel XE#314]) [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_cdclk@mode-transition-all-outputs.html * igt@kms_chamelium_color@ctm-negative: - shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#306]) [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-5/igt@kms_chamelium_color@ctm-negative.html * igt@kms_chamelium_hpd@dp-hpd-storm: - shard-dg2-set2: NOTRUN -> [SKIP][18] ([Intel XE#373]) [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_chamelium_hpd@dp-hpd-storm.html * igt@kms_chamelium_hpd@hdmi-hpd-after-suspend: - shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#373]) [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-1/igt@kms_chamelium_hpd@hdmi-hpd-after-suspend.html * igt@kms_chamelium_hpd@vga-hpd-without-ddc: - shard-dg2-set2: NOTRUN -> [SKIP][20] ([Intel XE#1201] / [Intel XE#373]) +1 other test skip [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-463/igt@kms_chamelium_hpd@vga-hpd-without-ddc.html * igt@kms_content_protection@type1: - shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#599]) [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-4/igt@kms_content_protection@type1.html * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy: - shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#309]) [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-4/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html * igt@kms_dirtyfb@drrs-dirtyfb-ioctl: - shard-lnl: NOTRUN -> [SKIP][23] ([Intel XE#1508] / [Intel XE#599]) [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-3/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html * igt@kms_feature_discovery@display-3x: - shard-dg2-set2: NOTRUN -> [SKIP][24] ([Intel XE#1201] / [Intel XE#703]) [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-466/igt@kms_feature_discovery@display-3x.html * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible: - shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#1421]) [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-4/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html * igt@kms_flip@flip-vs-expired-vblank@b-edp1: - shard-lnl: [PASS][26] -> [FAIL][27] ([Intel XE#301]) +1 other test fail [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling: - shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#1401] / [Intel XE#1745]) [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-default-mode: - shard-lnl: NOTRUN -> [SKIP][29] ([Intel XE#1401]) [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-default-mode.html * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen: - shard-dg2-set2: NOTRUN -> [SKIP][30] ([Intel XE#1201] / [Intel XE#651]) +6 other tests skip [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt: - shard-lnl: NOTRUN -> [SKIP][31] ([Intel XE#656]) +5 other tests skip [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-blt: - shard-lnl: NOTRUN -> [SKIP][32] ([Intel XE#651]) [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-blt.html * igt@kms_frontbuffer_tracking@psr-slowdraw: - shard-dg2-set2: NOTRUN -> [SKIP][33] ([Intel XE#1201] / [Intel XE#653]) +5 other tests skip [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-slowdraw.html * igt@kms_plane@plane-position-hole@pipe-a-plane-4: - shard-lnl: [PASS][34] -> [DMESG-FAIL][35] ([Intel XE#324]) +1 other test dmesg-fail [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-1/igt@kms_plane@plane-position-hole@pipe-a-plane-4.html [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-2/igt@kms_plane@plane-position-hole@pipe-a-plane-4.html * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6: - shard-dg2-set2: [PASS][36] -> [FAIL][37] ([Intel XE#361]) [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-463/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html * igt@kms_plane_scaling@planes-upscale-20x20@pipe-a: - shard-dg2-set2: [PASS][38] -> [INCOMPLETE][39] ([Intel XE#1195]) +2 other tests incomplete [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-436/igt@kms_plane_scaling@planes-upscale-20x20@pipe-a.html [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-433/igt@kms_plane_scaling@planes-upscale-20x20@pipe-a.html * igt@kms_pm_dc@dc5-psr: - shard-lnl: [PASS][40] -> [FAIL][41] ([Intel XE#718]) [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-5/igt@kms_pm_dc@dc5-psr.html [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-5/igt@kms_pm_dc@dc5-psr.html * igt@kms_pm_dc@dc6-psr: - shard-lnl: [PASS][42] -> [FAIL][43] ([Intel XE#1430]) [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-3/igt@kms_pm_dc@dc6-psr.html [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-2/igt@kms_pm_dc@dc6-psr.html * igt@kms_psr@fbc-pr-no-drrs: - shard-dg2-set2: NOTRUN -> [SKIP][44] ([Intel XE#929]) [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_psr@fbc-pr-no-drrs.html * igt@kms_psr@psr-primary-page-flip: - shard-dg2-set2: NOTRUN -> [SKIP][45] ([Intel XE#1201] / [Intel XE#929]) +1 other test skip [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-463/igt@kms_psr@psr-primary-page-flip.html * igt@kms_scaling_modes@scaling-mode-full: - shard-dg2-set2: NOTRUN -> [SKIP][46] ([Intel XE#1201] / [Intel XE#455]) +1 other test skip [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@kms_scaling_modes@scaling-mode-full.html * igt@xe_copy_basic@mem-copy-linear-0xfffe: - shard-dg2-set2: NOTRUN -> [SKIP][47] ([Intel XE#1123] / [Intel XE#1201]) [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-433/igt@xe_copy_basic@mem-copy-linear-0xfffe.html * igt@xe_evict@evict-large-multi-vm-cm: - shard-dg2-set2: NOTRUN -> [FAIL][48] ([Intel XE#1600]) [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-463/igt@xe_evict@evict-large-multi-vm-cm.html * igt@xe_evict@evict-small-multi-vm: - shard-lnl: NOTRUN -> [SKIP][49] ([Intel XE#688]) +1 other test skip [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-3/igt@xe_evict@evict-small-multi-vm.html * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate-race-prefetch: - shard-dg2-set2: NOTRUN -> [SKIP][50] ([Intel XE#288]) [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate-race-prefetch.html * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch: - shard-dg2-set2: NOTRUN -> [SKIP][51] ([Intel XE#1201] / [Intel XE#288]) +2 other tests skip [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch.html * igt@xe_live_ktest@xe_migrate: - shard-lnl: [PASS][52] -> [SKIP][53] ([Intel XE#1192]) [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-7/igt@xe_live_ktest@xe_migrate.html [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-1/igt@xe_live_ktest@xe_migrate.html * igt@xe_module_load@many-reload: - shard-dg2-set2: [PASS][54] -> [FAIL][55] ([Intel XE#2136]) [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-463/igt@xe_module_load@many-reload.html [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-463/igt@xe_module_load@many-reload.html * igt@xe_query@multigpu-query-mem-usage: - shard-lnl: NOTRUN -> [SKIP][56] ([Intel XE#944]) [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-7/igt@xe_query@multigpu-query-mem-usage.html #### Possible fixes #### * igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1: - shard-lnl: [FAIL][57] ([Intel XE#886]) -> [PASS][58] +1 other test pass [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-4/igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1.html [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-8/igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1.html * igt@kms_pipe_crc_basic@suspend-read-crc: - shard-dg2-set2: [DMESG-WARN][59] ([Intel XE#1162]) -> [PASS][60] [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-466/igt@kms_pipe_crc_basic@suspend-read-crc.html [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-433/igt@kms_pipe_crc_basic@suspend-read-crc.html * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-4: - shard-dg2-set2: [DMESG-WARN][61] ([Intel XE#2019]) -> [PASS][62] [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-466/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-4.html [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-433/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-4.html * igt@kms_plane@pixel-format-source-clamping@pipe-b-plane-0: - {shard-bmg}: [DMESG-WARN][63] ([Intel XE#877]) -> [PASS][64] +5 other tests pass [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-bmg-7/igt@kms_plane@pixel-format-source-clamping@pipe-b-plane-0.html [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-bmg-4/igt@kms_plane@pixel-format-source-clamping@pipe-b-plane-0.html * igt@kms_pm_rpm@legacy-planes@plane-50: - {shard-bmg}: [DMESG-WARN][65] -> [PASS][66] +1 other test pass [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-bmg-3/igt@kms_pm_rpm@legacy-planes@plane-50.html [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-bmg-3/igt@kms_pm_rpm@legacy-planes@plane-50.html * igt@kms_psr@psr2-dpms: - shard-lnl: [FAIL][67] ([Intel XE#1649]) -> [PASS][68] +1 other test pass [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-7/igt@kms_psr@psr2-dpms.html [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-7/igt@kms_psr@psr2-dpms.html * igt@kms_universal_plane@cursor-fb-leak: - {shard-bmg}: [FAIL][69] ([Intel XE#899]) -> [PASS][70] +1 other test pass [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-bmg-7/igt@kms_universal_plane@cursor-fb-leak.html [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-bmg-4/igt@kms_universal_plane@cursor-fb-leak.html * igt@xe_evict@evict-mixed-many-threads-small: - shard-dg2-set2: [TIMEOUT][71] ([Intel XE#1473]) -> [PASS][72] [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@xe_evict@evict-mixed-many-threads-small.html [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@xe_evict@evict-mixed-many-threads-small.html * igt@xe_gt_freq@freq_reset_multiple: - {shard-bmg}: [INCOMPLETE][73] -> [PASS][74] +1 other test pass [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-bmg-5/igt@xe_gt_freq@freq_reset_multiple.html [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-bmg-3/igt@xe_gt_freq@freq_reset_multiple.html * igt@xe_oa@mmio-triggered-reports: - {shard-bmg}: [FAIL][75] ([Intel XE#2249]) -> [PASS][76] [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-bmg-4/igt@xe_oa@mmio-triggered-reports.html [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-bmg-3/igt@xe_oa@mmio-triggered-reports.html - shard-lnl: [FAIL][77] ([Intel XE#2249]) -> [PASS][78] +1 other test pass [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-5/igt@xe_oa@mmio-triggered-reports.html [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-4/igt@xe_oa@mmio-triggered-reports.html * igt@xe_pm@s3-vm-bind-unbind-all: - shard-dg2-set2: [DMESG-WARN][79] ([Intel XE#1162] / [Intel XE#1941] / [Intel XE#569]) -> [PASS][80] [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-433/igt@xe_pm@s3-vm-bind-unbind-all.html [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@xe_pm@s3-vm-bind-unbind-all.html * igt@xe_pm@s4-d3hot-basic-exec: - shard-lnl: [ABORT][81] ([Intel XE#1358] / [Intel XE#1607]) -> [PASS][82] [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-lnl-2/igt@xe_pm@s4-d3hot-basic-exec.html [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-lnl-5/igt@xe_pm@s4-d3hot-basic-exec.html #### Warnings #### * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs: - shard-dg2-set2: [SKIP][83] ([Intel XE#1201] / [Intel XE#801]) -> [SKIP][84] ([Intel XE#801]) +23 other tests skip [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-466/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs.html [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs.html * igt@kms_async_flips@invalid-async-flip: - shard-dg2-set2: [SKIP][85] ([Intel XE#1201] / [Intel XE#873]) -> [SKIP][86] ([Intel XE#873]) [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@kms_async_flips@invalid-async-flip.html [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_async_flips@invalid-async-flip.html * igt@kms_big_fb@x-tiled-8bpp-rotate-270: - shard-dg2-set2: [SKIP][87] ([Intel XE#316]) -> [SKIP][88] ([Intel XE#1201] / [Intel XE#316]) [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0: - shard-dg2-set2: [SKIP][89] ([Intel XE#1124]) -> [SKIP][90] ([Intel XE#1124] / [Intel XE#1201]) +5 other tests skip [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-435/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0: - shard-dg2-set2: [SKIP][91] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][92] ([Intel XE#1124]) +6 other tests skip [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0.html [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0.html * igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p: - shard-dg2-set2: [SKIP][93] ([Intel XE#1201] / [Intel XE#367]) -> [SKIP][94] ([Intel XE#367]) +4 other tests skip [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-435/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html * igt@kms_bw@linear-tiling-1-displays-1920x1080p: - shard-dg2-set2: [SKIP][95] ([Intel XE#367]) -> [SKIP][96] ([Intel XE#1201] / [Intel XE#367]) +2 other tests skip [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-433/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6: - shard-dg2-set2: [SKIP][97] ([Intel XE#1201] / [Intel XE#787]) -> [SKIP][98] ([Intel XE#787]) +55 other tests skip [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-435/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6.html [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6.html * igt@kms_ccs@bad-pixel-format-yf-tiled-ccs: - shard-dg2-set2: [SKIP][99] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][100] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +11 other tests skip [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-466/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html * igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs: - shard-dg2-set2: [SKIP][101] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][102] ([Intel XE#455] / [Intel XE#787]) +15 other tests skip [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-436/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs.html [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs.html * igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs: - shard-dg2-set2: [SKIP][103] ([Intel XE#1201] / [Intel XE#1252]) -> [SKIP][104] ([Intel XE#1252]) [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-435/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs: - shard-dg2-set2: [SKIP][105] ([Intel XE#1252]) -> [SKIP][106] ([Intel XE#1201] / [Intel XE#1252]) +1 other test skip [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-6: - shard-dg2-set2: [SKIP][107] ([Intel XE#787]) -> [SKIP][108] ([Intel XE#1201] / [Intel XE#787]) +41 other tests skip [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-6.html [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-463/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-6.html * igt@kms_chamelium_audio@dp-audio: - shard-dg2-set2: [SKIP][109] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][110] ([Intel XE#373]) +6 other tests skip [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-435/igt@kms_chamelium_audio@dp-audio.html [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_chamelium_audio@dp-audio.html * igt@kms_chamelium_color@ctm-0-75: - shard-dg2-set2: [SKIP][111] ([Intel XE#306]) -> [SKIP][112] ([Intel XE#1201] / [Intel XE#306]) [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_chamelium_color@ctm-0-75.html [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@kms_chamelium_color@ctm-0-75.html * igt@kms_chamelium_color@ctm-blue-to-red: - shard-dg2-set2: [SKIP][113] ([Intel XE#1201] / [Intel XE#306]) -> [SKIP][114] ([Intel XE#306]) [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-436/igt@kms_chamelium_color@ctm-blue-to-red.html [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_chamelium_color@ctm-blue-to-red.html * igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k: - shard-dg2-set2: [SKIP][115] ([Intel XE#373]) -> [SKIP][116] ([Intel XE#1201] / [Intel XE#373]) +3 other tests skip [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k.html [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k.html * igt@kms_content_protection@legacy: - shard-dg2-set2: [INCOMPLETE][117] ([Intel XE#2715]) -> [FAIL][118] ([Intel XE#1178]) +1 other test fail [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_content_protection@legacy.html [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-466/igt@kms_content_protection@legacy.html * igt@kms_cursor_crc@cursor-random-512x170: - shard-dg2-set2: [SKIP][119] ([Intel XE#308]) -> [SKIP][120] ([Intel XE#1201] / [Intel XE#308]) [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_cursor_crc@cursor-random-512x170.html [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-435/igt@kms_cursor_crc@cursor-random-512x170.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions: - shard-dg2-set2: [SKIP][121] ([Intel XE#1201] / [Intel XE#323]) -> [SKIP][122] ([Intel XE#323]) +1 other test skip [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-466/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html * igt@kms_fbcon_fbt@psr-suspend: - shard-dg2-set2: [SKIP][123] ([Intel XE#1201] / [Intel XE#776]) -> [SKIP][124] ([Intel XE#776]) [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-466/igt@kms_fbcon_fbt@psr-suspend.html [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_fbcon_fbt@psr-suspend.html * igt@kms_feature_discovery@chamelium: - shard-dg2-set2: [SKIP][125] ([Intel XE#1201] / [Intel XE#701]) -> [SKIP][126] ([Intel XE#701]) [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-463/igt@kms_feature_discovery@chamelium.html [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_feature_discovery@chamelium.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling: - shard-dg2-set2: [SKIP][127] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][128] ([Intel XE#455]) +8 other tests skip [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html * igt@kms_force_connector_basic@prune-stale-modes: - shard-dg2-set2: [SKIP][129] ([Intel XE#1201] / [i915#5274]) -> [SKIP][130] ([i915#5274]) [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-463/igt@kms_force_connector_basic@prune-stale-modes.html [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_force_connector_basic@prune-stale-modes.html * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff: - shard-dg2-set2: [SKIP][131] ([Intel XE#651]) -> [SKIP][132] ([Intel XE#1201] / [Intel XE#651]) +15 other tests skip [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html * igt@kms_frontbuffer_tracking@fbc-tiling-y: - shard-dg2-set2: [SKIP][133] ([Intel XE#1201] / [Intel XE#658]) -> [SKIP][134] ([Intel XE#658]) [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-435/igt@kms_frontbuffer_tracking@fbc-tiling-y.html [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_frontbuffer_tracking@fbc-tiling-y.html * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render: - shard-dg2-set2: [SKIP][135] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][136] ([Intel XE#651]) +19 other tests skip [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html * igt@kms_frontbuffer_tracking@plane-fbc-rte: - shard-dg2-set2: [SKIP][137] ([Intel XE#1158] / [Intel XE#1201]) -> [SKIP][138] ([Intel XE#1158]) [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@kms_frontbuffer_tracking@plane-fbc-rte.html [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_frontbuffer_tracking@plane-fbc-rte.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc: - shard-dg2-set2: [SKIP][139] ([Intel XE#653]) -> [SKIP][140] ([Intel XE#1201] / [Intel XE#653]) +12 other tests skip [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc.html [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-463/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt: - shard-dg2-set2: [SKIP][141] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][142] ([Intel XE#653]) +18 other tests skip [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-436/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt.html [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt.html * igt@kms_multipipe_modeset@basic-max-pipe-crc-check: - shard-dg2-set2: [SKIP][143] ([Intel XE#356]) -> [SKIP][144] ([Intel XE#1201] / [Intel XE#356]) [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b: - shard-dg2-set2: [SKIP][145] -> [SKIP][146] ([Intel XE#1201]) +2 other tests skip [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b.html [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-463/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b.html * igt@kms_pm_backlight@fade: - shard-dg2-set2: [SKIP][147] ([Intel XE#870]) -> [SKIP][148] ([Intel XE#1201] / [Intel XE#870]) [147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_pm_backlight@fade.html [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-433/igt@kms_pm_backlight@fade.html * igt@kms_pm_dc@deep-pkgc: - shard-dg2-set2: [SKIP][149] ([Intel XE#908]) -> [SKIP][150] ([Intel XE#1201] / [Intel XE#908]) [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_pm_dc@deep-pkgc.html [150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@kms_pm_dc@deep-pkgc.html * igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area: - shard-dg2-set2: [SKIP][151] ([Intel XE#1201] / [Intel XE#1489]) -> [SKIP][152] ([Intel XE#1489]) +1 other test skip [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-433/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html [152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb: - shard-dg2-set2: [SKIP][153] ([Intel XE#1489]) -> [SKIP][154] ([Intel XE#1201] / [Intel XE#1489]) [153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html * igt@kms_psr2_su@frontbuffer-xrgb8888: - shard-dg2-set2: [SKIP][155] ([Intel XE#1122]) -> [SKIP][156] ([Intel XE#1122] / [Intel XE#1201]) [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_psr2_su@frontbuffer-xrgb8888.html [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@kms_psr2_su@frontbuffer-xrgb8888.html * igt@kms_psr@pr-sprite-blt: - shard-dg2-set2: [SKIP][157] ([Intel XE#929]) -> [SKIP][158] ([Intel XE#1201] / [Intel XE#929]) +6 other tests skip [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_psr@pr-sprite-blt.html [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-435/igt@kms_psr@pr-sprite-blt.html * igt@kms_psr@psr2-cursor-plane-onoff: - shard-dg2-set2: [SKIP][159] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][160] ([Intel XE#929]) +7 other tests skip [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-435/igt@kms_psr@psr2-cursor-plane-onoff.html [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_psr@psr2-cursor-plane-onoff.html * igt@kms_psr_stress_test@invalidate-primary-flip-overlay: - shard-dg2-set2: [SKIP][161] ([Intel XE#1149] / [Intel XE#1201]) -> [SKIP][162] ([Intel XE#1149]) [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-436/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html * igt@kms_rotation_crc@primary-rotation-90: - shard-dg2-set2: [SKIP][163] ([Intel XE#327]) -> [SKIP][164] ([Intel XE#1201] / [Intel XE#327]) [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_rotation_crc@primary-rotation-90.html [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-436/igt@kms_rotation_crc@primary-rotation-90.html * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0: - shard-dg2-set2: [SKIP][165] ([Intel XE#1127]) -> [SKIP][166] ([Intel XE#1127] / [Intel XE#1201]) [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-466/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270: - shard-dg2-set2: [SKIP][167] ([Intel XE#1201] / [Intel XE#327]) -> [SKIP][168] ([Intel XE#327]) [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-466/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html * igt@kms_tv_load_detect@load-detect: - shard-dg2-set2: [SKIP][169] ([Intel XE#330]) -> [SKIP][170] ([Intel XE#1201] / [Intel XE#330]) [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_tv_load_detect@load-detect.html [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-466/igt@kms_tv_load_detect@load-detect.html * igt@kms_vrr@flip-dpms: - shard-dg2-set2: [SKIP][171] ([Intel XE#455]) -> [SKIP][172] ([Intel XE#1201] / [Intel XE#455]) +8 other tests skip [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@kms_vrr@flip-dpms.html [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-433/igt@kms_vrr@flip-dpms.html * igt@sriov_basic@enable-vfs-autoprobe-off: - shard-dg2-set2: [SKIP][173] ([Intel XE#1091] / [Intel XE#1201]) -> [SKIP][174] ([Intel XE#1091]) [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-466/igt@sriov_basic@enable-vfs-autoprobe-off.html [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@sriov_basic@enable-vfs-autoprobe-off.html * igt@xe_copy_basic@mem-copy-linear-0x3fff: - shard-dg2-set2: [SKIP][175] ([Intel XE#1123]) -> [SKIP][176] ([Intel XE#1123] / [Intel XE#1201]) [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@xe_copy_basic@mem-copy-linear-0x3fff.html [176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-435/igt@xe_copy_basic@mem-copy-linear-0x3fff.html * igt@xe_copy_basic@mem-set-linear-0xfd: - shard-dg2-set2: [SKIP][177] ([Intel XE#1126] / [Intel XE#1201]) -> [SKIP][178] ([Intel XE#1126]) [177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@xe_copy_basic@mem-set-linear-0xfd.html [178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@xe_copy_basic@mem-set-linear-0xfd.html * igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-prefetch: - shard-dg2-set2: [SKIP][179] ([Intel XE#1201] / [Intel XE#288]) -> [SKIP][180] ([Intel XE#288]) +14 other tests skip [179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-prefetch.html [180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-prefetch.html * igt@xe_exec_fault_mode@once-bindexecqueue-imm: - shard-dg2-set2: [SKIP][181] ([Intel XE#288]) -> [SKIP][182] ([Intel XE#1201] / [Intel XE#288]) +13 other tests skip [181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@xe_exec_fault_mode@once-bindexecqueue-imm.html [182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-466/igt@xe_exec_fault_mode@once-bindexecqueue-imm.html * igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence: - shard-dg2-set2: [SKIP][183] ([Intel XE#2360]) -> [SKIP][184] ([Intel XE#1201] / [Intel XE#2360]) [183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html [184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-434/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html * igt@xe_mmap@small-bar: - shard-dg2-set2: [SKIP][185] ([Intel XE#1201] / [Intel XE#512]) -> [SKIP][186] ([Intel XE#512]) [185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-463/igt@xe_mmap@small-bar.html [186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@xe_mmap@small-bar.html * igt@xe_oa@closed-fd-and-unmapped-access: - shard-dg2-set2: [SKIP][187] ([Intel XE#1201] / [Intel XE#2541]) -> [SKIP][188] ([Intel XE#2541]) +2 other tests skip [187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-434/igt@xe_oa@closed-fd-and-unmapped-access.html [188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@xe_oa@closed-fd-and-unmapped-access.html * igt@xe_oa@oa-unit-concurrent-oa-buffer-read: - shard-dg2-set2: [SKIP][189] ([Intel XE#2541]) -> [SKIP][190] ([Intel XE#1201] / [Intel XE#2541]) +2 other tests skip [189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@xe_oa@oa-unit-concurrent-oa-buffer-read.html [190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-433/igt@xe_oa@oa-unit-concurrent-oa-buffer-read.html * igt@xe_pm@s2idle-d3cold-basic-exec: - shard-dg2-set2: [SKIP][191] ([Intel XE#1201] / [Intel XE#2284] / [Intel XE#366]) -> [SKIP][192] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip [191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-435/igt@xe_pm@s2idle-d3cold-basic-exec.html [192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-432/igt@xe_pm@s2idle-d3cold-basic-exec.html * igt@xe_query@multigpu-query-config: - shard-dg2-set2: [SKIP][193] ([Intel XE#944]) -> [SKIP][194] ([Intel XE#1201] / [Intel XE#944]) +1 other test skip [193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8016/shard-dg2-432/igt@xe_query@multigpu-query-config.html [194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/shard-dg2-435/igt@xe_query@multigpu-query-config.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091 [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122 [Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123 [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124 [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126 [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127 [Intel XE#1149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1149 [Intel XE#1158]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1158 [Intel XE#1162]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1162 [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178 [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192 [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195 [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201 [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252 [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358 [Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399 [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401 [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421 [Intel XE#1426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1426 [Intel XE#1430]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1430 [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439 [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473 [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489 [Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508 [Intel XE#1600]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1600 [Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607 [Intel XE#1649]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1649 [Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659 [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745 [Intel XE#1941]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1941 [Intel XE#2019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2019 [Intel XE#2026]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2026 [Intel XE#2136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2136 [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191 [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234 [Intel XE#2249]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2249 [Intel XE#2251]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2251 [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252 [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284 [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311 [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313 [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314 [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320 [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322 [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327 [Intel XE#2333]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2333 [Intel XE#2357]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2357 [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360 [Intel XE#2364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2364 [Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373 [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541 [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669 [Intel XE#2715]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2715 [Intel XE#2723]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2723 [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724 [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288 [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301 [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306 [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308 [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309 [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314 [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316 [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323 [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324 [Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327 [Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330 [Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356 [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361 [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366 [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367 [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373 [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455 [Intel XE#512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/512 [Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569 [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599 [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651 [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653 [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656 [Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658 [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688 [Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701 [Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703 [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718 [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776 [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787 [Intel XE#801]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/801 [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870 [Intel XE#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873 [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877 [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886 [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899 [Intel XE#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908 [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929 [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944 [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274 Build changes ------------- * IGT: IGT_8016 -> IGTPW_11742 IGTPW_11742: 57d5e1175de54513890bf9465f99844405b367bb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_8016: 786f0469afc0665a02dd82bf17544868188fbdeb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git xe-1945-ceffbbae8df33f194ae06e0174dfb0a7d726b2f7: ceffbbae8df33f194ae06e0174dfb0a7d726b2f7 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11742/index.html [-- Attachment #2: Type: text/html, Size: 63845 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✗ Fi.CI.IGT: failure for Switch the FFT library to meow_fft 2024-09-13 10:44 [PATCH i-g-t 0/3] Switch the FFT library to meow_fft Kamil Konieczny ` (5 preceding siblings ...) 2024-09-14 4:53 ` ✗ CI.xeFULL: " Patchwork @ 2024-09-14 22:25 ` Patchwork 6 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-09-14 22:25 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 100231 bytes --] == Series Details == Series: Switch the FFT library to meow_fft URL : https://patchwork.freedesktop.org/series/138642/ State : failure == Summary == CI Bug Log - changes from IGT_8016_full -> IGTPW_11742_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_11742_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_11742_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/index.html Participating hosts (10 -> 9) ------------------------------ Missing (1): shard-snb-0 Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_11742_full: ### IGT changes ### #### Possible regressions #### * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b: - shard-rkl: NOTRUN -> [SKIP][1] +3 other tests skip [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-3/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d: - shard-dg2: NOTRUN -> [SKIP][2] +4 other tests skip [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d.html - shard-dg1: NOTRUN -> [SKIP][3] +8 other tests skip [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d.html * igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-d: - shard-mtlp: NOTRUN -> [SKIP][4] +4 other tests skip [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-8/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-d.html * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-a: - shard-tglu: NOTRUN -> [SKIP][5] +13 other tests skip [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-a.html * igt@kms_psr@psr2-cursor-render: - shard-mtlp: [PASS][6] -> [FAIL][7] [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-mtlp-5/igt@kms_psr@psr2-cursor-render.html [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-1/igt@kms_psr@psr2-cursor-render.html * igt@perf@non-sampling-read-error: - shard-dg2: [PASS][8] -> [SKIP][9] [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@perf@non-sampling-read-error.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@perf@non-sampling-read-error.html New tests --------- New tests have been introduced between IGT_8016_full and IGTPW_11742_full: ### New IGT tests (2) ### * igt@kms_atomic_transition@plane-all-transition-fencing@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [3.81] s * igt@kms_atomic_transition@plane-all-transition-fencing@pipe-b-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [3.84] s Known issues ------------ Here are the changes found in IGTPW_11742_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@api_intel_allocator@gem-pool: - shard-dg2: [PASS][10] -> [SKIP][11] +10 other tests skip [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-2/igt@api_intel_allocator@gem-pool.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@api_intel_allocator@gem-pool.html * igt@api_intel_bb@blit-reloc-keep-cache: - shard-dg2: NOTRUN -> [SKIP][12] ([i915#8411]) [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@api_intel_bb@blit-reloc-keep-cache.html * igt@api_intel_bb@crc32: - shard-rkl: NOTRUN -> [SKIP][13] ([i915#6230]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-1/igt@api_intel_bb@crc32.html - shard-dg1: NOTRUN -> [SKIP][14] ([i915#6230]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@api_intel_bb@crc32.html * igt@api_intel_bb@object-reloc-keep-cache: - shard-rkl: NOTRUN -> [SKIP][15] ([i915#8411]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@api_intel_bb@object-reloc-keep-cache.html * igt@debugfs_test@basic-hwmon: - shard-tglu: NOTRUN -> [SKIP][16] ([i915#9318]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-3/igt@debugfs_test@basic-hwmon.html * igt@drm_fdinfo@isolation: - shard-dg2: NOTRUN -> [SKIP][17] ([i915#8414]) +8 other tests skip [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@drm_fdinfo@isolation.html * igt@drm_fdinfo@isolation@vecs0: - shard-dg1: NOTRUN -> [SKIP][18] ([i915#8414]) +6 other tests skip [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@drm_fdinfo@isolation@vecs0.html * igt@gem_bad_reloc@negative-reloc-lut: - shard-rkl: NOTRUN -> [SKIP][19] ([i915#3281]) +10 other tests skip [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-1/igt@gem_bad_reloc@negative-reloc-lut.html * igt@gem_ccs@block-multicopy-inplace: - shard-dg1: NOTRUN -> [SKIP][20] ([i915#3555] / [i915#9323]) [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@gem_ccs@block-multicopy-inplace.html * igt@gem_ccs@suspend-resume: - shard-dg1: NOTRUN -> [SKIP][21] ([i915#9323]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@gem_ccs@suspend-resume.html - shard-tglu: NOTRUN -> [SKIP][22] ([i915#9323]) +1 other test skip [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-7/igt@gem_ccs@suspend-resume.html - shard-mtlp: NOTRUN -> [SKIP][23] ([i915#9323]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-8/igt@gem_ccs@suspend-resume.html * igt@gem_close_race@multigpu-basic-threads: - shard-dg2: NOTRUN -> [SKIP][24] ([i915#7697]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-5/igt@gem_close_race@multigpu-basic-threads.html - shard-dg1: NOTRUN -> [SKIP][25] ([i915#7697]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@gem_close_race@multigpu-basic-threads.html * igt@gem_ctx_engines@invalid-engines: - shard-tglu: [PASS][26] -> [FAIL][27] ([i915#12027]) [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-tglu-7/igt@gem_ctx_engines@invalid-engines.html [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-5/igt@gem_ctx_engines@invalid-engines.html * igt@gem_ctx_persistence@hang: - shard-dg2: NOTRUN -> [SKIP][28] ([i915#8555]) [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@gem_ctx_persistence@hang.html * igt@gem_ctx_persistence@heartbeat-hostile: - shard-dg1: NOTRUN -> [SKIP][29] ([i915#8555]) +1 other test skip [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@gem_ctx_persistence@heartbeat-hostile.html * igt@gem_ctx_persistence@saturated-hostile-nopreempt: - shard-dg2: NOTRUN -> [SKIP][30] ([i915#5882]) +7 other tests skip [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@gem_ctx_persistence@saturated-hostile-nopreempt.html * igt@gem_ctx_persistence@smoketest: - shard-tglu: [PASS][31] -> [FAIL][32] ([i915#11837]) [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-tglu-8/igt@gem_ctx_persistence@smoketest.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@gem_ctx_persistence@smoketest.html * igt@gem_ctx_sseu@invalid-sseu: - shard-dg1: NOTRUN -> [SKIP][33] ([i915#280]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@gem_ctx_sseu@invalid-sseu.html * igt@gem_exec_balancer@bonded-sync: - shard-dg2: NOTRUN -> [SKIP][34] ([i915#4771]) [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_exec_balancer@bonded-sync.html - shard-dg1: NOTRUN -> [SKIP][35] ([i915#4771]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@gem_exec_balancer@bonded-sync.html * igt@gem_exec_balancer@invalid-bonds: - shard-dg1: NOTRUN -> [SKIP][36] ([i915#4036]) [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@gem_exec_balancer@invalid-bonds.html * igt@gem_exec_balancer@parallel-bb-first: - shard-rkl: NOTRUN -> [SKIP][37] ([i915#4525]) +1 other test skip [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-2/igt@gem_exec_balancer@parallel-bb-first.html * igt@gem_exec_fair@basic-flow: - shard-mtlp: NOTRUN -> [SKIP][38] ([i915#4473] / [i915#4771]) [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-7/igt@gem_exec_fair@basic-flow.html * igt@gem_exec_fair@basic-none-share: - shard-dg2: NOTRUN -> [SKIP][39] ([i915#3539] / [i915#4852]) +5 other tests skip [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_exec_fair@basic-none-share.html * igt@gem_exec_fair@basic-pace-share: - shard-rkl: NOTRUN -> [FAIL][40] ([i915#2842]) +3 other tests fail [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@gem_exec_fair@basic-pace-share.html - shard-tglu: NOTRUN -> [FAIL][41] ([i915#2842]) +1 other test fail [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-6/igt@gem_exec_fair@basic-pace-share.html * igt@gem_exec_fair@basic-pace-share@rcs0: - shard-glk: [PASS][42] -> [FAIL][43] ([i915#2842]) +1 other test fail [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-glk8/igt@gem_exec_fair@basic-pace-share@rcs0.html [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html * igt@gem_exec_fair@basic-throttle: - shard-dg2: NOTRUN -> [SKIP][44] ([i915#3539]) +1 other test skip [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-10/igt@gem_exec_fair@basic-throttle.html - shard-dg1: NOTRUN -> [SKIP][45] ([i915#3539]) +1 other test skip [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@gem_exec_fair@basic-throttle.html * igt@gem_exec_flush@basic-wb-rw-before-default: - shard-dg1: NOTRUN -> [SKIP][46] ([i915#3539] / [i915#4852]) +8 other tests skip [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@gem_exec_flush@basic-wb-rw-before-default.html * igt@gem_exec_reloc@basic-wc-cpu: - shard-dg2: NOTRUN -> [SKIP][47] ([i915#3281]) +6 other tests skip [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@gem_exec_reloc@basic-wc-cpu.html * igt@gem_exec_reloc@basic-write-read: - shard-dg1: NOTRUN -> [SKIP][48] ([i915#3281]) +10 other tests skip [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@gem_exec_reloc@basic-write-read.html * igt@gem_exec_schedule@preempt-queue: - shard-dg2: NOTRUN -> [SKIP][49] ([i915#4537] / [i915#4812]) [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@gem_exec_schedule@preempt-queue.html * igt@gem_exec_schedule@preempt-queue-contexts-chain: - shard-mtlp: NOTRUN -> [SKIP][50] ([i915#4537] / [i915#4812]) +1 other test skip [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-1/igt@gem_exec_schedule@preempt-queue-contexts-chain.html - shard-dg1: NOTRUN -> [SKIP][51] ([i915#4812]) [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@gem_exec_schedule@preempt-queue-contexts-chain.html * igt@gem_fence_thrash@bo-write-verify-y: - shard-dg1: NOTRUN -> [SKIP][52] ([i915#4860]) +1 other test skip [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@gem_fence_thrash@bo-write-verify-y.html * igt@gem_fenced_exec_thrash@no-spare-fences: - shard-dg2: NOTRUN -> [SKIP][53] ([i915#4860]) [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@gem_fenced_exec_thrash@no-spare-fences.html * igt@gem_lmem_evict@dontneed-evict-race: - shard-rkl: NOTRUN -> [SKIP][54] ([i915#4613] / [i915#7582]) [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@gem_lmem_evict@dontneed-evict-race.html * igt@gem_lmem_swapping@heavy-verify-multi: - shard-tglu: NOTRUN -> [SKIP][55] ([i915#4613]) [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@gem_lmem_swapping@heavy-verify-multi.html - shard-glk: NOTRUN -> [SKIP][56] ([i915#4613]) [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-glk6/igt@gem_lmem_swapping@heavy-verify-multi.html * igt@gem_lmem_swapping@smem-oom@lmem0: - shard-dg1: [PASS][57] -> [TIMEOUT][58] ([i915#5493]) +1 other test timeout [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg1-18/igt@gem_lmem_swapping@smem-oom@lmem0.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@gem_lmem_swapping@smem-oom@lmem0.html * igt@gem_lmem_swapping@verify-ccs: - shard-dg1: NOTRUN -> [SKIP][59] ([i915#12193]) [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-17/igt@gem_lmem_swapping@verify-ccs.html * igt@gem_lmem_swapping@verify-ccs@lmem0: - shard-dg1: NOTRUN -> [SKIP][60] ([i915#4565]) [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-17/igt@gem_lmem_swapping@verify-ccs@lmem0.html * igt@gem_lmem_swapping@verify-random: - shard-rkl: NOTRUN -> [SKIP][61] ([i915#4613]) +3 other tests skip [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@gem_lmem_swapping@verify-random.html * igt@gem_mmap_gtt@cpuset-basic-small-copy-odd: - shard-dg1: NOTRUN -> [SKIP][62] ([i915#4077]) +13 other tests skip [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@gem_mmap_gtt@cpuset-basic-small-copy-odd.html * igt@gem_mmap_gtt@hang-user: - shard-dg2: NOTRUN -> [SKIP][63] ([i915#4077]) +5 other tests skip [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_mmap_gtt@hang-user.html * igt@gem_mmap_wc@copy: - shard-dg2: NOTRUN -> [SKIP][64] ([i915#4083]) +5 other tests skip [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-10/igt@gem_mmap_wc@copy.html * igt@gem_mmap_wc@write-cpu-read-wc-unflushed: - shard-dg1: NOTRUN -> [SKIP][65] ([i915#4083]) +4 other tests skip [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@gem_mmap_wc@write-cpu-read-wc-unflushed.html * igt@gem_partial_pwrite_pread@reads-snoop: - shard-dg1: NOTRUN -> [SKIP][66] ([i915#3282]) +5 other tests skip [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@gem_partial_pwrite_pread@reads-snoop.html * igt@gem_pread@snoop: - shard-rkl: NOTRUN -> [SKIP][67] ([i915#3282]) +2 other tests skip [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@gem_pread@snoop.html * igt@gem_pwrite@basic-exhaustion: - shard-tglu: NOTRUN -> [WARN][68] ([i915#2658]) [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-7/igt@gem_pwrite@basic-exhaustion.html * igt@gem_pxp@create-protected-buffer: - shard-dg1: NOTRUN -> [SKIP][69] ([i915#4270]) +2 other tests skip [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@gem_pxp@create-protected-buffer.html * igt@gem_pxp@display-protected-crc: - shard-dg2: NOTRUN -> [SKIP][70] ([i915#4270]) +1 other test skip [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@gem_pxp@display-protected-crc.html * igt@gem_pxp@reject-modify-context-protection-off-3: - shard-tglu: NOTRUN -> [SKIP][71] ([i915#4270]) +3 other tests skip [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-7/igt@gem_pxp@reject-modify-context-protection-off-3.html * igt@gem_pxp@reject-modify-context-protection-on: - shard-rkl: NOTRUN -> [SKIP][72] ([i915#4270]) +3 other tests skip [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@gem_pxp@reject-modify-context-protection-on.html * igt@gem_readwrite@new-obj: - shard-dg2: NOTRUN -> [SKIP][73] ([i915#3282]) +2 other tests skip [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@gem_readwrite@new-obj.html * igt@gem_render_copy@y-tiled-ccs-to-yf-tiled-mc-ccs: - shard-mtlp: NOTRUN -> [SKIP][74] ([i915#8428]) +1 other test skip [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-2/igt@gem_render_copy@y-tiled-ccs-to-yf-tiled-mc-ccs.html * igt@gem_render_copy@yf-tiled-ccs-to-x-tiled: - shard-dg2: NOTRUN -> [SKIP][75] ([i915#5190] / [i915#8428]) +1 other test skip [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@gem_render_copy@yf-tiled-ccs-to-x-tiled.html * igt@gem_set_tiling_vs_blt@tiled-to-tiled: - shard-dg2: NOTRUN -> [SKIP][76] ([i915#4079]) +2 other tests skip [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html * igt@gem_set_tiling_vs_gtt: - shard-dg1: NOTRUN -> [SKIP][77] ([i915#4079]) +2 other tests skip [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@gem_set_tiling_vs_gtt.html * igt@gem_softpin@evict-snoop: - shard-dg1: NOTRUN -> [SKIP][78] ([i915#4885]) [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@gem_softpin@evict-snoop.html - shard-dg2: NOTRUN -> [SKIP][79] ([i915#4885]) [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_softpin@evict-snoop.html * igt@gem_userptr_blits@coherency-unsync: - shard-dg2: NOTRUN -> [SKIP][80] ([i915#3297]) [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@gem_userptr_blits@coherency-unsync.html * igt@gem_userptr_blits@dmabuf-sync: - shard-tglu: NOTRUN -> [SKIP][81] ([i915#3297] / [i915#3323]) [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-9/igt@gem_userptr_blits@dmabuf-sync.html * igt@gem_userptr_blits@forbidden-operations: - shard-dg1: NOTRUN -> [SKIP][82] ([i915#3282] / [i915#3297]) [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@gem_userptr_blits@forbidden-operations.html - shard-dg2: NOTRUN -> [SKIP][83] ([i915#3282] / [i915#3297]) [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-4/igt@gem_userptr_blits@forbidden-operations.html * igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy: - shard-dg1: NOTRUN -> [SKIP][84] ([i915#3297] / [i915#4880]) +1 other test skip [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html * igt@gem_userptr_blits@mmap-offset-banned@gtt: - shard-mtlp: NOTRUN -> [SKIP][85] ([i915#3297]) +1 other test skip [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-2/igt@gem_userptr_blits@mmap-offset-banned@gtt.html * igt@gem_userptr_blits@readonly-pwrite-unsync: - shard-tglu: NOTRUN -> [SKIP][86] ([i915#3297]) +2 other tests skip [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@gem_userptr_blits@readonly-pwrite-unsync.html * igt@gem_userptr_blits@unsync-unmap-after-close: - shard-rkl: NOTRUN -> [SKIP][87] ([i915#3297]) +1 other test skip [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@gem_userptr_blits@unsync-unmap-after-close.html * igt@gem_userptr_blits@unsync-unmap-cycles: - shard-dg1: NOTRUN -> [SKIP][88] ([i915#3297]) [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@gem_userptr_blits@unsync-unmap-cycles.html * igt@gen9_exec_parse@batch-invalid-length: - shard-rkl: NOTRUN -> [SKIP][89] ([i915#2527]) +1 other test skip [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-1/igt@gen9_exec_parse@batch-invalid-length.html * igt@gen9_exec_parse@bb-large: - shard-dg1: NOTRUN -> [SKIP][90] ([i915#2527]) +2 other tests skip [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@gen9_exec_parse@bb-large.html * igt@gen9_exec_parse@bb-start-cmd: - shard-tglu: NOTRUN -> [SKIP][91] ([i915#2527] / [i915#2856]) +3 other tests skip [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-7/igt@gen9_exec_parse@bb-start-cmd.html * igt@gen9_exec_parse@unaligned-access: - shard-dg2: NOTRUN -> [SKIP][92] ([i915#2856]) +1 other test skip [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@gen9_exec_parse@unaligned-access.html * igt@i915_module_load@reload-no-display: - shard-snb: NOTRUN -> [ABORT][93] ([i915#11703]) [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-snb5/igt@i915_module_load@reload-no-display.html - shard-mtlp: NOTRUN -> [DMESG-WARN][94] ([i915#12092]) [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-6/igt@i915_module_load@reload-no-display.html * igt@i915_module_load@reload-with-fault-injection: - shard-rkl: [PASS][95] -> [ABORT][96] ([i915#9820]) [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-rkl-4/igt@i915_module_load@reload-with-fault-injection.html [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-5/igt@i915_module_load@reload-with-fault-injection.html * igt@i915_module_load@resize-bar: - shard-tglu: NOTRUN -> [SKIP][97] ([i915#6412]) [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@i915_module_load@resize-bar.html * igt@i915_pm_freq_api@freq-reset-multiple: - shard-tglu: NOTRUN -> [SKIP][98] ([i915#8399]) [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@i915_pm_freq_api@freq-reset-multiple.html * igt@i915_pm_freq_mult@media-freq@gt0: - shard-tglu: NOTRUN -> [SKIP][99] ([i915#6590]) +1 other test skip [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@i915_pm_freq_mult@media-freq@gt0.html * igt@i915_pm_rc6_residency@rc6-fence: - shard-tglu: NOTRUN -> [WARN][100] ([i915#2681]) +1 other test warn [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-9/igt@i915_pm_rc6_residency@rc6-fence.html * igt@i915_pm_rps@basic-api: - shard-dg1: NOTRUN -> [SKIP][101] ([i915#11681] / [i915#6621]) [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@i915_pm_rps@basic-api.html - shard-mtlp: NOTRUN -> [SKIP][102] ([i915#11681] / [i915#6621]) [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-6/igt@i915_pm_rps@basic-api.html * igt@i915_pm_rps@min-max-config-idle: - shard-dg2: NOTRUN -> [SKIP][103] ([i915#11681] / [i915#6621]) [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@i915_pm_rps@min-max-config-idle.html * igt@i915_pm_sseu@full-enable: - shard-rkl: NOTRUN -> [SKIP][104] ([i915#4387]) [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-5/igt@i915_pm_sseu@full-enable.html * igt@i915_query@hwconfig_table: - shard-tglu: NOTRUN -> [SKIP][105] ([i915#6245]) [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-5/igt@i915_query@hwconfig_table.html * igt@i915_selftest@live@workarounds: - shard-mtlp: [PASS][106] -> [ABORT][107] ([i915#12061]) +1 other test abort [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-mtlp-2/igt@i915_selftest@live@workarounds.html [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-8/igt@i915_selftest@live@workarounds.html * igt@i915_selftest@mock@memory_region: - shard-dg1: NOTRUN -> [DMESG-WARN][108] ([i915#9311]) +1 other test dmesg-warn [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-17/igt@i915_selftest@mock@memory_region.html * igt@i915_suspend@fence-restore-untiled: - shard-mtlp: NOTRUN -> [SKIP][109] ([i915#4077]) +1 other test skip [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-3/igt@i915_suspend@fence-restore-untiled.html * igt@kms_addfb_basic@addfb25-yf-tiled-legacy: - shard-dg2: NOTRUN -> [SKIP][110] ([i915#2575] / [i915#5190]) [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_addfb_basic@addfb25-yf-tiled-legacy.html * igt@kms_addfb_basic@basic-y-tiled-legacy: - shard-dg1: NOTRUN -> [SKIP][111] ([i915#4215]) [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@kms_addfb_basic@basic-y-tiled-legacy.html - shard-dg2: NOTRUN -> [SKIP][112] ([i915#4215] / [i915#5190]) [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@kms_addfb_basic@basic-y-tiled-legacy.html * igt@kms_addfb_basic@tile-pitch-mismatch: - shard-dg1: NOTRUN -> [SKIP][113] ([i915#4212]) +1 other test skip [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@kms_addfb_basic@tile-pitch-mismatch.html * igt@kms_async_flips@test-cursor: - shard-mtlp: NOTRUN -> [SKIP][114] ([i915#10333]) [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-7/igt@kms_async_flips@test-cursor.html * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels: - shard-tglu: NOTRUN -> [SKIP][115] ([i915#1769] / [i915#3555]) [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-6/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html * igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4: - shard-dg1: [PASS][116] -> [FAIL][117] ([i915#5956]) +1 other test fail [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg1-18/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4.html [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4.html * igt@kms_atomic_transition@plane-toggle-modeset-transition: - shard-snb: [PASS][118] -> [FAIL][119] ([i915#5956]) +1 other test fail [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-snb5/igt@kms_atomic_transition@plane-toggle-modeset-transition.html [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-snb6/igt@kms_atomic_transition@plane-toggle-modeset-transition.html * igt@kms_big_fb@4-tiled-32bpp-rotate-270: - shard-tglu: NOTRUN -> [SKIP][120] ([i915#5286]) +5 other tests skip [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-9/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0: - shard-rkl: NOTRUN -> [SKIP][121] ([i915#5286]) +4 other tests skip [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip: - shard-dg1: NOTRUN -> [SKIP][122] ([i915#4538] / [i915#5286]) +4 other tests skip [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html * igt@kms_big_fb@linear-32bpp-rotate-90: - shard-dg1: NOTRUN -> [SKIP][123] ([i915#3638]) +2 other tests skip [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_big_fb@linear-32bpp-rotate-90.html * igt@kms_big_fb@linear-64bpp-rotate-270: - shard-mtlp: NOTRUN -> [SKIP][124] +1 other test skip [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-3/igt@kms_big_fb@linear-64bpp-rotate-270.html * igt@kms_big_fb@x-tiled-8bpp-rotate-270: - shard-rkl: NOTRUN -> [SKIP][125] ([i915#3638]) +1 other test skip [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-1/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html * igt@kms_big_fb@y-tiled-addfb-size-overflow: - shard-dg2: NOTRUN -> [SKIP][126] ([i915#5190]) +3 other tests skip [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@kms_big_fb@y-tiled-addfb-size-overflow.html * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip: - shard-dg2: NOTRUN -> [SKIP][127] ([i915#4538] / [i915#5190]) +7 other tests skip [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-10/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html * igt@kms_big_fb@yf-tiled-16bpp-rotate-270: - shard-dg1: NOTRUN -> [SKIP][128] ([i915#4538]) +4 other tests skip [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip: - shard-snb: NOTRUN -> [SKIP][129] +70 other tests skip [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-snb6/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html * igt@kms_big_joiner@basic-force-joiner: - shard-dg2: NOTRUN -> [SKIP][130] ([i915#10656]) [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_big_joiner@basic-force-joiner.html * igt@kms_big_joiner@invalid-modeset: - shard-tglu: NOTRUN -> [SKIP][131] ([i915#10656]) [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-9/igt@kms_big_joiner@invalid-modeset.html * igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3: - shard-dg2: NOTRUN -> [SKIP][132] ([i915#10307] / [i915#6095]) +139 other tests skip [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3.html * igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs: - shard-rkl: NOTRUN -> [SKIP][133] ([i915#12042]) [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-1: - shard-rkl: NOTRUN -> [SKIP][134] ([i915#6095]) +49 other tests skip [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-1.html * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs: - shard-dg1: NOTRUN -> [SKIP][135] ([i915#12042]) [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html - shard-tglu: NOTRUN -> [SKIP][136] ([i915#12042]) [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html * igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs@pipe-d-edp-1: - shard-mtlp: NOTRUN -> [SKIP][137] ([i915#6095]) +4 other tests skip [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-3/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs@pipe-d-edp-1.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-1: - shard-tglu: NOTRUN -> [SKIP][138] ([i915#6095]) +44 other tests skip [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-1.html * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-3: - shard-dg1: NOTRUN -> [SKIP][139] ([i915#6095]) +138 other tests skip [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-3.html * igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-hdmi-a-1: - shard-dg2: NOTRUN -> [SKIP][140] ([i915#10307] / [i915#10434] / [i915#6095]) +1 other test skip [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-hdmi-a-1.html * igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-2: - shard-dg2: NOTRUN -> [SKIP][141] ([i915#4087]) +4 other tests skip [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-2.html * igt@kms_chamelium_edid@hdmi-edid-change-during-suspend: - shard-rkl: NOTRUN -> [SKIP][142] ([i915#7828]) +7 other tests skip [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html - shard-dg1: NOTRUN -> [SKIP][143] ([i915#7828]) +8 other tests skip [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html * igt@kms_chamelium_frames@hdmi-frame-dump: - shard-mtlp: NOTRUN -> [SKIP][144] ([i915#7828]) [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-5/igt@kms_chamelium_frames@hdmi-frame-dump.html * igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe: - shard-tglu: NOTRUN -> [SKIP][145] ([i915#7828]) +6 other tests skip [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-10/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html * igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode: - shard-dg2: NOTRUN -> [SKIP][146] ([i915#7828]) +5 other tests skip [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode.html * igt@kms_content_protection@atomic: - shard-dg1: NOTRUN -> [SKIP][147] ([i915#7116] / [i915#9424]) [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@kms_content_protection@atomic.html - shard-dg2: NOTRUN -> [SKIP][148] ([i915#7118] / [i915#9424]) [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_content_protection@atomic.html * igt@kms_content_protection@dp-mst-lic-type-0: - shard-tglu: NOTRUN -> [SKIP][149] ([i915#3116] / [i915#3299]) +1 other test skip [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-5/igt@kms_content_protection@dp-mst-lic-type-0.html - shard-dg2: NOTRUN -> [SKIP][150] ([i915#3299]) +1 other test skip [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-4/igt@kms_content_protection@dp-mst-lic-type-0.html - shard-dg1: NOTRUN -> [SKIP][151] ([i915#3299]) [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_content_protection@dp-mst-lic-type-0.html * igt@kms_content_protection@legacy: - shard-rkl: NOTRUN -> [SKIP][152] ([i915#7118] / [i915#9424]) +1 other test skip [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_content_protection@legacy.html * igt@kms_content_protection@lic-type-0: - shard-tglu: NOTRUN -> [SKIP][153] ([i915#6944] / [i915#9424]) [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-9/igt@kms_content_protection@lic-type-0.html - shard-mtlp: NOTRUN -> [SKIP][154] ([i915#6944] / [i915#9424]) [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-6/igt@kms_content_protection@lic-type-0.html - shard-dg2: NOTRUN -> [SKIP][155] ([i915#9424]) [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_content_protection@lic-type-0.html - shard-rkl: NOTRUN -> [SKIP][156] ([i915#9424]) [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_content_protection@lic-type-0.html - shard-dg1: NOTRUN -> [SKIP][157] ([i915#9424]) [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@kms_content_protection@lic-type-0.html * igt@kms_content_protection@mei-interface: - shard-dg1: NOTRUN -> [SKIP][158] ([i915#9433]) [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@kms_content_protection@mei-interface.html * igt@kms_cursor_crc@cursor-onscreen-32x32: - shard-rkl: NOTRUN -> [SKIP][159] ([i915#3555]) +9 other tests skip [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-2/igt@kms_cursor_crc@cursor-onscreen-32x32.html * igt@kms_cursor_crc@cursor-random-512x170: - shard-dg1: NOTRUN -> [SKIP][160] ([i915#11453]) +1 other test skip [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_cursor_crc@cursor-random-512x170.html * igt@kms_cursor_crc@cursor-rapid-movement-512x170: - shard-tglu: NOTRUN -> [SKIP][161] ([i915#11453]) [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-10/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html - shard-dg2: NOTRUN -> [SKIP][162] ([i915#11453]) [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html - shard-rkl: NOTRUN -> [SKIP][163] ([i915#11453]) [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html * igt@kms_cursor_crc@cursor-rapid-movement-max-size: - shard-dg2: NOTRUN -> [SKIP][164] ([i915#3555]) +6 other tests skip [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-4/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html - shard-mtlp: NOTRUN -> [SKIP][165] ([i915#3555] / [i915#8814]) [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-4/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy: - shard-mtlp: NOTRUN -> [SKIP][166] ([i915#9809]) [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-2/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - shard-rkl: NOTRUN -> [SKIP][167] ([i915#4103]) [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html - shard-tglu: NOTRUN -> [SKIP][168] ([i915#4103]) [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_cursor_legacy@cursora-vs-flipb-toggle: - shard-dg2: NOTRUN -> [SKIP][169] ([i915#5354]) +28 other tests skip [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-4/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html * igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot: - shard-rkl: NOTRUN -> [SKIP][170] ([i915#9067]) [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html * igt@kms_cursor_legacy@torture-bo@pipe-a: - shard-snb: [PASS][171] -> [DMESG-WARN][172] ([i915#10166]) +1 other test dmesg-warn [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-snb2/igt@kms_cursor_legacy@torture-bo@pipe-a.html [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-snb6/igt@kms_cursor_legacy@torture-bo@pipe-a.html * igt@kms_dirtyfb@drrs-dirtyfb-ioctl: - shard-dg1: NOTRUN -> [SKIP][173] ([i915#9723]) [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html * igt@kms_dither@fb-8bpc-vs-panel-6bpc: - shard-tglu: NOTRUN -> [SKIP][174] ([i915#1769] / [i915#3555] / [i915#3804]) [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-10/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html - shard-dg2: [PASS][175] -> [SKIP][176] ([i915#3555]) [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-11/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1: - shard-tglu: NOTRUN -> [SKIP][177] ([i915#3804]) [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-10/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html * igt@kms_dsc@dsc-basic: - shard-dg2: NOTRUN -> [SKIP][178] ([i915#3555] / [i915#3840]) [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@kms_dsc@dsc-basic.html - shard-rkl: NOTRUN -> [SKIP][179] ([i915#3555] / [i915#3840]) +2 other tests skip [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_dsc@dsc-basic.html - shard-tglu: NOTRUN -> [SKIP][180] ([i915#3555] / [i915#3840]) [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@kms_dsc@dsc-basic.html * igt@kms_dsc@dsc-fractional-bpp: - shard-dg2: NOTRUN -> [SKIP][181] ([i915#3840] / [i915#9688]) [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-10/igt@kms_dsc@dsc-fractional-bpp.html - shard-rkl: NOTRUN -> [SKIP][182] ([i915#3840]) [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp.html - shard-dg1: NOTRUN -> [SKIP][183] ([i915#3840]) [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@kms_dsc@dsc-fractional-bpp.html * igt@kms_dsc@dsc-with-output-formats-with-bpc: - shard-dg2: NOTRUN -> [SKIP][184] ([i915#3840] / [i915#9053]) [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_dsc@dsc-with-output-formats-with-bpc.html - shard-dg1: NOTRUN -> [SKIP][185] ([i915#3840] / [i915#9053]) [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@kms_dsc@dsc-with-output-formats-with-bpc.html * igt@kms_feature_discovery@display-4x: - shard-dg1: NOTRUN -> [SKIP][186] ([i915#1839]) [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@kms_feature_discovery@display-4x.html - shard-tglu: NOTRUN -> [SKIP][187] ([i915#1839]) [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-7/igt@kms_feature_discovery@display-4x.html - shard-mtlp: NOTRUN -> [SKIP][188] ([i915#1839]) [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-4/igt@kms_feature_discovery@display-4x.html * igt@kms_flip@2x-flip-vs-dpms: - shard-dg1: NOTRUN -> [SKIP][189] ([i915#9934]) +5 other tests skip [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_flip@2x-flip-vs-dpms.html - shard-mtlp: NOTRUN -> [SKIP][190] ([i915#3637]) [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-3/igt@kms_flip@2x-flip-vs-dpms.html * igt@kms_flip@2x-flip-vs-fences-interruptible: - shard-dg1: NOTRUN -> [SKIP][191] ([i915#8381]) +1 other test skip [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_flip@2x-flip-vs-fences-interruptible.html - shard-dg2: NOTRUN -> [SKIP][192] ([i915#8381]) [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-4/igt@kms_flip@2x-flip-vs-fences-interruptible.html * igt@kms_flip@2x-flip-vs-modeset-vs-hang: - shard-dg2: NOTRUN -> [SKIP][193] +15 other tests skip [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html * igt@kms_flip@2x-plain-flip: - shard-rkl: NOTRUN -> [SKIP][194] +20 other tests skip [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-1/igt@kms_flip@2x-plain-flip.html * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible: - shard-tglu: NOTRUN -> [SKIP][195] ([i915#3637]) +7 other tests skip [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-3/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html * igt@kms_flip@flip-vs-fences: - shard-mtlp: NOTRUN -> [SKIP][196] ([i915#8381]) [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-2/igt@kms_flip@flip-vs-fences.html * igt@kms_flip@wf_vblank-ts-check: - shard-snb: [PASS][197] -> [FAIL][198] ([i915#2122]) +1 other test fail [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-snb5/igt@kms_flip@wf_vblank-ts-check.html [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-snb7/igt@kms_flip@wf_vblank-ts-check.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling: - shard-rkl: NOTRUN -> [SKIP][199] ([i915#2672] / [i915#3555]) +2 other tests skip [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode: - shard-rkl: NOTRUN -> [SKIP][200] ([i915#2672]) +2 other tests skip [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling: - shard-tglu: NOTRUN -> [SKIP][201] ([i915#2672] / [i915#3555]) [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-5/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode: - shard-tglu: NOTRUN -> [SKIP][202] ([i915#2587] / [i915#2672]) +2 other tests skip [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling: - shard-dg2: NOTRUN -> [SKIP][203] ([i915#2672] / [i915#3555] / [i915#5190]) +1 other test skip [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html - shard-dg1: NOTRUN -> [SKIP][204] ([i915#2587] / [i915#2672] / [i915#3555]) [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html - shard-tglu: NOTRUN -> [SKIP][205] ([i915#2587] / [i915#2672] / [i915#3555]) +1 other test skip [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html - shard-mtlp: NOTRUN -> [SKIP][206] ([i915#2672] / [i915#3555] / [i915#8813]) [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-default-mode: - shard-mtlp: NOTRUN -> [SKIP][207] ([i915#2672]) [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode: - shard-dg2: NOTRUN -> [SKIP][208] ([i915#2672]) +1 other test skip [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling: - shard-dg1: NOTRUN -> [SKIP][209] ([i915#2672] / [i915#3555]) +1 other test skip [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode: - shard-dg1: NOTRUN -> [SKIP][210] ([i915#2587] / [i915#2672]) +2 other tests skip [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling: - shard-mtlp: NOTRUN -> [SKIP][211] ([i915#3555] / [i915#8813]) [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling@pipe-a-default-mode: - shard-mtlp: NOTRUN -> [SKIP][212] ([i915#3555] / [i915#8810]) [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling@pipe-a-default-mode.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt: - shard-mtlp: NOTRUN -> [SKIP][213] ([i915#8708]) [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render: - shard-dg1: NOTRUN -> [SKIP][214] +43 other tests skip [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc: - shard-dg1: NOTRUN -> [SKIP][215] ([i915#8708]) +17 other tests skip [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt: - shard-dg2: [PASS][216] -> [FAIL][217] ([i915#6880]) +1 other test fail [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-8/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt.html [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt.html * igt@kms_frontbuffer_tracking@fbc-tiling-4: - shard-dg2: NOTRUN -> [FAIL][218] ([i915#6880]) [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_frontbuffer_tracking@fbc-tiling-4.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu: - shard-dg2: NOTRUN -> [SKIP][219] ([i915#3458]) +10 other tests skip [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte: - shard-dg1: NOTRUN -> [SKIP][220] ([i915#3458]) +18 other tests skip [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc: - shard-mtlp: NOTRUN -> [SKIP][221] ([i915#1825]) +12 other tests skip [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt: - shard-rkl: NOTRUN -> [SKIP][222] ([i915#1825]) +34 other tests skip [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen: - shard-tglu: NOTRUN -> [SKIP][223] +65 other tests skip [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-9/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen.html * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y: - shard-mtlp: NOTRUN -> [SKIP][224] ([i915#10055]) [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html * igt@kms_frontbuffer_tracking@pipe-fbc-rte: - shard-dg1: NOTRUN -> [SKIP][225] ([i915#9766]) [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html - shard-dg2: NOTRUN -> [SKIP][226] ([i915#9766]) [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html * igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw: - shard-glk: NOTRUN -> [SKIP][227] +164 other tests skip [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-glk9/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite: - shard-rkl: NOTRUN -> [SKIP][228] ([i915#3023]) +17 other tests skip [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-gtt: - shard-dg2: NOTRUN -> [SKIP][229] ([i915#8708]) +11 other tests skip [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-gtt.html * igt@kms_hdr@bpc-switch: - shard-dg1: NOTRUN -> [SKIP][230] ([i915#3555] / [i915#8228]) [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@kms_hdr@bpc-switch.html - shard-dg2: [PASS][231] -> [SKIP][232] ([i915#3555] / [i915#8228]) [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-11/igt@kms_hdr@bpc-switch.html [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@kms_hdr@bpc-switch.html * igt@kms_hdr@invalid-hdr: - shard-dg2: NOTRUN -> [SKIP][233] ([i915#3555] / [i915#8228]) [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@kms_hdr@invalid-hdr.html - shard-rkl: NOTRUN -> [SKIP][234] ([i915#3555] / [i915#8228]) [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_hdr@invalid-hdr.html - shard-tglu: NOTRUN -> [SKIP][235] ([i915#3555] / [i915#8228]) +1 other test skip [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@kms_hdr@invalid-hdr.html * igt@kms_multipipe_modeset@basic-max-pipe-crc-check: - shard-rkl: NOTRUN -> [SKIP][236] ([i915#4816]) [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html * igt@kms_plane_scaling@intel-max-src-size: - shard-dg2: NOTRUN -> [SKIP][237] ([i915#6953] / [i915#9423]) [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@kms_plane_scaling@intel-max-src-size.html * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1: - shard-rkl: NOTRUN -> [FAIL][238] ([i915#8292]) +1 other test fail [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-2/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4: - shard-dg1: NOTRUN -> [FAIL][239] ([i915#8292]) +1 other test fail [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats: - shard-dg2: [PASS][240] -> [SKIP][241] ([i915#2575] / [i915#9423]) +1 other test skip [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats.html [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats.html * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling: - shard-dg2: NOTRUN -> [SKIP][242] ([i915#9423]) [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25: - shard-dg1: NOTRUN -> [SKIP][243] ([i915#6953]) [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5: - shard-tglu: NOTRUN -> [SKIP][244] ([i915#6953]) [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5.html * igt@kms_pm_backlight@basic-brightness: - shard-rkl: NOTRUN -> [SKIP][245] ([i915#5354]) [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_pm_backlight@basic-brightness.html - shard-dg1: NOTRUN -> [SKIP][246] ([i915#5354]) [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_pm_backlight@basic-brightness.html * igt@kms_pm_backlight@fade-with-dpms: - shard-tglu: NOTRUN -> [SKIP][247] ([i915#9812]) +1 other test skip [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-3/igt@kms_pm_backlight@fade-with-dpms.html * igt@kms_pm_lpsp@screens-disabled: - shard-dg1: NOTRUN -> [SKIP][248] ([i915#8430]) [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@kms_pm_lpsp@screens-disabled.html - shard-dg2: NOTRUN -> [SKIP][249] ([i915#8430]) [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-10/igt@kms_pm_lpsp@screens-disabled.html * igt@kms_pm_rpm@cursor: - shard-dg2: [PASS][250] -> [SKIP][251] ([i915#11717]) [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-5/igt@kms_pm_rpm@cursor.html [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_pm_rpm@cursor.html * igt@kms_pm_rpm@dpms-non-lpsp: - shard-rkl: [PASS][252] -> [SKIP][253] ([i915#9519]) [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-rkl-3/igt@kms_pm_rpm@dpms-non-lpsp.html [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_pm_rpm@dpms-non-lpsp.html * igt@kms_pm_rpm@modeset-lpsp: - shard-dg1: NOTRUN -> [SKIP][254] ([i915#9519]) +1 other test skip [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-14/igt@kms_pm_rpm@modeset-lpsp.html * igt@kms_pm_rpm@modeset-lpsp-stress: - shard-dg2: [PASS][255] -> [SKIP][256] ([i915#9519]) [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-10/igt@kms_pm_rpm@modeset-lpsp-stress.html [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@kms_pm_rpm@modeset-lpsp-stress.html * igt@kms_pm_rpm@modeset-non-lpsp-stress: - shard-dg2: NOTRUN -> [SKIP][257] ([i915#9519]) [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html - shard-rkl: NOTRUN -> [SKIP][258] ([i915#9519]) [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html * igt@kms_prime@basic-modeset-hybrid: - shard-rkl: NOTRUN -> [SKIP][259] ([i915#6524]) [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-2/igt@kms_prime@basic-modeset-hybrid.html * igt@kms_psr2_sf@cursor-plane-move-continuous-sf: - shard-dg1: NOTRUN -> [SKIP][260] ([i915#11520]) +6 other tests skip [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_psr2_sf@cursor-plane-move-continuous-sf.html * igt@kms_psr2_sf@fbc-plane-move-sf-dmg-area: - shard-tglu: NOTRUN -> [SKIP][261] ([i915#11520]) +4 other tests skip [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-3/igt@kms_psr2_sf@fbc-plane-move-sf-dmg-area.html * igt@kms_psr2_sf@fbc-primary-plane-update-sf-dmg-area: - shard-rkl: NOTRUN -> [SKIP][262] ([i915#11520]) +5 other tests skip [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-2/igt@kms_psr2_sf@fbc-primary-plane-update-sf-dmg-area.html * igt@kms_psr2_sf@fbc-primary-plane-update-sf-dmg-area@psr2-pipe-a-edp-1: - shard-mtlp: NOTRUN -> [SKIP][263] ([i915#9808]) +2 other tests skip [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-2/igt@kms_psr2_sf@fbc-primary-plane-update-sf-dmg-area@psr2-pipe-a-edp-1.html * igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area: - shard-dg2: NOTRUN -> [SKIP][264] ([i915#11520]) +5 other tests skip [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html * igt@kms_psr@fbc-pr-primary-mmap-gtt: - shard-dg2: NOTRUN -> [SKIP][265] ([i915#1072] / [i915#9732]) +17 other tests skip [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_psr@fbc-pr-primary-mmap-gtt.html * igt@kms_psr@fbc-psr-cursor-render: - shard-tglu: NOTRUN -> [SKIP][266] ([i915#9732]) +16 other tests skip [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-9/igt@kms_psr@fbc-psr-cursor-render.html * igt@kms_psr@fbc-psr-sprite-mmap-cpu: - shard-mtlp: NOTRUN -> [SKIP][267] ([i915#9688]) +4 other tests skip [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-4/igt@kms_psr@fbc-psr-sprite-mmap-cpu.html * igt@kms_psr@fbc-psr2-sprite-render: - shard-rkl: NOTRUN -> [SKIP][268] ([i915#1072] / [i915#9732]) +18 other tests skip [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_psr@fbc-psr2-sprite-render.html * igt@kms_psr@pr-sprite-plane-onoff: - shard-dg1: NOTRUN -> [SKIP][269] ([i915#1072] / [i915#9732]) +22 other tests skip [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@kms_psr@pr-sprite-plane-onoff.html * igt@kms_psr@psr-sprite-mmap-gtt@edp-1: - shard-mtlp: NOTRUN -> [SKIP][270] ([i915#4077] / [i915#9688]) +1 other test skip [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-7/igt@kms_psr@psr-sprite-mmap-gtt@edp-1.html * igt@kms_psr@psr2-cursor-render@edp-1: - shard-mtlp: [PASS][271] -> [FAIL][272] ([i915#10105]) [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-mtlp-5/igt@kms_psr@psr2-cursor-render@edp-1.html [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-1/igt@kms_psr@psr2-cursor-render@edp-1.html * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90: - shard-dg2: NOTRUN -> [SKIP][273] ([i915#11131] / [i915#5190]) [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0: - shard-rkl: NOTRUN -> [SKIP][274] ([i915#5289]) +1 other test skip [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-2/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html - shard-tglu: NOTRUN -> [SKIP][275] ([i915#5289]) [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270: - shard-dg1: NOTRUN -> [SKIP][276] ([i915#5289]) [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html * igt@kms_scaling_modes@scaling-mode-center: - shard-dg1: NOTRUN -> [SKIP][277] ([i915#3555]) +9 other tests skip [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@kms_scaling_modes@scaling-mode-center.html - shard-tglu: NOTRUN -> [SKIP][278] ([i915#3555]) +6 other tests skip [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-6/igt@kms_scaling_modes@scaling-mode-center.html * igt@kms_selftest@drm_framebuffer: - shard-snb: NOTRUN -> [ABORT][279] ([i915#12231]) [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-snb2/igt@kms_selftest@drm_framebuffer.html * igt@kms_sysfs_edid_timing: - shard-dg1: NOTRUN -> [FAIL][280] ([IGT#2] / [i915#6493]) [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_sysfs_edid_timing.html * igt@kms_tiled_display@basic-test-pattern-with-chamelium: - shard-dg1: NOTRUN -> [SKIP][281] ([i915#8623]) [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html - shard-dg2: NOTRUN -> [SKIP][282] ([i915#8623]) [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html * igt@kms_vblank@ts-continuation-idle-hang: - shard-dg2: [PASS][283] -> [SKIP][284] ([i915#2575]) +46 other tests skip [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-8/igt@kms_vblank@ts-continuation-idle-hang.html [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_vblank@ts-continuation-idle-hang.html * igt@kms_vrr@seamless-rr-switch-virtual: - shard-dg1: NOTRUN -> [SKIP][285] ([i915#9906]) [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_vrr@seamless-rr-switch-virtual.html * igt@kms_vrr@seamless-rr-switch-vrr: - shard-rkl: NOTRUN -> [SKIP][286] ([i915#9906]) [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-1/igt@kms_vrr@seamless-rr-switch-vrr.html * igt@kms_writeback@writeback-invalid-parameters: - shard-dg1: NOTRUN -> [SKIP][287] ([i915#2437]) [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-18/igt@kms_writeback@writeback-invalid-parameters.html - shard-tglu: NOTRUN -> [SKIP][288] ([i915#2437]) [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-7/igt@kms_writeback@writeback-invalid-parameters.html - shard-mtlp: NOTRUN -> [SKIP][289] ([i915#2437]) [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-5/igt@kms_writeback@writeback-invalid-parameters.html - shard-dg2: NOTRUN -> [SKIP][290] ([i915#2437]) [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-10/igt@kms_writeback@writeback-invalid-parameters.html - shard-rkl: NOTRUN -> [SKIP][291] ([i915#2437]) [291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_writeback@writeback-invalid-parameters.html * igt@kms_writeback@writeback-pixel-formats: - shard-dg2: NOTRUN -> [SKIP][292] ([i915#2437] / [i915#9412]) [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_writeback@writeback-pixel-formats.html - shard-dg1: NOTRUN -> [SKIP][293] ([i915#2437] / [i915#9412]) [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-15/igt@kms_writeback@writeback-pixel-formats.html * igt@perf_pmu@most-busy-check-all: - shard-rkl: [PASS][294] -> [FAIL][295] ([i915#4349]) +1 other test fail [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-rkl-3/igt@perf_pmu@most-busy-check-all.html [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-5/igt@perf_pmu@most-busy-check-all.html * igt@perf_pmu@rc6@other-idle-gt0: - shard-dg2: NOTRUN -> [SKIP][296] ([i915#8516]) [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@perf_pmu@rc6@other-idle-gt0.html - shard-dg1: NOTRUN -> [SKIP][297] ([i915#8516]) [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-13/igt@perf_pmu@rc6@other-idle-gt0.html * igt@sriov_basic@enable-vfs-bind-unbind-each: - shard-rkl: NOTRUN -> [SKIP][298] ([i915#9917]) [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-1/igt@sriov_basic@enable-vfs-bind-unbind-each.html * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all: - shard-tglu: NOTRUN -> [SKIP][299] ([i915#9917]) [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-5/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html - shard-dg1: NOTRUN -> [SKIP][300] ([i915#9917]) [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html * igt@syncobj_timeline@reset-signaled: - shard-dg2: NOTRUN -> [SKIP][301] ([i915#2575]) +7 other tests skip [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@syncobj_timeline@reset-signaled.html #### Possible fixes #### * igt@gem_ctx_engines@invalid-engines: - shard-glk: [FAIL][302] ([i915#12027]) -> [PASS][303] [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-glk9/igt@gem_ctx_engines@invalid-engines.html [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-glk9/igt@gem_ctx_engines@invalid-engines.html * igt@gem_exec_fair@basic-pace-solo: - shard-rkl: [FAIL][304] ([i915#2842]) -> [PASS][305] +1 other test pass [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-rkl-2/igt@gem_exec_fair@basic-pace-solo.html [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@gem_exec_fair@basic-pace-solo.html * igt@gem_exec_gttfill@basic: - shard-dg1: [INCOMPLETE][306] ([i915#11895]) -> [PASS][307] [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg1-16/igt@gem_exec_gttfill@basic.html [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg1-16/igt@gem_exec_gttfill@basic.html * igt@gem_softpin@noreloc-s3: - shard-tglu: [ABORT][308] -> [PASS][309] [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-tglu-3/igt@gem_softpin@noreloc-s3.html [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-8/igt@gem_softpin@noreloc-s3.html * igt@i915_pm_rc6_residency@rc6-idle@gt0-ccs0: - shard-dg2: [FAIL][310] ([i915#3591]) -> [PASS][311] +2 other tests pass [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-5/igt@i915_pm_rc6_residency@rc6-idle@gt0-ccs0.html [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-6/igt@i915_pm_rc6_residency@rc6-idle@gt0-ccs0.html * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1: - shard-mtlp: [FAIL][312] ([i915#11808] / [i915#5956]) -> [PASS][313] +1 other test pass [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-mtlp-5/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-8/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html * igt@kms_pm_dc@dc6-dpms: - shard-tglu: [FAIL][314] ([i915#9295]) -> [PASS][315] [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-tglu-9/igt@kms_pm_dc@dc6-dpms.html [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-10/igt@kms_pm_dc@dc6-dpms.html * igt@kms_pm_rpm@dpms-mode-unset-lpsp: - shard-rkl: [SKIP][316] ([i915#9519]) -> [PASS][317] [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-rkl-5/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-4/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html * igt@kms_pm_rpm@dpms-non-lpsp: - shard-dg2: [SKIP][318] ([i915#9519]) -> [PASS][319] +2 other tests pass [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-10/igt@kms_pm_rpm@dpms-non-lpsp.html [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_pm_rpm@dpms-non-lpsp.html #### Warnings #### * igt@api_intel_bb@object-reloc-keep-cache: - shard-dg2: [SKIP][320] ([i915#8411]) -> [SKIP][321] ([i915#2575]) [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@api_intel_bb@object-reloc-keep-cache.html [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@api_intel_bb@object-reloc-keep-cache.html * igt@drm_fdinfo@virtual-busy-idle: - shard-dg2: [SKIP][322] ([i915#8414]) -> [SKIP][323] ([i915#11692]) +1 other test skip [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-3/igt@drm_fdinfo@virtual-busy-idle.html [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@drm_fdinfo@virtual-busy-idle.html * igt@gem_exec_fair@basic-pace-share: - shard-dg2: [SKIP][324] ([i915#3539] / [i915#4852]) -> [SKIP][325] ([i915#2575]) [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@gem_exec_fair@basic-pace-share.html [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_exec_fair@basic-pace-share.html * igt@gem_fenced_exec_thrash@no-spare-fences-busy: - shard-dg2: [SKIP][326] ([i915#4860]) -> [SKIP][327] ([i915#2575]) [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-2/igt@gem_fenced_exec_thrash@no-spare-fences-busy.html [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_fenced_exec_thrash@no-spare-fences-busy.html * igt@gem_lmem_swapping@smem-oom: - shard-dg2: [TIMEOUT][328] ([i915#5493]) -> [DMESG-WARN][329] ([i915#5493]) [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-8/igt@gem_lmem_swapping@smem-oom.html [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@gem_lmem_swapping@smem-oom.html * igt@gem_lmem_swapping@smem-oom@lmem0: - shard-dg2: [TIMEOUT][330] ([i915#5493]) -> [DMESG-WARN][331] ([i915#4936] / [i915#5493]) [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-8/igt@gem_lmem_swapping@smem-oom@lmem0.html [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@gem_lmem_swapping@smem-oom@lmem0.html * igt@gem_mmap_gtt@basic-small-copy-xy: - shard-dg2: [SKIP][332] ([i915#4077]) -> [SKIP][333] ([i915#2575]) +1 other test skip [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-11/igt@gem_mmap_gtt@basic-small-copy-xy.html [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_mmap_gtt@basic-small-copy-xy.html * igt@gem_mmap_wc@pf-nonblock: - shard-dg2: [SKIP][334] ([i915#4083]) -> [SKIP][335] ([i915#2575]) +1 other test skip [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-10/igt@gem_mmap_wc@pf-nonblock.html [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_mmap_wc@pf-nonblock.html * igt@gem_partial_pwrite_pread@reads-uncached: - shard-dg2: [SKIP][336] ([i915#3282]) -> [SKIP][337] ([i915#2575]) +1 other test skip [336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-3/igt@gem_partial_pwrite_pread@reads-uncached.html [337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_partial_pwrite_pread@reads-uncached.html * igt@gem_pxp@verify-pxp-execution-after-suspend-resume: - shard-dg2: [SKIP][338] ([i915#4270]) -> [SKIP][339] ([i915#2575]) [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html * igt@gem_render_copy@y-tiled-to-vebox-y-tiled: - shard-dg2: [SKIP][340] ([i915#5190] / [i915#8428]) -> [SKIP][341] ([i915#2575] / [i915#5190]) [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-11/igt@gem_render_copy@y-tiled-to-vebox-y-tiled.html [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@gem_render_copy@y-tiled-to-vebox-y-tiled.html * igt@i915_module_load@reload-with-fault-injection: - shard-tglu: [ABORT][342] ([i915#10887] / [i915#9697]) -> [ABORT][343] ([i915#9820]) [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-tglu-5/igt@i915_module_load@reload-with-fault-injection.html [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-tglu-3/igt@i915_module_load@reload-with-fault-injection.html - shard-mtlp: [ABORT][344] ([i915#10131] / [i915#9697]) -> [ABORT][345] ([i915#10131]) [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-mtlp-1/igt@i915_module_load@reload-with-fault-injection.html [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-mtlp-5/igt@i915_module_load@reload-with-fault-injection.html * igt@i915_pm_rps@min-max-config-loaded: - shard-dg2: [SKIP][346] ([i915#11681] / [i915#6621]) -> [SKIP][347] ([i915#2575]) [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-5/igt@i915_pm_rps@min-max-config-loaded.html [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@i915_pm_rps@min-max-config-loaded.html * igt@i915_selftest@mock: - shard-dg2: [DMESG-WARN][348] ([i915#1982] / [i915#9311]) -> [DMESG-WARN][349] ([i915#9311]) [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-11/igt@i915_selftest@mock.html [349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-1/igt@i915_selftest@mock.html - shard-rkl: [DMESG-WARN][350] ([i915#1982] / [i915#9311]) -> [DMESG-WARN][351] ([i915#9311]) [350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-rkl-5/igt@i915_selftest@mock.html [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-1/igt@i915_selftest@mock.html * igt@kms_addfb_basic@clobberred-modifier: - shard-dg2: [SKIP][352] ([i915#4212]) -> [SKIP][353] ([i915#2575]) [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-5/igt@kms_addfb_basic@clobberred-modifier.html [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_addfb_basic@clobberred-modifier.html * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs: - shard-dg2: [SKIP][354] ([i915#12042]) -> [SKIP][355] [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html * igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k: - shard-dg2: [SKIP][356] ([i915#7828]) -> [SKIP][357] ([i915#2575]) [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-8/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html * igt@kms_content_protection@lic-type-1: - shard-dg2: [SKIP][358] ([i915#9424]) -> [SKIP][359] ([i915#2575]) [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-3/igt@kms_content_protection@lic-type-1.html [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_content_protection@lic-type-1.html * igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size: - shard-dg2: [SKIP][360] ([i915#5354]) -> [SKIP][361] ([i915#2575]) [360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle: - shard-dg2: [SKIP][362] ([i915#4103] / [i915#4213]) -> [SKIP][363] ([i915#2575]) [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html * igt@kms_flip@2x-modeset-vs-vblank-race: - shard-dg2: [SKIP][364] -> [SKIP][365] ([i915#2575]) +3 other tests skip [364]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-5/igt@kms_flip@2x-modeset-vs-vblank-race.html [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_flip@2x-modeset-vs-vblank-race.html * igt@kms_frontbuffer_tracking@fbc-farfromfence-mmap-gtt: - shard-dg2: [SKIP][366] ([i915#8708]) -> [SKIP][367] +1 other test skip [366]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-farfromfence-mmap-gtt.html [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_frontbuffer_tracking@fbc-farfromfence-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite: - shard-dg2: [SKIP][368] ([i915#10433] / [i915#3458]) -> [SKIP][369] ([i915#3458]) +2 other tests skip [368]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite.html [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-10/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-onoff: - shard-dg2: [SKIP][370] ([i915#5354]) -> [SKIP][371] +9 other tests skip [370]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-10/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-onoff.html [371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-onoff.html * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary: - shard-dg2: [SKIP][372] ([i915#3458]) -> [SKIP][373] ([i915#10433] / [i915#3458]) [372]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-10/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html [373]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu: - shard-dg2: [SKIP][374] ([i915#3458]) -> [SKIP][375] +1 other test skip [374]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu.html [375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu.html * igt@kms_pm_dc@dc9-dpms: - shard-rkl: [SKIP][376] ([i915#4281]) -> [SKIP][377] ([i915#3361]) [376]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-rkl-5/igt@kms_pm_dc@dc9-dpms.html [377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-rkl-6/igt@kms_pm_dc@dc9-dpms.html * igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf: - shard-dg2: [SKIP][378] ([i915#11520]) -> [SKIP][379] [378]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-2/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html [379]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html * igt@kms_psr2_su@page_flip-p010: - shard-dg2: [SKIP][380] ([i915#9683]) -> [SKIP][381] [380]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-2/igt@kms_psr2_su@page_flip-p010.html [381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_psr2_su@page_flip-p010.html * igt@kms_psr@fbc-pr-cursor-render: - shard-dg2: [SKIP][382] ([i915#1072] / [i915#9732]) -> [SKIP][383] +4 other tests skip [382]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-8/igt@kms_psr@fbc-pr-cursor-render.html [383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_psr@fbc-pr-cursor-render.html * igt@kms_psr@psr-cursor-mmap-cpu: - shard-dg2: [SKIP][384] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][385] ([i915#1072] / [i915#9732]) +11 other tests skip [384]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-11/igt@kms_psr@psr-cursor-mmap-cpu.html [385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-3/igt@kms_psr@psr-cursor-mmap-cpu.html * igt@kms_vrr@flip-dpms: - shard-dg2: [SKIP][386] ([i915#3555]) -> [SKIP][387] ([i915#2575]) [386]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-2/igt@kms_vrr@flip-dpms.html [387]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@kms_vrr@flip-dpms.html * igt@perf@non-zero-reason: - shard-dg2: [FAIL][388] ([i915#9100]) -> [FAIL][389] ([i915#7484]) +1 other test fail [388]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-3/igt@perf@non-zero-reason.html [389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-5/igt@perf@non-zero-reason.html * igt@perf_pmu@busy-double-start: - shard-dg2: [FAIL][390] ([i915#4349]) -> [SKIP][391] ([i915#11692]) [390]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-2/igt@perf_pmu@busy-double-start.html [391]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@perf_pmu@busy-double-start.html * igt@tools_test@sysfs_l3_parity: - shard-dg2: [SKIP][392] ([i915#4818]) -> [SKIP][393] ([i915#2575] / [i915#4818]) [392]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8016/shard-dg2-11/igt@tools_test@sysfs_l3_parity.html [393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/shard-dg2-8/igt@tools_test@sysfs_l3_parity.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2 [i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055 [i915#10105]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10105 [i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131 [i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166 [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307 [i915#10333]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10333 [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433 [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434 [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656 [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072 [i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887 [i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131 [i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453 [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520 [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681 [i915#11692]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11692 [i915#11703]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11703 [i915#11717]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11717 [i915#11808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11808 [i915#11837]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11837 [i915#11895]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11895 [i915#12027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12027 [i915#12042]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12042 [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061 [i915#12092]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12092 [i915#12193]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12193 [i915#12231]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12231 [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769 [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825 [i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839 [i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982 [i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122 [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437 [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527 [i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575 [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587 [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658 [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672 [i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681 [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280 [i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842 [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856 [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023 [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116 [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281 [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282 [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297 [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299 [i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323 [i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361 [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458 [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539 [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555 [i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591 [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637 [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638 [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804 [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840 [i915#4036]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4036 [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077 [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083 [i915#4087]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4087 [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103 [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212 [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213 [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215 [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270 [i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281 [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349 [i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387 [i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473 [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525 [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537 [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538 [i915#4565]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4565 [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613 [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771 [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812 [i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816 [i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818 [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852 [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860 [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880 [i915#4885]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4885 [i915#4936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4936 [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190 [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286 [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289 [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354 [i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493 [i915#5882]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5882 [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956 [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095 [i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230 [i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245 [i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412 [i915#6493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6493 [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524 [i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590 [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621 [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880 [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944 [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953 [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116 [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118 [i915#7484]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7484 [i915#7582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7582 [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697 [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828 [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228 [i915#8292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8292 [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381 [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399 [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411 [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414 [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428 [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430 [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516 [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555 [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623 [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708 [i915#8810]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8810 [i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813 [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814 [i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053 [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067 [i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100 [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295 [i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311 [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318 [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323 [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412 [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423 [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424 [i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433 [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519 [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673 [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683 [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688 [i915#9697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9697 [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723 [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732 [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766 [i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808 [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809 [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812 [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820 [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906 [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917 [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_8016 -> IGTPW_11742 CI-20190529: 20190529 CI_DRM_15413: ceffbbae8df33f194ae06e0174dfb0a7d726b2f7 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_11742: 57d5e1175de54513890bf9465f99844405b367bb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_8016: 786f0469afc0665a02dd82bf17544868188fbdeb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11742/index.html [-- Attachment #2: Type: text/html, Size: 127622 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-10-08 6:08 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-09-13 10:44 [PATCH i-g-t 0/3] Switch the FFT library to meow_fft Kamil Konieczny 2024-09-13 10:44 ` [PATCH i-g-t 1/3] lib/uwildmat: Move to a dedicated vendored library directory Kamil Konieczny 2024-10-08 6:07 ` Peter Senna Tschudin 2024-09-13 10:44 ` [PATCH i-g-t 2/3] lib/vendor: Add the meow_fft library Kamil Konieczny 2024-10-08 6:06 ` Peter Senna Tschudin 2024-09-13 10:44 ` [PATCH i-g-t 3/3] lib/igt_audio: Replace GSL FFT usage with meow_fft Kamil Konieczny 2024-10-08 6:04 ` Peter Senna Tschudin 2024-10-08 6:08 ` Peter Senna Tschudin 2024-09-13 14:01 ` ✓ Fi.CI.BAT: success for Switch the FFT library to meow_fft Patchwork 2024-09-13 14:49 ` ✗ CI.xeBAT: failure " Patchwork 2024-09-14 4:53 ` ✗ CI.xeFULL: " Patchwork 2024-09-14 22:25 ` ✗ Fi.CI.IGT: " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox