[gmpi] Re: Reqs final draft

  • From: "Didier Dambrin" <didid@xxxxxxxxx>
  • To: <gmpi@xxxxxxxxxxxxx>
  • Date: Thu, 13 Jan 2005 14:18:51 +0100

In all cases it should define a FULL FPU control state, since the only goal here is to allow both host & plugins to be able to round to nearest (the most common) without having to change the FPU state.

I think we all agree that all exceptions should be masked, rounding to nearest (standard in all languages I guess). Now as for the precision.. 64bit or 80bits? It still matters for divisions.

It could be required that the plugin restores the original FPU state if it has to change it, but it'd be less efficient for it.


I think that this should be very clear, because it's important. In case a plugin had a built-in timer, and started to change the FPU state from the GUI thread at any time, there would be no way for the host to detect this. This is a problem for me with VSTi's. Several VSTi's change the FPU state to other rounding modes, and we have to restore the FPU state after the plugin's processing, parameter change, etc. And this still can't guarantee the plugin won't change the FPU state in other cases. You may think it should be the normal behavior of a plugin not to mess with the FPU state, or at least restore it properly, but apparently not for every programmer. And we can't even tell them it's a bug, because the VSTi specs aren't clear about it.


More, if you change the FPU state and don't clear pending exceptions before, you'll get an exception.








   Yes, especially if this could be set up as a mechanism whereby it's
the host's responsibility to ensure that the plugin audio processing
thread always takes place in a NaN - free context without the plugin
having to fiddle with FPU registers/add noise/use offsets ;-)

NaN-free? i don't understand what you might mean by that ... I agree with Angus that we need to define the rules for these shared resources (other examples might include X colormaps, which are vaguely analogous to part of a resource context in MacOS). But NaN-free? what happens when a plugin divides by zero?


---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission.

Archive: //www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe




----------------------------------------------------------------------
Generalized Music Plugin Interface (GMPI) public discussion list
Participation in this list is contingent upon your abiding by the
following rules:  Please stay on topic.  You are responsible for your own
words.  Please respect your fellow subscribers.  Please do not
redistribute anyone else's words without their permission.

Archive: //www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe

Other related posts: