commit | 772f0fde1c6f5dbdd741b8c79e626a97304ebc7e | [log] [tgz] |
---|---|---|
author | George Steed <george.steed@arm.com> | Tue Apr 23 20:28:02 2024 +0100 |
committer | Frank Barchard <fbarchard@chromium.org> | Mon Sep 16 04:35:47 2024 +0000 |
tree | 4c7e7010de1e06f750ec6f3ebc42071ef39fb589 | |
parent | 2dfb84b311c064dd0d2872c2f94607cf8d0aaf9c [diff] |
[AArch64] Use full Neon vectors in RGB565To{ARGB,UV,Y}Row_NEON The existing code only makes use of half of the vector lanes in the RGB565TOARGB macro. In the RGB565To{ARGB,Y} kernels we can load more data to allow using full vectors, adjusting the "any" kernel macros to match. For the RGB565ToUVRow kernel we already have plenty of data but currently call the macro twice as much as needed, so refactor the code to only call it once but operating with full vectors instead. Reduction in runtimes observed for selected micro-architectures: | RGB565ToARGBRow | RGB565ToUVRow | RGB565ToYRow Cortex-A53 | -35.2% | -28.8% | -31.1% Cortex-A55 | -32.5% | -34.4% | -42.9% Cortex-A510 | -21.6% | -27.7% | -47.2% Cortex-A76 | -0.9% | -42.0% | -21.4% Cortex-A720 | -28.6% | -37.2% | -26.1% Cortex-X1 | -3.2% | -42.3% | -23.4% Bug: b/42280945 Change-Id: Ib1f68e5b87cc05a1485bbe96cfef87e6ac119fc3 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5790974 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.