Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize u16/lowp pipeline on Arm #55

Open
RazrFalcon opened this issue Aug 27, 2022 · 0 comments
Open

Optimize u16/lowp pipeline on Arm #55

RazrFalcon opened this issue Aug 27, 2022 · 0 comments

Comments

@RazrFalcon
Copy link
Collaborator

RazrFalcon commented Aug 27, 2022

Currently we're 2-4x slower in some benchmarks on Apple M1. This is with ARM NEON.

Benchmark results: https://razrfalcon.github.io/tiny-skia/arm.html

  • u16 blend operations are 2x slower than Skia. No idea why. Maybe we should try using u16x8 lane instead of u16x16 for ARM
  • rectangle fill is like 6x slower during benchmarks for no reason, but only 2x slower when run separately
  • gradients are 2-3x slower, probably because we have to use f32x16, and the current f32<->u16 cast code doesn't use NEON. f32/highp is actually faster, which is bizarre

Otherwise, performance is decent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant