I'm a bit unsure of the most efficient way to handle a large collection of structs. There are 2 different ways of do it:
Struct of arrays - create a separate buffer for each field
Array of structs - one buffer with the struct as elements
Looking around I've seen some people (mostly talking about Nvidia) saying that it's almost always better to use a struct of arrays. Would this not be true if your struct is one of the fetch sizes (e.g. 128 bits)?
I think the argument is that you generally don't access every field in a struct in a tight loop so you're wasting bandwidth loading lesser used elements. With a struct of arrays, you only load the elements you need as you need them.
If this assumption isn't true and you use every element in a struct in the critical path, then it doesn't really matter which way you do it.