Why don't they force DX9 apps to run in DX10.1?

Anarchist420

Diamond Member
Feb 13, 2010
8,645
0
76
www.facebook.com
Why doesn't nvidia and/or ati change DX9 calls into 10.1 calls so they can use AA with deferred shading?

It seems like there is so much they can do through drivers that they don't do. Some other examples include forcing a higher precision frame buffer (FP16 instead of 10:10:10:2 and a 32 bit float Z buffer instead of 24 bit integer zbuffer)

Not that I don't appreciate their driver work (I do), but there is still a lot they could do.
 

Dark4ng3l

Diamond Member
Sep 17, 2000
5,061
1
0
My guess is that these kinds of things would potentially introduce hundreds or thousands of bugs in the various DX9 games and that its just not worth wasting their time programming workarounds for every single problem created in games that are no longer supported but work fine right now,
 

OVerLoRDI

Diamond Member
Jan 22, 2006
5,494
4
81
What benefits would it offer? Some minor quality and performance improvements? Definitely not worth the effort.
 

thedosbox

Senior member
Oct 16, 2009
961
0
0
Why should ATI/Nvidia open themselves up to accusations that they broke a game? They already have enough problems to deal with.
 

evolucion8

Platinum Member
Jun 17, 2005
2,867
3
81
Why should ATI/Nvidia open themselves up to accusations that they broke a game? They already have enough problems to deal with.

Specially with so much work to do like driver support, optimizations, new features and design etc
 

aka1nas

Diamond Member
Aug 30, 2001
4,335
1
0
I thought that the reason they can do deferred rendering with AA under Dx 10+ is because they were able to re-implement AA as a shader program using the greater flexibility of SM4.0? If that's the case, you can't just magically translate API calls to obtain such a goal.
 

Sylvanas

Diamond Member
Jan 20, 2004
3,752
0
0
Maybe I'm misinterpreting this, but UE3 games are DX9 and use deferred rending yet both ATI and Nvidia have implemented a work around for AA... So what's the problem?
 

ViRGE

Elite Member, Moderator Emeritus
Oct 9, 1999
31,516
167
106
Maybe I'm misinterpreting this, but UE3 games are DX9 and use deferred rending yet both ATI and Nvidia have implemented a work around for AA... So what's the problem?
Their workarounds are very case-specific, and often need to be modified for each new UE3 game that comes out. NVIDIA submitted a proper fix for the issue to Epic last year (based on what they did for Batman), but it takes a while for that to trickle down in to new games.
 

Scali

Banned
Dec 3, 2004
2,495
0
0
I thought that the reason they can do deferred rendering with AA under Dx 10+ is because they were able to re-implement AA as a shader program using the greater flexibility of SM4.0? If that's the case, you can't just magically translate API calls to obtain such a goal.

Maybe I'm misinterpreting this, but UE3 games are DX9 and use deferred rending yet both ATI and Nvidia have implemented a work around for AA... So what's the problem?

Yes, put these two posts together, and you have your answer.
DX9's AA is 'fixed', the AA is resolved automatically after a frame is rendered. With deferred rendering, this means the AA information is lost before all renderpasses of the frame are complete.
DX10.1 (and an nVidia extension for DX10) allows you to read back the AA and do the AA resolve manually. This enables you to implement AA for deferred rendering.

ATi and nVidia have 'hacked' AA into DX9 games using deferred rendering (mostly UE3-based games), using the extra functionality of their DX10+ hardware (but doesn't actually need to use the DX10+ API, as they handle it with driver extensions that they make available under DX9).
But this requires significant changes to the whole rendering code, and has to be done on a game-to-game basis. It's not something that you just 'turn on'. The framebuffers in the game have to be of the correct type so that the AA information is not lost, and then a custom AA resolve shader pass has to be implemented in the right position in the code.

Aside from that, DX9 and DX10+ APIs are so completely different that translating one into the other is a very difficult job, even at source level. It's not exactly a case of a few search&replace actions, and then recompile. I wish it was, because we'd have a lot more DX10+ games now... good DX10+ games. But both the DX10+ engines and the DX10+ drivers are only slowly maturing, with often lower performance than DX9, despite the DX10+ API design being leaner and meaner.
We'll probably see a lot more DX11 games soon, because going from DX10 to DX11 is mostly search&replace. I expect that DX10 itself dies out soon, games might be dual-API in the sense of DX9 and DX11 for a while. DX9 to provide support for Windows XP. And DX11 works for all DX9.0c hardware and later, so it can completely replace DX9 and DX10 on all Vista/Windows 7 systems.