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

Switch to std::simd #88

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Switch to std::simd #88

wants to merge 2 commits into from

Conversation

RazrFalcon
Copy link
Collaborator

TODO:

  • f32 pipeline is a bit broken. Specifically gradients and patterns. No idea why. Maybe due to rounding.
  • f32 pipeline is up to 40% slower on aarch64. Should start with fixing color_burn. Maybe Mask::select is not getting vectorized?
  • Bench on x86.
  • Make sure output on x86 and aarch64 is identical.
  • Figure out what to do with simd::StdFloat and no_std.
  • Figure out what to do with the old f32x8::recip_fast method.
  • Wait until std::simd will become stable...

Some methods in the u16 pipeline are up to 20% faster on aarch64, which is very good.

Gradients in the u16 pipeline are slightly different because of explicit mul_add instead of a manual f * m + a.

Closes #59

@notgull
Copy link

notgull commented May 27, 2023

Not sure if you're planning on releasing this soon, but I would be against making tiny-skia a nightly-only package. It's currently relied on by winit and theo, which are not nightly-only and would likely be opposed to becoming nighly-only.

@RazrFalcon
Copy link
Collaborator Author

@notgull

Wait until std::simd will become stable...

@notgull
Copy link

notgull commented May 27, 2023

Ah, my bad, I missed that option. Thanks!

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

Successfully merging this pull request may close these issues.

Try using std::simd
2 participants