PDA

View Full Version : What do vendors says about VAOs?



DarioCiao!
09-23-2015, 04:10 AM
I know the dispute on whatever VAOs should be used or not showing various benchmarks etc.

But in the end, can anyone cite sources from video cards vendors about why VAO are slower (if really slower)?

I tried a google for


site:amd.com slow vao

site:nvidia.com slow vao

site:intel.com slow vao

without finding anything (and I'm sorry If I skipped some manufacturer I was not aware of).

mhagain
09-23-2015, 07:11 AM
http://www.openglsuperbible.com/2013/12/09/vertex-array-performance/

Written by Graham Sellers, AMD's OpenGL guy, but should probably not be viewed as a formal statement from AMD.

DarioCiao!
09-23-2015, 08:56 AM
http://www.openglsuperbible.com/2013/12/09/vertex-array-performance/

Written by Graham Sellers, AMD's OpenGL guy, but should probably not be viewed as a formal statement from AMD.

I readed that, but I wasn't aware he was an AMD employe.. I suppose I have to "enable" both ways, and use wichever is faster on target machine ^^. According to other (less official sources: Valve plus some indie developers around) it is best avoiding VAOs.

Still can't find any discussion on vendors forum and just guessing why such feature got into a standard if neither of vendors were able to implement it efficiently.

Aleksandar
09-23-2015, 09:42 AM
I hesitated whether to post any comment on this thread, but such naive question provoked me to write a line or two.

Well, if you want to shoot a rabbit, would you use a heavy artillery or a rifle? Of course, you could do the job with a battalion of howitzers, but it would be more efficiently done with a single rifle (even better if it is a sniper). VAO is a heavy artillery. If you have a lot of references to change at once, I bet no other way could beat VAO. On the other hand, if you can change just a few, VAO is an overkill.

If you know what you are doing and have a low-level access to assets, probably minimizing state/reference changing would outperform VAO. However, VAO is a higher level of abstraction that enables less optimized approaches to gain reasonable speed. Most of the people don't have any clue what actually drivers do for them. How many checking and optimizations. When the time of Vulkan comes (if it comes, and I really hope it would), we all will be more aware of that. I'm sorry for the digression, Vulkan and the future APIs are another story...

mhagain
09-23-2015, 10:44 AM
Just for your info, my own personal benchmarks - which are appropriate only to the use-case I was coding at the time - were that VAOs were in the order of 5% slower. Despite that I used them anyway; with the performance I was already getting 5% was perfectly acceptable, and they went a long way towards cleaning up state management of attrib arrays.

I haven't benchmarked VAOs with vertex attrib binding.