GPU Delay - A delay plugin running on a graphics card
-
- KVRAF
- 1871 posts since 17 May, 2005
Very interesting development. A question, i see many mentions of a dll that has to be installed manually, the d3dx_* one, why is this necessary?
I have a 9800pro 128mb videocard in my 1st daw, will i need to install a dll too?
I have a 9800pro 128mb videocard in my 1st daw, will i need to install a dll too?
-
Nils Schneider Nils Schneider https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=45370
- KVRist
- Topic Starter
- 279 posts since 22 Oct, 2004 from Neuss, Germany
grrrrrr.......duncanparsons wrote: FL does strange things to enable VST automation to be sample accurate, amongst other things. sampleframes=1 is not uncommon with it, so you will need to keep your own buffer for such situations
Just downloading the demo to check this.....
I'm not sure why this happens, I used the february SDK for directX, but I'm just downloading the newest one so this should no longer be necessary in the future. Unfortunately Microsoft doesn't allow to ship this dll....zeep wrote: A question, i see many mentions of a dll that has to be installed manually, the d3dx_* one, why is this necessary?
I have a 9800pro 128mb videocard in my 1st daw, will i need to install a dll too?
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
-
- KVRAF
- 8389 posts since 11 Apr, 2003 from back on the hillside again - but now with a garden!
- KVRAF
- 25039 posts since 12 Jul, 2003 from West Caprazumia
jens wrote:Nils Schneider wrote:Which drivers and which version do you use? An update to the latest forceware driver may help.
91.31
I'll check if there's a never version and if so will update it...
updating Forceware didn't help...
- KVRAF
- 25039 posts since 12 Jul, 2003 from West Caprazumia
duncanparsons wrote:His real name is Gol..
yeah, sure...
- KVRAF
- 4030 posts since 7 Sep, 2002
This could be done by using OpenGL (which is probably a bit wider available).
This thread proves me right of not releasing my experiments with convolution on GFX card.
It simply would not work on many computers/gfx card configurations thus causing frustration.
I now think that a special 'gpuhost' program should be created that should stay open when GPU plug-in is needed to be loaded. This will remove all small and big API calls associated with graphics cards, OpenGL or DirectX out of audio host environment. These things may slow-down things a lot there.
The 'gpuhost' program itself may work in background and perform CPU->GPU and GPU->CPU data transfers all the time. For best performance it should probably transfer 20 or 30 channel streams at once: this puts a limit on how many different GPU plug-ins may run and at which sample rate, but will guarantee a no-glitch operation. In cases of mixdown bouncing, where glitch-free operation is unnecessary, processing can be switched to 'poll' mode (for better than real-time performance).
GPU plug-ins will have to connect to that 'gpuhost' program and request an I/O stream. Since GPU processing is asynchronous in relation to native audio host processing, 'gpuhost' program should perform the necessary data synchronization and return processed data with standard delay (for example, 2048 samples - this can be made configurable).
In the extreme, this 'gpuhost' program can be made a standard application with some open API that can load plug-in vendor GPU code, and send parametric data from plug-in to GPU code: all in a way much like DSP cards do this.
BTW, it seems that triple buffering should be used with GPU processing. Double-buffering fails a lot.
This thread proves me right of not releasing my experiments with convolution on GFX card.
I now think that a special 'gpuhost' program should be created that should stay open when GPU plug-in is needed to be loaded. This will remove all small and big API calls associated with graphics cards, OpenGL or DirectX out of audio host environment. These things may slow-down things a lot there.
The 'gpuhost' program itself may work in background and perform CPU->GPU and GPU->CPU data transfers all the time. For best performance it should probably transfer 20 or 30 channel streams at once: this puts a limit on how many different GPU plug-ins may run and at which sample rate, but will guarantee a no-glitch operation. In cases of mixdown bouncing, where glitch-free operation is unnecessary, processing can be switched to 'poll' mode (for better than real-time performance).
GPU plug-ins will have to connect to that 'gpuhost' program and request an I/O stream. Since GPU processing is asynchronous in relation to native audio host processing, 'gpuhost' program should perform the necessary data synchronization and return processed data with standard delay (for example, 2048 samples - this can be made configurable).
In the extreme, this 'gpuhost' program can be made a standard application with some open API that can load plug-in vendor GPU code, and send parametric data from plug-in to GPU code: all in a way much like DSP cards do this.
BTW, it seems that triple buffering should be used with GPU processing. Double-buffering fails a lot.
-
Nils Schneider Nils Schneider https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=45370
- KVRist
- Topic Starter
- 279 posts since 22 Oct, 2004 from Neuss, Germany
This sounds quite good to me, good ideas. But I think for a first test release, it's not bad at all. Sure, there are always people that are requesting things that just cannot be handled (e.g. supporting Geforce 2 or intel extreme graphics 2 video cards ), but whatever you release: trouble is always there, even with commercial apps.
I released it because no other did, and someone HAS to prove that it's working, and it is
How far is your progress? Already something that someone is able to listen to, maybe as an offline process?
I released it because no other did, and someone HAS to prove that it's working, and it is
How far is your progress? Already something that someone is able to listen to, maybe as an offline process?
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
-
Nils Schneider Nils Schneider https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=45370
- KVRist
- Topic Starter
- 279 posts since 22 Oct, 2004 from Neuss, Germany
Ah i forgot to mention I can easily switch to OpenGL by just one line of code, but my video card doesn't support floating point render targets under openGL so I set it to D3D as default.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
-
- KVRAF
- 8389 posts since 11 Apr, 2003 from back on the hillside again - but now with a garden!
- KVRAF
- 4030 posts since 7 Sep, 2002
Of course, that convolution reverb I was referring is working. But it is working unstably. Since I was not coding it myself (other than VST implementation), I cannot change anything in it. But in any case, according to those ideas I've posted here, it needs a full re-implementing. Otherwise stable and commercially-competitive GPU processing is unrealizable.Nils Schneider wrote:How far is your progress? Already something that someone is able to listen to, maybe as an offline process?
However, absense of 64-bit floating point processing on graphics cards still puts GPU processing on a lower level sound quality-wise. Especially for convolution and FFT code which sound far from being pristine when calculated using 32-bit floats.
-
- KVRAF
- 2336 posts since 13 Oct, 2002 from Terra Firma
It seems to be working on my PC without glitches so something must be right. The only thing is the slight cpu load but I understand why this happens now.
I think it's worth a few devs getting together and pushing this further. The devs can then sell us more plugins and the video card makers make some money as we all upgrade to more powerful video cards to take advantage of these new plugins. It's a win - win situation as far as I can see.
I think it's worth a few devs getting together and pushing this further. The devs can then sell us more plugins and the video card makers make some money as we all upgrade to more powerful video cards to take advantage of these new plugins. It's a win - win situation as far as I can see.
-
- KVRAF
- 2336 posts since 13 Oct, 2002 from Terra Firma
The sound quality of the GPU Delay is as good as if not better than some of my paid for delays so it doesn't sound as if sound quality is compromised by using the GPU.
- KVRAF
- 4030 posts since 7 Sep, 2002
-
Nils Schneider Nils Schneider https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=45370
- KVRist
- Topic Starter
- 279 posts since 22 Oct, 2004 from Neuss, Germany
@Aleksey Vaneev I'm not deep enough into fft and convolution to say if 64 bit are really required to get a good sound quality, but I know that older radeon cards only have an internal resolution of 24 bit for all floating point values, while nvidia cards always had 32 bit (float) and 16 bit (half, which is 16bit floating point). So if you've tested on a radeon card, this may cause the bad sound quality
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

