Radeon / GeForce performance question

Hi,

I have a demo app that creates a reflection on water by the rendering the scene into a texture (using glCopyTexSubImage) and then blending with the water surface using a texture projection to make the reflection distort as the water ripples. The frame rates on 3 different systems are shown below, which brings me to my question:

Why is there a massive performance difference between the GeForce & Radeon cards? The bottleneck on the Radeon is the glCopyTexSubImage call (see Radeon performance with and without render to texture).

Why is the s/w renderers performance unaffected by the call to glCopyTexSubImage, but the Radeon’s is?

Source and/or exe can be downloaded here if anyone wants to try it. www.futurenation.net/glbase
Both downloads are less than 300k.

Performance stats:

AMD ThunderBird 800 / Geforce 2 MX (by BigB)
Running at 1024x768/32 bits i got between 90fps and 140 fps…, very smooth
Running at 1024x768/16 bits i got between 30fps and 25 fps…

Celeron 466 / Radeon 64DDR (my system)
1024x768/32 bits - 2 fps with render to texture on (250 fps with render to texture off)

Pentium 266 / no OpenGL acceleration (my laptop)
1024x768/32 bits - 1 fps with render to texture on (1 fps with render to texture off)

Thanks
Adrian

I can’t speak for anyone else, but I do have a suggestion for why 16-bit performance might drop below 32-bit performance.

Make sure to match the texture internal format to the framebuffer format. So, for a 16-bit mode, use GL_RGB5, and for a 32-bit mode, use GL_RGB8 (or GL_RGBA8 if necessary).

Note that if you use GL_RGB, our default way of interpreting that is to go with the current color depth, i.e., you’ll automatically get GL_RGB5 and GL_RGB8. Unfortunately, someone can change this behavior with the registry, so you can’t necessarily rely on it.

If you use GL_RGB5, you should get faster performance in 16-bit than in 32-bit…

  • Matt

Well, i’ve bought a radeon SDR 32 coz i’ve already taken advantage of VAR extensions on Nvidia boards and i was interested to test another ‘claimed’ T&L board… ) At the moment i’ve only done a few tests and of course with the latests drivers (using non particular ATI’s extensions) it’s awfull another joke from ATI!! ) 3 times (or more) slower than a TnT2 board !! So what?? what could be the reasons?
1.) The board is a **** like previous ATI boards!!
2.) The people who are writting drivers @Ati are silly persons or (i hope for them) have no time to develop clean releases for their own products.
3.) The people who are writting what they certainly call ‘code’ are silly for sure when you must install DX8 before installing a 11Mb driver archive!! really nice stuff men!! congratulations and see ya in hell with 3dfx!!

Oopps sorry, of course 3dfx now is in purgatory with Nvidia… )

My fault I’m afraid. To try and fix the performance problems running the app on my Radeon I tried forcing the texture internal format to GL_RGB8. Forgot to change it back to GL_RGB before releasing the code. Thanks for pointing it out.

Oops, that last post of mine was meant as a reply to Matt of course, not to Sylvain.

Sylvain:

I totally disagree (except on the DX8 thing). When looking at which board to buy I thought that the Radeon offered better value for money than the GeForce 2, and I still think thats the case. ATI are still developing the drivers so hopefully all the issues will eventually be resolved.

eheh!! just jocking!! but perhaps ATI will eventually solve their problems (it’s not a brand new card now…) but for sure they are certainly crediting their bank account with our money!!
As a conclusion for performances & reliability reasons GeForce2 is the best card ever -> money / quality!
that’s my point of view…
Just a silly question:
what is the equivalent of Vertex Array Range extension from Nvidia on Radeon??

ATI_vertex_array_store ?

I thought that maybe Radeon changes completely to software rendering. But after checking your code, and assuming that you’re just using the ‘updtRefl’ flag to disable the copy, and this speeds up the Radeon, then I can only assume that it’s only this particular operation that’s done in software. This would mean copying the display to main memory, changing it, and copying back to the card - very slow.

I can’t speculate exactly when the Radeon resorts to this, but I suggest that you use the same texture format as the display. It may not even be your program’s fault - go to the Radeon’s OpenGL tab in the display settings. I think that there’s a switch saying to always use 16 bit textures, and that it’s on by default. See if turning it off helps. See if any of the other switches help.

[This message has been edited by ET3D (edited 05-12-2001).]

[This message has been edited by ET3D (edited 05-12-2001).]

Originally posted by Sylvain:
As a conclusion for performances & reliability reasons GeForce2 is the best card ever -> money / quality!

Bah, I wouldn’t trade my Radeon for a GF2. It’s both faster and more feature rich than GF2.

Originally posted by Sylvain:
what is the equivalent of Vertex Array Range extension from Nvidia on Radeon??

There used to be a GL_EXT_vertex_array_range extension that were like a copy of GL_NV_vertex_array_range, but it has been removed with newer drivers. I think nVidia has some patents or something on it and didn’t like it. Which brings me to something off topic but really annoying: While most really useful extensions that spring out from ATi and most other major players usually ends up as GL_ARB or GL_EXT, every useful extesion that spring out from nVidia in 95% of the cases ends up as GL_NV and proprietary, thus reducing it’s usefulness to below half. I think nVidia have understood what the “Open” part of OpenGL means …

Well, it’s true that many of nVidia’s extensions are proprietary. It isn’t very nice of them, but the truth is that graphics card people are in the business to make money, and having proprietary extensions combined with a large market share helps to lock people into using your hardware.

The reason that the non-proprietary ones aren’t promoted to EXT or ARB status is because the ARB decided that promoting extensions was wasteful. Many times they were ending up with 3 different extensions that all had the same functionality, but different enumerants and function names (SGIX_multitexture, EXT_multitexture, ARB_multitexture). Why bother, when the only real reason the extensions were promoted was because nVidia didn’t want to have a 3DFX extension on their card, or ATI didn’t want an SGIX extension on theirs?

Additionally, multiple extensions for the same functionality makes things harder for driver writers who have to be able to handle code for all 3 extensions, and it makes things harder for developers who are using an extension that is promoted to EXT status and is no longer supported on cards where the driver writers never thought of backwards compatibility.

So, instead of promoting, just use the original extension. Who cares where it came from?

j

Well Humus i don’t know what you’re using to test the Radeon performances Vs GeForce2 but for sure i’ve really bad stats on my Celeron 333Mhz with the app i workin on… I’ve tested both primitives types & both != calls like classics gl commands , vertex arrays, display lists etc… Moreover Radeon drivers are not finished!! there are big probs with alpha blended prims & lighting!! plenty of bugs with rendering , specular lighting is ugly!! thus, Radeon is NOT a brand new board, i don’t like the Nvidia way of dev either!! but i think it’s a shame that months after the board has been delivered into the market the drivers are still buggy & unfinished!! Of course we are far from the drivers optimisations i think!! and please, finally remember that’s this driver development problem is just the same problem with ATI graphics since the begining… Things where easier before with 2D boards only!!

ET3D: I think I tried all that and got no improvement, but I’ll try again in case I missed anything.

Originally posted by j:
[b]Well, it’s true that many of nVidia’s extensions are proprietary. It isn’t very nice of them, but the truth is that graphics card people are in the business to make money, and having proprietary extensions combined with a large market share helps to lock people into using your hardware.

The reason that the non-proprietary ones aren’t promoted to EXT or ARB status is because the ARB decided that promoting extensions was wasteful. Many times they were ending up with 3 different extensions that all had the same functionality, but different enumerants and function names (SGIX_multitexture, EXT_multitexture, ARB_multitexture). Why bother, when the only real reason the extensions were promoted was because nVidia didn’t want to have a 3DFX extension on their card, or ATI didn’t want an SGIX extension on theirs?

Additionally, multiple extensions for the same functionality makes things harder for driver writers who have to be able to handle code for all 3 extensions, and it makes things harder for developers who are using an extension that is promoted to EXT status and is no longer supported on cards where the driver writers never thought of backwards compatibility.

So, instead of promoting, just use the original extension. Who cares where it came from?

j[/b]

Oh well, it’s all about money as usual … if I could live in a world without money, I’d be a happy man …
You’re right, it really doesn’t matter who though up an idea first, but I just don’t like when they lock extensions like that. If ATi could have a GL_NV_vertex_array_range in their driver it would be nice and nVidia could have all those ATi extensions in theirs too. Why call extensions after who though up them anyway, they could just be called like GL_vertex_array_range and noone would need to feel bad about having someelses name in their extension string. I want OpenGL to live up to it’s name and be open. When they lock an extension it’s not like the competitors just gonna drop that functionality, they will come up with their own extension and it’ll end up as a pain in the ass for the developers to have many extensions they need to support.

Originally posted by Sylvain:
Well Humus i don’t know what you’re using to test the Radeon performances Vs GeForce2 but for sure i’ve really bad stats on my Celeron 333Mhz with the app i workin on… I’ve tested both primitives types & both != calls like classics gl commands , vertex arrays, display lists etc… Moreover Radeon drivers are not finished!! there are big probs with alpha blended prims & lighting!! plenty of bugs with rendering , specular lighting is ugly!! thus, Radeon is NOT a brand new board, i don’t like the Nvidia way of dev either!! but i think it’s a shame that months after the board has been delivered into the market the drivers are still buggy & unfinished!! Of course we are far from the drivers optimisations i think!! and please, finally remember that’s this driver development problem is just the same problem with ATI graphics since the begining… Things where easier before with 2D boards only!!

Well, when I judge the performance I try games that are shipping, not some beta code I’ve come up with myself and “done a few tests” with and without taking any advantage of the features it supporting.
I could just aswell write an app that uses 3d textures and claim my Radeon is 250 times as fast as a GF3.
There’s way too much whining about "ATi cannot write drivers … ". I’m pretty sure that if I buy a GF3 today many of my old OpenGL apps would not work. Why? Since it’s only been tested on a Radeon. I’ve been using a Radeon for half a year now, and I’ve been satisfied and never had any of the problems you’re talking about.

Also, tried my benchmark GL_EXT_reme? ( http://hem.passagen.se/emiper/3d.html )
Interesting to note is that Radeons are actually beating a GF3 in T&L performance with static displaylists and 8 lights.

[This message has been edited by Humus (edited 05-13-2001).]

Originally posted by Sylvain:
Well, i’ve bought a radeon SDR 32”…“it’s awfull another joke from ATI!! ) 3 times (or more) slower than a TnT2 board !!

2 points…

  1. you are not too bright, if you think SDR anything’s will be fast
  2. my radeon is faster than my friend’s GeForce2 in many programs (and people say it looks better)…so obviously your tests suck

(sorry…that post just pissed me off too much to not comment)

[This message has been edited by HFAFiend (edited 05-13-2001).]

Sorry guys who have bought this Radeon board but in real situation around 20000 - 30000 pts (fov) lighting enabled this card suck with generic drivers from 20 of march…
Anyway you can always listen to commercials @ATI who certainly claim that this card is the best ever made!! Now i don’t think testings with games which don’t handle T&L is a good thing… Moreover using display List and think you are using T&L is just silly… On Geforce as an example you can really boost performances with static geometry and VARange and i haven’t heard of any (fixed) equivalent on Radeon for now…
Anyway, if q3 works fine with your radeon everything should work eh? blablabla…
My first attempt was to support this card but the drivers really suck!! so i’ll wait a bit…

Originally posted by Sylvain:
Sorry guys who have bought this Radeon board but in real situation around 20000 - 30000 pts (fov) lighting enabled this card suck with generic drivers from 20 of march…
Anyway you can always listen to commercials @ATI who certainly claim that this card is the best ever made!! Now i don’t think testings with games which don’t handle T&L is a good thing… Moreover using display List and think you are using T&L is just silly… On Geforce as an example you can really boost performances with static geometry and VARange and i haven’t heard of any (fixed) equivalent on Radeon for now…
Anyway, if q3 works fine with your radeon everything should work eh? blablabla…
My first attempt was to support this card but the drivers really suck!! so i’ll wait a bit…

Yet another nVidiot comment …
You get the card and after you’ve done a few tests that didn’t work as expected then you just call it crap. Why not try to find the source of the problem instead. If the problem can be traced down to a driver problem then send a mail to devrel@ati.com instead of coming with stupid comments about it.
Also, static display list is (or at least) should be transformed and lit by the T&L unit. Sure, vertex array range may be faster on some systems but that doesn’t make the bench invalid.
Also, tried any game that actually uses the T&L unit? Radeons aren’t that far behind, and way ahead of any software T&L card.

About the “commercials @ ATI” stuff, since you’re making such comments I hope you’re able to see through the commercials @ nVidia too. Wasn’t the GF3 supposed to give “up to seven-fold increase in delivered performance” as stated in the GF3 product overview pdf?

I only would like to know if this driver problem is only in win 2000(mainly with AMD processors) as I heard or what?

arf.

I am not going to add to this senseless and very childish discussion but I though Matt was clear about extensions a while ago. This is how I understood it:

when a vendor creates an extension, then call it with their company id. If other vendors come to them an says : hey! this extension is cool, I want to help doing it, then it becomes and EXT.

If the review board say : hey this extension is cool and generic enough, we will make it ARB.

oh, and having an NV or ATI on an extension doesn’t stop another vendor from using it.

[This message has been edited by Gorg (edited 05-13-2001).]