Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

Let's say that I run the same game in two different computers with different GPUs. If for example they are both certified for DirectX 10. Is there a guarantee that the output for a given program (game) is going to be the same regardless the manufacturer or model of the GPU? I am assuming the configurable settings are exactly the same in both cases.

I heard that it is not the case for DirectX 9 and older, but that it is true for DirectX 10. If someone could provide a source confirming or denying it, it would be great. Also what is the guarantee offered. Will the output be exactly the same or just perceptually the same to the human eye?

share|improve this question
    
What would this "guarantee" tell you? Are you asking so you know what devices you need to test on? –  Tetrad Nov 17 '11 at 7:19
    
I think the documentation clarified a lot of border cases however there is no guarantee that an Nvidia and an AMD card will react exactly the same way, there may even be discrepancies between different cards of the same brand. So yes everything should behave the same but there might be a few bugs/border cases. –  Roy T. Nov 17 '11 at 7:34

4 Answers 4

up vote 8 down vote accepted

In DirectX 10 the cards all have the same capabilities: this means that they guarantee that all features are available and implemented.

However, they are free to do driver-level optimizations. Take, for example, the major difference in the way that they do anisotropic filtering (this article contains sources). Not only is the output of each vendor different - the user is also able to tweak the enabled optimizations in configuration tools provided by most vendors.

If you want guaranteed and perfect results use the reference rasterizer from the DirectX SDK - it's extremely slow; but it is what Microsoft expects vendors to approximate.

In regard to output quality guarantees there is no difference between DirectX 9 and DirectX 10: there is absolutely no guarantee (even worse, quite a substantial amount of laptop chipsets advertise support for a feature and do nothing when it is used - leading to severely degraded quality).

share|improve this answer
    
That is a great example. I think it is useful to know how the output is going to look on any computer that can run it, but as you say it is not the case. Hopefully as long as the most basic effects are respected the designer intentions are mostly perserved. –  cloudraven Nov 18 '11 at 2:38

You're not going to get binary perfect output even between different driver versions of the same video card, much less different cards and manufacturers.

Look at it this way, Joe Walmart end user has no idea what color calibration is and so even across the same card and drivers the players will be seeing different colors.

The only "guarantee" is that if the driver reports that a particular feature is done in hardware then maybe it is, except when it's not.

This is an odd question. What problem are you trying to solve?

share|improve this answer

It's impossible to make this guarantee; there are just so many variable factors. Not even OpenGL's invariance rules go that far, and OpenGL tends to be much more specific about this kind of thing than D3D: http://glprogramming.com/red/appendixh.html

OpenGL is not a pixel-exact specification. It therefore doesn't guarantee an exact match between images produced by different OpenGL implementations.

share|improve this answer

I think the answer is a definitive no.

Case in point: nVidia Quadro cards have identical hardware as the consumer-level Geforce cards, but are controlled with different drivers or firmware. The Quadro cards do more precise calculations which can produce more accurate graphics.

From Wikipedia (unsourced):

The performance difference comes in the firmware controlling the card. Given the importance of speed in a game, a system used for gaming can shut down textures, shading, or rendering after only approximating a final output—in order to keep the overall frame rate high. The algorithms on a CAD-oriented card tend rather to complete all rendering operations, even if that introduces delays or variations in the timing, prioritising accuracy and rendering quality over speed.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.