Send the VST2 transport info along with processing

And cache it during the processing cycle. This greatly reduces the
overhead of bridging VST2 plugins.
This commit is contained in:
Robbert van der Helm
2021-04-29 00:32:25 +02:00
parent 6a3c726acf
commit 1deb4cf664
5 changed files with 95 additions and 55 deletions
+9
View File
@@ -10,6 +10,15 @@ Versioning](https://semver.org/spec/v2.0.0.html).
### Added
- During VST2 audio processing calls, yabridge will now immediately send the
current transport information along with the audio buffers. This lets us cache
this information during the processing call, which significantly reduce the
overhead of bridging VST2 plugins by avoiding one otherwise mandatory back and
forth function call between yabridge's plugin and the Wine plugin host. This
has an even greater impact on plugins like _SWAM Cello_ that request this
information repeatedly for every sample they process. Previously yabridge had
a `cache_time_info` compatibility option to mitigate the performance hit for
those plugins, but this new caching behaviour supercedes that.
- We now always force the CPU's flush-to-zero flag to be set when processing
audio. Most plugins will already do this themselves, but plugins like _Kush
Audio REDDI_ and _Expressive E Noisy_ that don't will otherwise suffer from