diff options
author | Darren Hsieh <darren.hsieh@sifive.com> | 2023-05-16 23:47:58 -0700 |
---|---|---|
committer | libyuv LUCI CQ <libyuv-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-06-13 00:40:39 +0000 |
commit | 873eaa3bbf5296f57193686573395e6b5cc99d74 (patch) | |
tree | 87c558ae432b2e43c903458a2fb46861ef791a19 /source/scale_argb.cc | |
parent | 29bcf021c68e5478e1cd0c1099122dbb10eb474e (diff) | |
download | libyuv-873eaa3bbf5296f57193686573395e6b5cc99d74.tar.gz |
[RVV] Enable Scale{ARGB,UV}RowDown{2,4,EVEN}_RVV
Run on SiFive internal FPGA:
Test case RVV function Speedup
I444ScaleDownBy3_Box ScaleAddRow_RVV+ScaleAddCols(scalar) 2.8
ARGBScaleDownBy2_None ScaleARGBRowDown2_RVV 2.2
ARGBScaleDownBy2_Linear ScaleARGBRowDown2Linear_RVV 5.0
ARGBScaleDownBy2_Box ScaleARGBRowDown2Box_RVV 4.3
ARGBScaleDownBy4_None ScaleARGBRowDownEven_RVV 1.2
ARGBScaleDownBy8_Box ScaleARGBRowDownEvenBox_RVV 3.2
ARGBScaleDownBy4_Box ScaleARGBRowDown2Box_RVV 4.5
I444ScaleDownBy2_None ScaleRowDown2_RVV 5.8
I444ScaleDownBy2_Linear ScaleRowDown2Linear_RVV 6.1
I444ScaleDownBy2_Box ScaleRowDown2Box_RVV 5.0
I444ScaleDownBy4_None ScaleRowDown4_RVV 3.6
I444ScaleDownBy4_Box ScaleRowDown4Box_RVV 3.5
UVScaleDownBy2_None ScaleUVRowDown2_RVV 5.8
UVScaleDownBy2_Linear ScaleUVRowDown2Linear_RVV 5.6
UVScaleDownBy2_Box ScaleUVRowDown2Box_RVV 4.1
UVScaleDownBy4_None ScaleUVRowDown4_RVV 1.7
UVScaleDownBy4_Box ScaleUVRowDown2Box_RVV 4.5
avg-speedup: 4
Note: Specialize ScaleUVRowDown with step_size=4 by ScaleUVRowDown4_RVV.
Bug: libyuv:956
Change-Id: If9604a6aadf681193f282507602c57c726332202
Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com>
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4601684
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Diffstat (limited to 'source/scale_argb.cc')
-rw-r--r-- | source/scale_argb.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/source/scale_argb.cc b/source/scale_argb.cc index ddd8d29e..214f932c 100644 --- a/source/scale_argb.cc +++ b/source/scale_argb.cc @@ -127,6 +127,15 @@ static void ScaleARGBDown2(int src_width, } } #endif +#if defined(HAS_SCALEARGBROWDOWN2_RVV) + if (TestCpuFlag(kCpuHasRVV)) { + ScaleARGBRowDown2 = + filtering == kFilterNone + ? ScaleARGBRowDown2_RVV + : (filtering == kFilterLinear ? ScaleARGBRowDown2Linear_RVV + : ScaleARGBRowDown2Box_RVV); + } +#endif if (filtering == kFilterLinear) { src_stride = 0; @@ -184,6 +193,11 @@ static void ScaleARGBDown4Box(int src_width, } } #endif +#if defined(HAS_SCALEARGBROWDOWN2_RVV) + if (TestCpuFlag(kCpuHasRVV)) { + ScaleARGBRowDown2 = ScaleARGBRowDown2Box_RVV; + } +#endif for (j = 0; j < dst_height; ++j) { ScaleARGBRowDown2(src_argb, src_stride, row, dst_width * 2); @@ -263,6 +277,12 @@ static void ScaleARGBDownEven(int src_width, } } #endif +#if defined(HAS_SCALEARGBROWDOWNEVEN_RVV) + if (TestCpuFlag(kCpuHasRVV)) { + ScaleARGBRowDownEven = + filtering ? ScaleARGBRowDownEvenBox_RVV : ScaleARGBRowDownEven_RVV; + } +#endif if (filtering == kFilterLinear) { src_stride = 0; |