Nvidia vs. ATI

Started by
5 comments, last by mattnewport 18 years, 8 months ago
This isn't really a 'vs.' thread, but I've been noticing a couple differences between a Radeon 9600 and a Geforce 6800 (duh. yeah.). First off, I get "D3DERR_INVALIDCALL" on the ATI card when this line comes up: ZTexture = new Texture(device, shadowTexDim, shadowTexDim, 1, Usage.DepthStencil, Format.D24S8, Pool.Default); Even though it loads up fine on the Nvidia card. I cannot imagine what causes this crash, as they both seem to support D24S8 as a Depth Stencil surface. The other problem is where all the shader settings are the same, but you can see the difference between the Nvidia and ATI cards here: Anybody got any ideas on how I can fix these problems?
Advertisement
Did you try to update the Radeon's drivers? Some old ATI drivers present problems with new applications.
Maybe the vertex format. I had a similar issue with a shader. On NVIDIA, it worked fine, but there were a lot of artefacts on ATI. I finally found out that the vertex format of my models was not the same as the one my shader needed (the shader needed some vertex color and there wasn't any in the vertex format of my model)

So, simply adding vertex colors to my model corrected the bug : no more artefacts on the ATI card.
IIRC Ati card's don't support depth stencil textures in Direct3D (they do support them under OpenGL though). If you're doing shadow mapping, you need to use, for example, R16F render target texture and render depth to that.
Quote:Original post by centipede
IIRC Ati card's don't support depth stencil textures in Direct3D

Yes indeed, this is an nVidia only thing.


Thanks for the help, I solved the shadowing issue by calling device.CreateDepthStencilSurface instead of creating a new texture and getting it's surface.

When we upgraded the drivers for the ATI card we got a BSOD, though. So I will have to test the other problem on a different machine yet.
If you are getting different behaviour between cards the first thing to do is to turn on the D3D debug runtime and crank up the warning level to see if there's anything in the debug spew in the output window in visual studio when running through the debugger. Often you'll be doing something bad that one card/driver combo happens to accept and the other barfs on.

As for the texture issue, I've a feeling ATI cards don't support depth surfaces as textures whereas nVIDIA cards do (they do that special PCF shadow map thing with depth stencil surfaces used as textures).

Game Programming Blog: www.mattnewport.com/blog

This topic is closed to new replies.

Advertisement