| commit | 899bc483273331429b7297dfe4f34f10334afa11 | [log] [tgz] |
|---|---|---|
| author | George Steed <george.steed@arm.com> | Thu May 16 17:14:02 2024 +0100 |
| committer | Frank Barchard <fbarchard@chromium.org> | Mon Jul 08 20:27:54 2024 +0000 |
| tree | 37e3f47673ab9b0e7b84eff79d2c7346d8c2397e | |
| parent | 5236846b648418089d9d88b797ed1b7a5e03e907 [diff] |
[AArch64] Add SVE2 implementations of ARGBTo{RAW,RGB24}Row
There is no nice way of forming the TBL permute indices here since we
are operating on sets of three bytes at a time, so instead load the
appropriate indices from a static array. We can make use of SVE
predication to ensure we are operating on a multiple of three bytes for
the load/store instructions rather than needing to make use of more
expensive LD4 or ST3 instructions.
Reduction in runtime observed compared to the existing Neon
implementations:
| ARGBToRAWRow | ARGBToRGB24Row
Cortex-A510 | -50.8% | -19.9%
Cortex-A720 | -39.8% | -39.1%
Cortex-X2 | -66.5% | -51.9%
Bug: libyuv:973
Change-Id: Iaead678715a3d70d54cf823391272a6196836769
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5631544
Reviewed-by: Justin Green <greenjustin@google.com>
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
libyuv is an open source project that includes YUV scaling and conversion functionality.
See Getting started for instructions on how to get started developing.
You can also browse the docs directory for more documentation.