uncfan_2563 :
ok so i'm just curious about this and gamerk kinda made me wonder. If you have a DX 10 card with DX 11 installed on your OS and a game called for tessellation. What would happen? would it crash or would the tessellation just be handled by something else (CPU/GPU core??) What makes me wonder this is that i actually played a dx9 game on a dx7 card a while back so would it work?
Simple: If the game didn't have a DX10 code path, you would't be able to play, period. M$'s new driver model they started in Vista (Where they are forcing compliance on all partners) makes sure of that. A DX10 card will not be able to use a DX11 code path, just like a DX9 card can't run DX10.
As for your DX9 game, by any chance, do you know which game/card you used? There were a few games a few years back that would use DX9 for high settings, but stick with the older DX7 standard for lower settings (much like Crysis did with DX10...).
DX10.1 is the same exact thing: DX10 cards see 0 benifit from DX10.1 (can't even use it), but cards that support the full feature set can take advantage of the features that exist. The games that support DX10.1 check both the OS to see what the highest level of DX installed is (10.1 for Vista), and then checks the card to see what DX level is supported (10.1 for ATI, 10 for NVIDIA). Hence, DX10.1 is not even selectable for NVIDIA cards, and the extra functionality of 10.1 (mainly the way AA is handled) is not used, period, so the standard feature set is used. Cards in compliance with 10.1 however, instead can use the 10.1 code path.
The easiest way to explain it would be to use pseudocode to show how this would be implemented in game (using C++ shorthand):
// Header
SupportedDXLevel = CheckForDXLevel //Check OS & Hardware for last supported DX compliance
.
.
.
// Code
if SupportedDXLevel = 9
{
Call DXFile.DX9Function
}
else If SupportedDXLevel = 10
{
Call DXFile.DX10Function
}
else if SupportedDXLevel = 10-1 //Can't use '.' symbol
{
Call DXFile.DX10-1Function
}
This is essentially how you would handle different DX levels in code. Mixing and matching DX versions is common (most games still use a lot of DX7/8 features that haven't been updated in later API's), but there is a maximum supported level that is supported. Hence, even though ATI cards already feature a tesselator engine, they will see
zero support for DX11, as M$'s own standards would find the cards out of compliance (and't won't support sign any drivers for out of compliance hardware). Nevermind the fact M$ has stated that the tesselation engine used on the 4000 series is not compatable with DX11 tesselation to begin with...
The only benifit a DX11 card will have in earlier versions of DX is speed of execution, as the cards will be faster. There will be no benifit on any DX10/10.1 card once DX11 comes out, as any DX11 supported game will force those cards to run the DX10/10.1 code path, and DX11 will be essentially invisible.
EDIT
Again, I will admit that if the core functions that already exist for DX10/10.1 are changed (such as allowing for fewer passes, etc.), then there will be a tangable improvement; I admit to that case. But no new features will be avaliable for DX10/10.1 cards, period. The 4890 is a DX10.1 card, and will not execute a single DX11 feature, period.