ryukau / VSTPlugins

Uhhyou Plugins VST 3 repository.

Home Page:https://ryukau.github.io/VSTPlugins/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Port x86_64 Specific Plugins to aarch64

ryukau opened this issue · comments

commented

This issue is related to #17 and #21.

Following plugins are only available on x86_64 platforms.

  • CubicPadSynth
  • EnvelopedSine
  • EsPhaser
  • IterativeSinCluster

The reason is dependency to x86_64 SIMD instructions through vector class library (VCL).

A band-aid solution is available. Passing -DDISABLE_X86_64_PLUGINS=TRUE option to CMake disables the build of affected plugins.

Proper solution requires some work. A problem is that the new code must be as fast as existing code. Otherwise they won't run on real-time due to high CPU load.

Plans

  • Plan A: Use sse2neon (Issue 57 in VCL repository).
  • Plan B: Fork VCL and replace x86_64 SIMD calls to simde.
  • Plan C: Plain rewrite using simde.

Failed Attempts

Replacing Vec16f to C++ standard library container ended up high CPU load that is unusable in real-time.

  • std::valarray (EsPhaser on non_simd_valarray branch)
  • std::array (EsPhaser on non_simd_array branch)

TODO: Remove these branches when this issue is done.

commented

Plan A is implemented on add_sse2neon branch. VCL is forked to omit x86_64 assembly part (link to the fork).

commented

Plan A seems to not working on Linux aarch64 (reference). The error might be solved by casting -1 to char, but it's not good idea to patch without understanding the underlying things. It feels like triggering unintentional UB.

I couldn't figure out a way for plan B.

Currently heading in to plan C.

commented

add_sse2neon is merged into develop.

Context: #21 (comment)

commented

Now the aarch64 code path is live on master branch.

Tag: UhhyouPlugins0.50.0