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.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.cc')
-rw-r--r-- | source/scale.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source/scale.cc b/source/scale.cc index 80b030dc..1cda2234 100644 --- a/source/scale.cc +++ b/source/scale.cc @@ -135,6 +135,14 @@ static void ScalePlaneDown2(int src_width, } } #endif +#if defined(HAS_SCALEROWDOWN2_RVV) + if (TestCpuFlag(kCpuHasRVV)) { + ScaleRowDown2 = filtering == kFilterNone + ? ScaleRowDown2_RVV + : (filtering == kFilterLinear ? ScaleRowDown2Linear_RVV + : ScaleRowDown2Box_RVV); + } +#endif if (filtering == kFilterLinear) { src_stride = 0; @@ -312,6 +320,11 @@ static void ScalePlaneDown4(int src_width, } } #endif +#if defined(HAS_SCALEROWDOWN4_RVV) + if (TestCpuFlag(kCpuHasRVV)) { + ScaleRowDown4 = filtering ? ScaleRowDown4Box_RVV : ScaleRowDown4_RVV; + } +#endif if (filtering == kFilterLinear) { src_stride = 0; @@ -971,6 +984,11 @@ static void ScalePlaneBox(int src_width, } } #endif +#if defined(HAS_SCALEADDROW_RVV) + if (TestCpuFlag(kCpuHasRVV)) { + ScaleAddRow = ScaleAddRow_RVV; + } +#endif for (j = 0; j < dst_height; ++j) { int boxheight; |