Message ID | CAEa-L+ujt036A2BVsgzTOMQcbLGpHw9HWnPSgfC8+GLV9rVjzg@mail.gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/3] lvac/svqenc: add ff_svq1enc_init | expand |
Context | Check | Description |
---|---|---|
andriy/configure_x86 | warning | Failed to apply patch |
yinshiyou/configure_loongarch64 | warning | Failed to apply patch |
On Fri, 29 Dec 2023, flow gg wrote:
> Tests on x86 might fail, possibly due to a 16-bit sub overflow
If this only happens in checkasm but not in real life use, it means that
the checkasm test input is out of range, and we should try to mimic the
real input data.
If the issue is off-by-one due to rounding, we could allow it by making a
comparison per element, and tolerate a certain diff (maybe only on x86).
But if it is an actual overflow on valid input data, the x86 asm
definitely needs to be fixed, by someone... Worst case, we might want to
disable that checkasm test on x86 temporarily.
// Martin
On 12/29/2023 9:16 AM, Martin Storsjö wrote: > On Fri, 29 Dec 2023, flow gg wrote: > >> Tests on x86 might fail, possibly due to a 16-bit sub overflow > > If this only happens in checkasm but not in real life use, it means that > the checkasm test input is out of range, and we should try to mimic the > real input data. > > If the issue is off-by-one due to rounding, we could allow it by making > a comparison per element, and tolerate a certain diff (maybe only on x86). > > But if it is an actual overflow on valid input data, the x86 asm > definitely needs to be fixed, by someone... Worst case, we might want to > disable that checkasm test on x86 temporarily. The function subtracts an int16 from an int8, whose result may not fit on an int16. The x86 asm expects it to do, hence the failures. I don't know if such cases exist in real world files, so like you said, if they don't then the test should generate in-range input. But if they do, i'll fix the x86 asm (sadly, this means sse4 will be required instead of sse2).
On Fri, 29 Dec 2023, James Almer wrote: > On 12/29/2023 9:16 AM, Martin Storsjö wrote: >> On Fri, 29 Dec 2023, flow gg wrote: >> >>> Tests on x86 might fail, possibly due to a 16-bit sub overflow >> >> If this only happens in checkasm but not in real life use, it means > that >> the checkasm test input is out of range, and we should try to mimic the >> real input data. >> >> If the issue is off-by-one due to rounding, we could allow it by making >> a comparison per element, and tolerate a certain diff (maybe only on > x86). >> >> But if it is an actual overflow on valid input data, the x86 asm >> definitely needs to be fixed, by someone... Worst case, we might want > to >> disable that checkasm test on x86 temporarily. > > The function subtracts an int16 from an int8, whose result may not fit > on an int16. The x86 asm expects it to do, hence the failures. > > I don't know if such cases exist in real world files, so like you said, > if they don't then the test should generate in-range input. But if they > do, i'll fix the x86 asm (sadly, this means sse4 will be required > instead of sse2). I think it's probably best to limit the checkasm inputs that don't overflow, for now. // Martin
Le 29 décembre 2023 12:57:01 GMT+01:00, flow gg <hlefthleft@gmail.com> a écrit :
>Tests on x86 might fail, possibly due to a 16-bit sub overflow
I don't know anything about the SVQ encoder. Still, especially for an encoder, overflows are probably not expected. So then it is as Martin wrote.
Okay, it has been modified in this reply. Martin Storsjö <martin@martin.st> 于2023年12月29日周五 22:35写道: > On Fri, 29 Dec 2023, James Almer wrote: > > > On 12/29/2023 9:16 AM, Martin Storsjö wrote: > >> On Fri, 29 Dec 2023, flow gg wrote: > >> > >>> Tests on x86 might fail, possibly due to a 16-bit sub overflow > >> > >> If this only happens in checkasm but not in real life use, it means > > that > >> the checkasm test input is out of range, and we should try to mimic the > >> real input data. > >> > >> If the issue is off-by-one due to rounding, we could allow it by making > >> a comparison per element, and tolerate a certain diff (maybe only on > > x86). > >> > >> But if it is an actual overflow on valid input data, the x86 asm > >> definitely needs to be fixed, by someone... Worst case, we might want > > to > >> disable that checkasm test on x86 temporarily. > > > > The function subtracts an int16 from an int8, whose result may not fit > > on an int16. The x86 asm expects it to do, hence the failures. > > > > I don't know if such cases exist in real world files, so like you said, > > if they don't then the test should generate in-range input. But if they > > do, i'll fix the x86 asm (sadly, this means sse4 will be required > > instead of sse2). > > I think it's probably best to limit the checkasm inputs that don't > overflow, for now. > > // Martin > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >
On 12/30/2023 10:59 AM, flow gg wrote: > Okay, it has been modified in this reply. > From d62f363e3aad534c7ead5f3015029b3e7cbbff46 Mon Sep 17 00:00:00 2001 > From: sunyuechi <sunyuechi@iscas.ac.cn> > Date: Fri, 29 Dec 2023 13:09:21 +0800 > Subject: [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test > > --- > tests/checkasm/Makefile | 1 + > tests/checkasm/checkasm.c | 3 ++ > tests/checkasm/checkasm.h | 1 + > tests/checkasm/svq1enc.c | 68 +++++++++++++++++++++++++++++++++++++++ > tests/fate/checkasm.mak | 1 + > 5 files changed, 74 insertions(+) > create mode 100644 tests/checkasm/svq1enc.c > > diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile > index 47328b59b9..f507e99993 100644 > --- a/tests/checkasm/Makefile > +++ b/tests/checkasm/Makefile > @@ -34,6 +34,7 @@ AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dsp.o > AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o > AVCODECOBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o > AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o > +AVCODECOBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o > AVCODECOBJS-$(CONFIG_TAK_DECODER) += takdsp.o > AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o > AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o > diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c > index 57613af5f7..ff07d8b18d 100644 > --- a/tests/checkasm/checkasm.c > +++ b/tests/checkasm/checkasm.c > @@ -162,6 +162,9 @@ static const struct { > #if CONFIG_PIXBLOCKDSP > { "pixblockdsp", checkasm_check_pixblockdsp }, > #endif > + #if CONFIG_SVQ1_ENCODER > + { "svq1enc", checkasm_check_svq1enc }, > + #endif > #if CONFIG_TAK_DECODER > { "takdsp", checkasm_check_takdsp }, > #endif > diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h > index d7974772d3..c1f11cfa36 100644 > --- a/tests/checkasm/checkasm.h > +++ b/tests/checkasm/checkasm.h > @@ -82,6 +82,7 @@ void checkasm_check_nlmeans(void); > void checkasm_check_opusdsp(void); > void checkasm_check_pixblockdsp(void); > void checkasm_check_sbrdsp(void); > +void checkasm_check_svq1enc(void); > void checkasm_check_synth_filter(void); > void checkasm_check_sw_gbrp(void); > void checkasm_check_sw_rgb(void); > diff --git a/tests/checkasm/svq1enc.c b/tests/checkasm/svq1enc.c > new file mode 100644 > index 0000000000..065dd798ca > --- /dev/null > +++ b/tests/checkasm/svq1enc.c > @@ -0,0 +1,68 @@ > +/* > + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences (ISCAS). > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License along > + * with FFmpeg; if not, write to the Free Software Foundation, Inc., > + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > + */ > + > +#include "libavutil/mem.h" > +#include "libavutil/mem_internal.h" > + > +#include "libavcodec/svq1encdsp.h" > + > +#include "checkasm.h" > + > +#define BUF_SIZE 1024 > + > +#define randomize(buf, len) \ > + do { \ > + for (int i = 0; i < len; i++) \ > + buf[i] = ((rnd() % 65281) - 32641); \ > + } while (0) > + > +static void test_ssd_int8_vs_int16(SVQ1EncDSPContext *s) { > + declare_func(int, const int8_t *pix1, const int16_t *pix2, intptr_t size); > + > + int r1, r2; > + > + if (check_func(s->ssd_int8_vs_int16, "ssd_int8_vs_int16")) { > + LOCAL_ALIGNED_32(int8_t, p1, [BUF_SIZE]); This one should be LOCAL_ALIGNED_4(). See libavcodec/svq1_cb.h > + LOCAL_ALIGNED_32(int16_t, p2, [BUF_SIZE]); And this one LOCAL_ALIGNED_16(). See encoded_block_levels[] in libavcodec/svq1enc.c > + > + randomize(p1, BUF_SIZE); > + randomize(p2, BUF_SIZE); > + > + r1 = call_ref(p1, p2, BUF_SIZE); > + r2 = call_new(p1, p2, BUF_SIZE); > + > + if (r1 != r2) { > + fail(); > + } > + > + bench_new(p1, p2, BUF_SIZE); > + } > + > + report("ssd_int8_vs_int16"); > + > +} > + > +void checkasm_check_svq1enc(void) > +{ > + SVQ1EncDSPContext s = { 0 }; > + ff_svq1enc_init(&s); > + > + test_ssd_int8_vs_int16(&s); > +} > diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak > index 9e04b1b3cb..3d775549ee 100644 > --- a/tests/fate/checkasm.mak > +++ b/tests/fate/checkasm.mak > @@ -34,6 +34,7 @@ FATE_CHECKASM = fate-checkasm-aacencdsp \ > fate-checkasm-opusdsp \ > fate-checkasm-pixblockdsp \ > fate-checkasm-sbrdsp \ > + fate-checkasm-svq1enc \ > fate-checkasm-synth_filter \ > fate-checkasm-sw_gbrp \ > fate-checkasm-sw_rgb \ > -- > 2.43.0 >
Thank you, I learned this and updated it in this reply. James Almer <jamrial@gmail.com> 于2023年12月30日周六 22:46写道: > On 12/30/2023 10:59 AM, flow gg wrote: > > Okay, it has been modified in this reply. > > > From d62f363e3aad534c7ead5f3015029b3e7cbbff46 Mon Sep 17 00:00:00 2001 > > From: sunyuechi <sunyuechi@iscas.ac.cn> > > Date: Fri, 29 Dec 2023 13:09:21 +0800 > > Subject: [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test > > > > --- > > tests/checkasm/Makefile | 1 + > > tests/checkasm/checkasm.c | 3 ++ > > tests/checkasm/checkasm.h | 1 + > > tests/checkasm/svq1enc.c | 68 +++++++++++++++++++++++++++++++++++++++ > > tests/fate/checkasm.mak | 1 + > > 5 files changed, 74 insertions(+) > > create mode 100644 tests/checkasm/svq1enc.c > > > > diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile > > index 47328b59b9..f507e99993 100644 > > --- a/tests/checkasm/Makefile > > +++ b/tests/checkasm/Makefile > > @@ -34,6 +34,7 @@ AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += > jpeg2000dsp.o > > AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o > > AVCODECOBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o > > AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o > hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o > > +AVCODECOBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o > > AVCODECOBJS-$(CONFIG_TAK_DECODER) += takdsp.o > > AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o > > AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o > > diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c > > index 57613af5f7..ff07d8b18d 100644 > > --- a/tests/checkasm/checkasm.c > > +++ b/tests/checkasm/checkasm.c > > @@ -162,6 +162,9 @@ static const struct { > > #if CONFIG_PIXBLOCKDSP > > { "pixblockdsp", checkasm_check_pixblockdsp }, > > #endif > > + #if CONFIG_SVQ1_ENCODER > > + { "svq1enc", checkasm_check_svq1enc }, > > + #endif > > #if CONFIG_TAK_DECODER > > { "takdsp", checkasm_check_takdsp }, > > #endif > > diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h > > index d7974772d3..c1f11cfa36 100644 > > --- a/tests/checkasm/checkasm.h > > +++ b/tests/checkasm/checkasm.h > > @@ -82,6 +82,7 @@ void checkasm_check_nlmeans(void); > > void checkasm_check_opusdsp(void); > > void checkasm_check_pixblockdsp(void); > > void checkasm_check_sbrdsp(void); > > +void checkasm_check_svq1enc(void); > > void checkasm_check_synth_filter(void); > > void checkasm_check_sw_gbrp(void); > > void checkasm_check_sw_rgb(void); > > diff --git a/tests/checkasm/svq1enc.c b/tests/checkasm/svq1enc.c > > new file mode 100644 > > index 0000000000..065dd798ca > > --- /dev/null > > +++ b/tests/checkasm/svq1enc.c > > @@ -0,0 +1,68 @@ > > +/* > > + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences > (ISCAS). > > + * > > + * This file is part of FFmpeg. > > + * > > + * FFmpeg is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License as published by > > + * the Free Software Foundation; either version 2 of the License, or > > + * (at your option) any later version. > > + * > > + * FFmpeg is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + * GNU General Public License for more details. > > + * > > + * You should have received a copy of the GNU General Public License > along > > + * with FFmpeg; if not, write to the Free Software Foundation, Inc., > > + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > > + */ > > + > > +#include "libavutil/mem.h" > > +#include "libavutil/mem_internal.h" > > + > > +#include "libavcodec/svq1encdsp.h" > > + > > +#include "checkasm.h" > > + > > +#define BUF_SIZE 1024 > > + > > +#define randomize(buf, len) \ > > + do { \ > > + for (int i = 0; i < len; i++) \ > > + buf[i] = ((rnd() % 65281) - 32641); \ > > + } while (0) > > + > > +static void test_ssd_int8_vs_int16(SVQ1EncDSPContext *s) { > > + declare_func(int, const int8_t *pix1, const int16_t *pix2, intptr_t > size); > > + > > + int r1, r2; > > + > > + if (check_func(s->ssd_int8_vs_int16, "ssd_int8_vs_int16")) { > > + LOCAL_ALIGNED_32(int8_t, p1, [BUF_SIZE]); > > This one should be LOCAL_ALIGNED_4(). See libavcodec/svq1_cb.h > > > + LOCAL_ALIGNED_32(int16_t, p2, [BUF_SIZE]); > > And this one LOCAL_ALIGNED_16(). See encoded_block_levels[] in > libavcodec/svq1enc.c > > > + > > + randomize(p1, BUF_SIZE); > > + randomize(p2, BUF_SIZE); > > + > > + r1 = call_ref(p1, p2, BUF_SIZE); > > + r2 = call_new(p1, p2, BUF_SIZE); > > + > > + if (r1 != r2) { > > + fail(); > > + } > > + > > + bench_new(p1, p2, BUF_SIZE); > > + } > > + > > + report("ssd_int8_vs_int16"); > > + > > +} > > + > > +void checkasm_check_svq1enc(void) > > +{ > > + SVQ1EncDSPContext s = { 0 }; > > + ff_svq1enc_init(&s); > > + > > + test_ssd_int8_vs_int16(&s); > > +} > > diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak > > index 9e04b1b3cb..3d775549ee 100644 > > --- a/tests/fate/checkasm.mak > > +++ b/tests/fate/checkasm.mak > > @@ -34,6 +34,7 @@ FATE_CHECKASM = fate-checkasm-aacencdsp > \ > > fate-checkasm-opusdsp > \ > > fate-checkasm-pixblockdsp > \ > > fate-checkasm-sbrdsp > \ > > + fate-checkasm-svq1enc > \ > > fate-checkasm-synth_filter > \ > > fate-checkasm-sw_gbrp > \ > > fate-checkasm-sw_rgb > \ > > -- > > 2.43.0 > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >
From 8bde7750ec7adc2437843e14d4be85fb900d1b16 Mon Sep 17 00:00:00 2001 From: sunyuechi <sunyuechi@iscas.ac.cn> Date: Fri, 29 Dec 2023 13:09:21 +0800 Subject: [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test --- tests/checkasm/Makefile | 1 + tests/checkasm/checkasm.c | 3 ++ tests/checkasm/checkasm.h | 1 + tests/checkasm/svq1enc.c | 68 +++++++++++++++++++++++++++++++++++++++ tests/fate/checkasm.mak | 1 + 5 files changed, 74 insertions(+) create mode 100644 tests/checkasm/svq1enc.c diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index 47328b59b9..f507e99993 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -34,6 +34,7 @@ AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dsp.o AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o AVCODECOBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o +AVCODECOBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o AVCODECOBJS-$(CONFIG_TAK_DECODER) += takdsp.o AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 57613af5f7..ff07d8b18d 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -162,6 +162,9 @@ static const struct { #if CONFIG_PIXBLOCKDSP { "pixblockdsp", checkasm_check_pixblockdsp }, #endif + #if CONFIG_SVQ1_ENCODER + { "svq1enc", checkasm_check_svq1enc }, + #endif #if CONFIG_TAK_DECODER { "takdsp", checkasm_check_takdsp }, #endif diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h index d7974772d3..c1f11cfa36 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -82,6 +82,7 @@ void checkasm_check_nlmeans(void); void checkasm_check_opusdsp(void); void checkasm_check_pixblockdsp(void); void checkasm_check_sbrdsp(void); +void checkasm_check_svq1enc(void); void checkasm_check_synth_filter(void); void checkasm_check_sw_gbrp(void); void checkasm_check_sw_rgb(void); diff --git a/tests/checkasm/svq1enc.c b/tests/checkasm/svq1enc.c new file mode 100644 index 0000000000..5d21abc8ad --- /dev/null +++ b/tests/checkasm/svq1enc.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences (ISCAS). + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with FFmpeg; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "libavutil/mem.h" +#include "libavutil/mem_internal.h" + +#include "libavcodec/svq1encdsp.h" + +#include "checkasm.h" + +#define BUF_SIZE 1024 + +#define randomize(buf, len) \ + do { \ + for (int i = 0; i < len; i++) \ + buf[i] = rnd(); \ + } while (0) + +static void test_ssd_int8_vs_int16(SVQ1EncDSPContext *s) { + declare_func(int, const int8_t *pix1, const int16_t *pix2, intptr_t size); + + int r1, r2; + + if (check_func(s->ssd_int8_vs_int16, "ssd_int8_vs_int16")) { + LOCAL_ALIGNED_32(int8_t, p1, [BUF_SIZE]); + LOCAL_ALIGNED_32(int16_t, p2, [BUF_SIZE]); + + randomize(p1, BUF_SIZE); + randomize(p2, BUF_SIZE); + + r1 = call_ref(p1, p2, BUF_SIZE); + r2 = call_new(p1, p2, BUF_SIZE); + + if (r1 != r2) { + fail(); + } + + bench_new(p1, p2, BUF_SIZE); + } + + report("ssd_int8_vs_int16"); + +} + +void checkasm_check_svq1enc(void) +{ + SVQ1EncDSPContext s = { 0 }; + ff_svq1enc_init(&s); + + test_ssd_int8_vs_int16(&s); +} diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak index 9e04b1b3cb..3d775549ee 100644 --- a/tests/fate/checkasm.mak +++ b/tests/fate/checkasm.mak @@ -34,6 +34,7 @@ FATE_CHECKASM = fate-checkasm-aacencdsp \ fate-checkasm-opusdsp \ fate-checkasm-pixblockdsp \ fate-checkasm-sbrdsp \ + fate-checkasm-svq1enc \ fate-checkasm-synth_filter \ fate-checkasm-sw_gbrp \ fate-checkasm-sw_rgb \ -- 2.43.0