DX11 and compatibility with "old" graphic cards

Started by
4 comments, last by damiena 12 years, 11 months ago
Hello everybody,

I have a question about DX11.
Currently I have written a 3D engine in (managed) DirectX 9.0c.
I plan to migrate to DirectX 11 (using for example SlimDX) but I'm affraid about compatibility, in particular with customers using small graphic cards or intel chipset (Intel 965, etc.)
Today my 3D engine works well and fast even with such old graphic cards / chipset.

In theory, reading MSDN stuff, DirectX 11 is useable even with non-DirectX 11 graphic card, using "Feature level = 9".
Well, sounds great. But now, what about performance?

When I read MSDN articles, I understand that all functionalities that were working with hardware acceleration under DirectX9 will also work with hardware acceleration under DirectX 11.
But I don't verify this at all: For example, with a "[font=Calibri, sans-serif][size=2]Intel® Graphics MediaAccelerator 3150",[/font] the DX SDK sample "Basic HLSL" is runnning great, in HAL, with DirectX 9. When running the same sample compiled with DirectX 11, HAL driver is not available, but only WARP, and as a consequence the sample is running with the CPU, and as a consequence slowly.
I might misunderstand something!

So : Do you think that DirectX 11 is efficient with old, DX9, graphic cards ?

Thanks in advance for your comments !
Advertisement
I think you answered your own question:

But I don't verify this at all: For example, with a "Intel® Graphics MediaAccelerator 3150", the DX SDK sample "Basic HLSL" is runnning great, in HAL, with DirectX 9. When running the same sample compiled with DirectX 11, HAL driver is not available[/quote]

Your best bet at maintaining compatibility with these old cards is to leave in the DX9 renderer.

The Samples in the DirectX SDK don't specify the feature level 9, they use either 10, 10.1 or 11.

You should try to modify the sample so that it uses feature level 9. You can't simply change the 11 to a 9, you'll also have to modify some of the code, like the shader model of the loaded shaders.
Of course you can't use things like the shader model 4 or 5, or some other D3D10 or 11 features.

But if you use only the features available to D3D9 it should run just as fine as it ran with a D3D9-Card, even though you are using the D3D11 API.

Your best bet at maintaining compatibility with these old cards is to leave in the DX9 renderer.[/quote]

You only need to leave in the D3D9-Renderer when you want compatibility with Windows XP. For everything else you can use the feature-levels.

The Samples in the DirectX SDK don't specify the feature level 9, they use either 10, 10.1 or 11.
You should try to modify the sample so that it uses feature level 9.



The sample BasicHLSL11 proposes Feature Level 9_2, 9_3, 10_0, ...
But no 9_0
so => I'll give a try = modify the code so that 9_0 is available, then see what happens.
I will tell you!
On a slightly unrelated note - take a look at Steam's survey on GPUs in their customers PCs:
http://store.steampowered.com/hwsurvey/

Very few people have DX11 capable GPUs but there's many with DX10.
Maciej Sawitus
my blog | my games

You only need to leave in the D3D9-Renderer when you want compatibility with Windows XP. For everything else you can use the feature-levels.

The problem that he will run into is that Intel only exposes the lowest feature level (FEATURE_LEVEL_9_1), even if his hardware supports Direct 9.0c when running on XP. So he will run into problems if he uses features (from 9.0c) that aren't available to FEATURE_LEVEL_9_1. A list of limitations of FEATURE_LEVEL_9 can be found here.

This topic is closed to new replies.

Advertisement