mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-10-28 18:07:12 +08:00
Replace rshrn2 with 2 8 byte registers and stp All benchmarks run at 1280×720, 1000 iterations (taskset c0): Function (1280x720 1000x) | OldNEON | NewNEON | OldSVE2 | NewSVE2 -------------------------------+---------+---------+---------+-------- TestInterpolatePlane (8-bit) | 76 ms | 66 ms | 125 ms | 34 ms TestInterpolatePlane_16 | 195 ms | 66 ms | 195 ms | 64 ms TestARGBInterpolate (50/50) | 104 ms | 104 ms | 128 ms | 89 ms ARGBInterpolate0_Opt (0%) | 133 ms | 128 ms | 148 ms | 145 ms ARGBInterpolate64_Opt (25%) | 211 ms | 181 ms | 244 ms | 222 ms ARGBInterpolate128_Opt (50%) | 182 ms | 178 ms | 278 ms | 176 ms ARGBInterpolate192_Opt (75%) | 211 ms | 173 ms | 223 ms | 209 ms ARGBInterpolate255_Opt (99%) | 211 ms | 183 ms | 315 ms | 221 ms ────── Function (1280x720 1000x) | OldNEON | NewNEON | OldSVE2 | NewSVE2 -------------------------------+---------+---------+---------+-------- TestInterpolatePlane (8-bit) | 164 ms | 124 ms | 119 ms | 50 ms TestInterpolatePlane_16 | 211 ms | 129 ms | 138 ms | 75 ms TestARGBInterpolate (50/50) | 159 ms | 159 ms | 210 ms | 166 ms ARGBInterpolate0_Opt (0%) | 92 ms | 92 ms | 148 ms | 138 ms ARGBInterpolate64_Opt (25%) | 223 ms | 223 ms | 232 ms | 232 ms ARGBInterpolate128_Opt (50%) | 130 ms | 130 ms | 232 ms | 195 ms ARGBInterpolate192_Opt (75%) | 223 ms | 223 ms | 232 ms | 232 ms ARGBInterpolate255_Opt (99%) | 223 ms | 223 ms | 232 ms | 232 ms Platform | NEON | SVE2 | Result --------------------+--------+--------+--------------- MediaTek Cortex-C1 | 47 ms | 34 ms | SVE2 1.38x win Qualcomm Oryon v3 | 87 ms | 73 ms | SVE2 1.19x win Testing: blaze test --config=android_arm64 //third_party/libyuv:libyuv_test --test_filter="*TestInterpolatePlane*" Bug: None Change-Id: I503ce5a1269da5e1c5950c6a2c5ce81ddf4aaca5 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/8216829 Commit-Queue: Frank Barchard <fbarchard@google.com> Reviewed-by: George Steed <george.steed@arm.com> Reviewed-by: Wan-Teh Chang <wtc@google.com> |
||
|---|---|---|
| build_overrides | ||
| docs | ||
| include | ||
| infra/config | ||
| riscv_script | ||
| source | ||
| tools_libyuv | ||
| unit_test | ||
| util | ||
| .clang-format | ||
| .gitignore | ||
| .gn | ||
| .vpython3 | ||
| Android.bp | ||
| Android.mk | ||
| AUTHORS | ||
| BUILD.bazel | ||
| BUILD.gn | ||
| CM_linux_packages.cmake | ||
| CMakeLists.txt | ||
| codereview.settings | ||
| DEPS | ||
| DIR_METADATA | ||
| download_vs_toolchain.py | ||
| GEMINI.md | ||
| libyuv.bzl | ||
| libyuv.gni | ||
| libyuv.gyp | ||
| libyuv.gypi | ||
| LICENSE | ||
| linux.mk | ||
| OWNERS | ||
| PATENTS | ||
| PRESUBMIT.py | ||
| public.mk | ||
| pylintrc | ||
| README.chromium | ||
| README.md | ||
| winarm.mk | ||
| WORKSPACE.bazel | ||
libyuv is an open source project that includes YUV scaling and conversion functionality.
- Scale YUV to prepare content for compression, with point, bilinear or box filter.
- Convert to YUV from webcam formats for compression.
- Convert to RGB formats for rendering/effects.
- Rotate by 90/180/270 degrees to adjust for mobile devices in portrait mode.
- Optimized for SSSE3/AVX2 on x86/x64.
- Optimized for Neon/SVE2/SME on Arm.
- Optimized for MSA on Mips.
- Optimized for RVV on RISC-V.
Development
See Getting started for instructions on how to get started developing.
You can also browse the docs directory for more documentation.