I was looking for the equivalent of the VAR extension on ATI. I know VAR is Nvidia specific, but I was hoping ATI also had similar functionality. I cannot use VBO because the target hardware is 1st generation Hardware T&L, ie Geforce II, and
the original Radeon. Thanks.
ATI’s extension is ATI_vertex_array_object, which is supported on Radeon 7200 and up. These cards also support ARB_vertex_buffer_object, though. Note that the Radeon 7000 (aka Radeon VE), however, does not support either of these extensions. Basically, just skip the ATI extension and go right to VBO.
Yeah, I forgot about those other two extensions. . . ATI_element_array is only supported on Radeon 8500 and higher, but ATI_map_object_buffer will work on anything as old as a Radeon 7200.
As far as i know, only NV boards can store data in VRAM (through VAR/VBO). Generally, using VBO or VAO on ATI boards, data are stored in AGP.
Maybe it has changed with latest ATI boards?, would be interesting to know about it.
As far as i know, only NV boards can store data in VRAM (through VAR/VBO).
How would you know? It’s not like either of the two fast vertex array extensions (VAO/VBO) that ATi supports tells you where the vertices are.
Indeed, from various tests that have been conducted, ATi cards tend to be a bit faster at vertex throughput through VBO than nVidia cards. Of course, some of this could be due to unoptimized data formats that ATi cards accept but nVidia ones don’t, or other things of the like.
Originally posted by Korval: Indeed, from various tests that have been conducted, ATi cards tend to be a bit faster at vertex throughput through VBO than nVidia cards.
really?
What boards were you using?
Just to know… i got only 7000 and 8500LE series here.
It’s nice if it has been improved on 9xxx.
Tom’s demo on delphi3d.net can go up to 130 MTris/sec on a Radeon 9700. A Geforce fx does not go over 90 MTris/sec (i think -can’t remember the exact number).
In any case, ATI boards store data in video memory first, then in AGP memory if not enough video memory is available, then system RAM. However, they do not have a smart “switch” mechanism like NVidia’s; in other words, if a VBO is created in pool X, it will STAY in this pool forever, even if it’s never used. So if you create 1000 VBOs, for example the first 200 of them will be placed in video memory; the next 400 will be placed in AGP; the remaining 400 will be placed in RAM. If you only render with the last 400 ones, you will effectively be rendering from sys ram. NVidia has a smart cache mechanism where VBOs are switched in/out from video/AGP memory to/from sys ram, so that unused VBOs do not remain in “fast” memory.
Note: this behavior has been confirmed by ATI devrel; but it might change in a future driver release, obviously
Originally posted by Ozzy: As far as i know, only NV boards can store data in VRAM (through VAR/VBO). Generally, using VBO or VAO on ATI boards, data are stored in AGP.
Maybe it has changed with latest ATI boards?, would be interesting to know about it.
Um. . . no. ATI cards have been able to store vertex data in video memory ever since the original Radeons (with the exception of the Radeon VE).
Hi, to the poster who said you could use vbo in geforce II? How do you do that. The vbo extension does not show up on my opengl extension list. Latest drivers, etc…
VBO is supported on all geforce cards and all Radeons with hardware T&L (don’t know about 7000). In fact all future cards with OpenGL 1.5 support will have it.
So drop VAR unless you want to support old drivers and only use VBOs.
Get your drivers straight from nvidia for your geforce, they have VBO support. Check delphi3d.net to see which versions have support for VBOs.