diff options
| author | JosJuice <josjuice@gmail.com> | 2026-10-04 14:44:04 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2026-10-11 10:45:11 +0200 |
| commit | 6103e4f5c6215ce57d855d99ab714fc0f52e6fc5 (patch) | |
| tree | 31a984ca7e546e591c04ec064c759bac12c650b9 /Source/Core/InputCommon/ControllerInterface | |
| parent | d57e268691e6520f776dde63f814754efaf4e2eb (diff) | |
VideoCommon: Add TextureDecoder_ARM64.cpp
We already have x64 SIMD implementations for decoding most texture
formats. This commit adds AArch64 SIMD implementations for all texture
formats except the XFB format. (AArch64 was previously using the
non-SIMD implementations from TextureDecoder_Generic.cpp.)
I left a few TODO comments about things that could be improved using
optional ISA extensions. I don't have any immediate plans to work on
these.
Performance numbers from the unit test are available below. Note that
the unit test fits relatively well in cache, so real workloads might
spend more time waiting on memory, which could lead to smaller
differences between the old and new implementation.
Before:
I4 took 2676 ns on average (36 iterations)
I8 took 3961 ns on average (36 iterations)
IA4 took 7304 ns on average (36 iterations)
IA8 took 4555 ns on average (36 iterations)
RGB565 took 12146 ns on average (36 iterations)
RGB5A3 took 33155 ns on average (36 iterations)
RGBA8 took 3702 ns on average (36 iterations)
C4 (IA8) took 9149 ns on average (36 iterations)
C4 (RGB565) took 19398 ns on average (36 iterations)
C4 (RGB5A3) took 28533 ns on average (36 iterations)
C8 (IA8) took 6766 ns on average (36 iterations)
C8 (RGB565) took 15577 ns on average (36 iterations)
C8 (RGB5A3) took 18906 ns on average (36 iterations)
C14X2 (IA8) took 10603 ns on average (36 iterations)
C14X2 (RGB565) took 20700 ns on average (36 iterations)
C14X2 (RGB5A3) took 38878 ns on average (36 iterations)
CMPR took 6205 ns on average (36 iterations)
After:
I4 took 2086 ns on average (36 iterations)
I8 took 1699 ns on average (36 iterations)
IA4 took 1522 ns on average (36 iterations)
IA8 took 1673 ns on average (36 iterations)
RGB565 took 2443 ns on average (36 iterations)
RGB5A3 took 3922 ns on average (36 iterations)
RGBA8 took 1983 ns on average (36 iterations)
C4 (IA8) took 1646 ns on average (36 iterations)
C4 (RGB565) took 2057 ns on average (36 iterations)
C4 (RGB5A3) took 1670 ns on average (36 iterations)
C8 (IA8) took 3765 ns on average (36 iterations)
C8 (RGB565) took 4275 ns on average (36 iterations)
C8 (RGB5A3) took 5146 ns on average (36 iterations)
C14X2 (IA8) took 5121 ns on average (36 iterations)
C14X2 (RGB565) took 5572 ns on average (36 iterations)
C14X2 (RGB5A3) took 7142 ns on average (36 iterations)
CMPR took 3250 ns on average (36 iterations)
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface')
0 files changed, 0 insertions, 0 deletions
