Skip to content

[FEATURE] Port Krita to xsimd

Amy spark requested to merge lsegovia/krita:work/amyspark/xsimd-port-2 into master

This commit replaces our Vc backend with xsimd, QuantStack's SIMD offering backing the xtensor project.

This requires the following:

  • wholesale replacement of Vc with xsimd alternatives
  • implementation of dispatching against the xsimd::generic architecture (i.e. Vc::ScalarImpl)
  • implementation of rudimentary gather-scatter and integer rounding ops

This brings Arm support to our backend for Free(tm).

TODO

  • Correct implementation of target architecture detection
  • Vc's will not work on Android or on a cross-compiled architecture
  • Simplification of the xsimd Vc-ported CMake macros
  • A way to make the benchmarks use the highest available dispatchable instruction set

Test Plan

Build Krita with xsimd. Check that you can paint without glitches.

Formalities Checklist

  • I confirmed this builds.
  • I confirmed Krita ran and the relevant functions work.
  • I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!)
  • I made sure my commits build individually and have good descriptions as per KDE guidelines.
  • I made sure my code conforms to the standards set in the HACKING file.
  • I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy.
Edited by Amy spark

Merge request reports