Question about DirectX 11 Feature Levels and Downlevel Hardware.

GotNoRice

Senior member
Aug 14, 2000
329
5
81
featurelevels.png


DirectX11 has the ability to run directly on older hardware with separate down-level paths for 10.1, 10, and DirectX9 hardware. This is intended to make it easier on developers so that they don't have to code to lots of different hardware directly.

My question is about DirectX9 hardware support.

While there are feature levels for 11, 10.1, and 10, there are three seperate feature levels for directX9 hardware:

D3D_FEATURE_LEVEL_9_1
Targets features supported by Direct3D 9.1 including shader model 2.

D3D_FEATURE_LEVEL_9_2
Targets features supported by Direct3D 9.2 including shader model 2.

D3D_FEATURE_LEVEL_9_3
Targets features supported by Direct3D 9.3 including shader shader model 3.

D3D_FEATURE_LEVEL_10_0
Targets features supported by Direct3D 10.0 including shader shader model 4.

D3D_FEATURE_LEVEL_10_1
Targets features supported by Direct3D 10.1 including shader shader model 4.

D3D_FEATURE_LEVEL_11_0
Targets features supported by Direct3D 11.0 including shader shader model 5.

I believe DirectX 9.1, 9.2, 9.3 refer to 9.0a, 9.0b, and 9.0c.

There have been games released over the last few years that required Shader Model 3.0 support. Grid comes to mind as an example. The game will not run on DirectX 9 hardware that only contains Shader Model 2.0 such as a Radeon 9800Pro or an X800XT.

DirectX 11 has not one but two separate feature levels to accommodate Shader Model 2.0 hardware.

My questions are:

Can we anticipate that due to the built-in compatibility for DirectX9 shader model 2.0 hardware in DirextX11 that only having Shader Model 2 will no longer prevent users of those cards from playing future games?

Does this do anything in terms of compatibility with existing games, DirectX10 games? Will games that previously required Shader Model 3.0 still have that requirement or is the compatibility and feature levels that are built-in to DirectX 11 retroactive?

One of the reasons I am asking is because my brother is stuck with an X1550 in his computer. I have an older X800XT-PE I can give him. Unfortunately, although the X800XT-PE is considerably faster it lacks SM3.0 support and thus would prevent him from playing certain games. I'm curious if DirectX 11 and feature level support is the key to overcoming this obstacle.
 
Last edited:

GotNoRice

Senior member
Aug 14, 2000
329
5
81
Bump (due to post being stuck pending mod authorization for a few days before it was posted).
 

taltamir

Lifer
Mar 21, 2004
13,576
6
76
Can we anticipate that due to the built-in compatibility for DirectX9 shader model 2.0 hardware in DirextX11 that only having Shader Model 2 will no longer prevent users of those cards from playing future games?

That depends.. do you consider slideshows to be playing?
Getting 1 frame per second on your radeon 9800pro while trying to run a DX11 game from 2010 is not going to be playable.
 

JimmiG

Platinum Member
Feb 24, 2005
2,024
112
106
That depends.. do you consider slideshows to be playing?
Getting 1 frame per second on your radeon 9800pro while trying to run a DX11 game from 2010 is not going to be playable.

Still, it's a valid question. In the DX9 days, developers had to manually add support for both SM2 and SM3. There was no built-in compatibility.
 

aka1nas

Diamond Member
Aug 30, 2001
4,335
1
0
Still, it's a valid question. In the DX9 days, developers had to manually add support for both SM2 and SM3. There was no built-in compatibility.

My understanding is that the developers would still have to write multiple versions of the shaders to support both levels with Dx11. However, they would only have to support a single D3D API, which is a time/resource savings compared to how it is now. Otherwise, you would have two separate codepaths referencing different versions of D3d.dll and using different API calls.

Edit: This might not be as much of an issue between the Dx9 revisions, but is relevant for Dx8 vs Dx9 or Dx9 vx Dx10.
 
Last edited:

GotNoRice

Senior member
Aug 14, 2000
329
5
81
That depends.. do you consider slideshows to be playing?
Getting 1 frame per second on your radeon 9800pro while trying to run a DX11 game from 2010 is not going to be playable.

Well the card I'm talking about is an X800XT-PE. I can get ~35 FPS in FarCry2 using that card on my old Dual-Xeon rig still. The point is that even though it is an old card it's still faster than the X1550 my brother is using. I'd like to give him the faster card but lack of SM3.0 on the X800XT-PE limits what games he can play.
 

GodisanAtheist

Diamond Member
Nov 16, 2006
6,879
7,272
136
There certainly won't be compatibility added to games that are already on a certain feature level, except in extreme circumstances (say something like SC2 where the whole point is to get it playing across as many systems as possible while the dev is rolling in money).
 

T2k

Golden Member
Feb 24, 2004
1,664
5
0
It's only there if the game was developed for DX11, mind you and 10level9 is there for older hardware, not older games...
 

ViRGE

Elite Member, Moderator Emeritus
Oct 9, 1999
31,516
167
106
Can we anticipate that due to the built-in compatibility for DirectX9 shader model 2.0 hardware in DirextX11 that only having Shader Model 2 will no longer prevent users of those cards from playing future games?
No. You would still have to write versions of your shaders in SM2, assuming they can even be meaningfully run on SM2 given its greater limitations. Developers that weren't previously targeting SM2 hardware still won't target it.

Does this do anything in terms of compatibility with existing games, DirectX10 games? Will games that previously required Shader Model 3.0 still have that requirement or is the compatibility and feature levels that are built-in to DirectX 11 retroactive?
No. Games that require SM3 will still require SM3.
 

aka1nas

Diamond Member
Aug 30, 2001
4,335
1
0
The main point of the new changes in Dx11 is to allow developers to write one version of their graphics engine, and for the most part just turn off features when lesser hardware is present.

You couldn't actually do that between Dx9 and Dx10, even if it somewhat seemed that way to you as an end-user of the game. For games with both Dx9 and Dx10 options, they aren't just swapping out the shaders to turn on the "dx10 effects". They would actually have to run a different codebase when you switched Dx modes.

With Dx11, they can write one version of their code, and just run different shader versions or turn off features if you are running older Dx9 hardware. From what I have heard, the 360 will likely be getting a Dx11 runtime sometime soon to support this (it's Dx9 class hardware and can run on the downlevel modes).

This is a fairly big deal, as it makes it much cheaper to still release the game primarily for the 360 and then add in prettier effects on the PC version using Dx10 or Dx11.

To explain it somewhat better:

Say x is the size/complexity/resources need the develop of the 'base" rendering engine, and y is the size/complexity/resources need the develop of the PC specific features. Previously it would have taken 2x+y to build as they needed to develop two codebases in parallel. Now it's only x+y as they work on a single codebase and just make the PC stuff optional.