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.