Atomic vs. non-atomic...
I know that normally atomic operations provide completely different functionality so the decision to use atomic data operations (such as with the new shader buffer object from openGL 4.3) rather than non-atomic data storage and operations is usually based on what needs to be done. If it doesn't need to be atomic then generally the advice is to not make it so.
But for me I am cursed with too much outside the box thinking, and I've managed to find ways to perform what I want to do atomically or not atomically. And there are considerable benefits to the atomic route of doing things so I can't just decide to go with the non-atomic route too easily.
Thus I've come here is somewhat desperate need of advice (plz plz plz) because the thought of doing all the code and testing for two completely different versions of the incredibly complex mess I'm working with has got me pacing in circles...
In short, I haven't gotten I chance to set up any good performance evaluations with the new openGL4.3 additions and I'm wondering if anyone could give me an estimate of the compared performance of the following:
Transferring a large amount of data from very large indexed VBOs (data transfer is the bottleneck) to the shaders and then outputting a significantly smaller amount of data with TF
Or...
Transferring that same large amount of data from the new shader buffer storage into compute shaders atomically and then changing the same smaller amount of data in the shader buffer atomically from the shaders. Also it's fairly unlikely with this large data storage that the exact same value would be edited at the same time by multiple parallel processes, in case that matters...
Almost obviously the atomic shouldn't be as fast but I really need an estimate of how much slower it would be. And I think I can probably ignore what happens after the main data is transferred into the shaders in relation to performance. I know there are many factors to consider, but can anyone help me out with any estimate or explanation?




