DX11 on a DX10-class GPU -- How far can you go?

Started by
5 comments, last by MJP 9 years, 10 months ago

I'd like to be able to start a project in DirectX 11 to learn the API, but currently my GPU (GTS 250) only supports DirectX 10. I know that 11 has some level of backwards compatibility, and I plan to get a new Graphics card within the next month or two. I'd like to be able to get something down in the meantime with DirectX 10 features and just add the 11 stuff when I pick up a new GPU, but is this really practicable, or are the DX10(11) and DX11 code paths largely independent?

Advertisement

DX11 is just a superset of DX10 so yes, there should be no problems :)

If you choose to switch to DX11 further on all you need to do is switch a single flag; all your old "DX10 feature level" code will run without any need to change it.

You only need to create a device with feature level 10.0.

You can read more about here:http://msdn.microsoft.com/en-us/library/ff476876.aspx
"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

you won't be able to use tesselation. as far as i know, i think thats the only thing that d3d11 can actually do that d3d10 can't. I don't know if it works for tesselation, but when you create the device, you can set the device up as D3D_DRIVER_TYPE_SOFTWARE, which should emulate the hardware in software. its really slow to use this, but you should be able to use everything directx has to offer even if your gpu doesn't support it. if you create a device like this, everything is done on the cpu, so its really slow

D3D_DRIVER_TYPE_SOFTWARE is for 3rd party software implementation (the DLL is linked in the _In_ HMODULE Software parameter when you create the device).

D3D_DRIVER_TYPE_REFERENCE and D3D_DRIVER_TYPE_WARP provide a software implementation without the need of 3rd party software. The first is the slowest but implements all D3D features (with some limitation, like low filtering levels), the second is SIMD accelerated but provides more limitations. http://msdn.microsoft.com/en-us/library/ff476328.aspx
"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

I mentioned using a software driver type because i wasn't for sure if you'd need a 3rd party driver for using a reference driver or if directx comes with one. i've never used either one, and just know they exist. You should be able to use a software driver type which does not need to reference a driver

EDIT: nevermind, your right, i should have just said to use a reference driver in the first place

Other things you won't be able to use with feature level 10:

  1. 'Real' compute shaders (D3D11 supports a very limited version compute shaders for 10-level devices, but it's mostly useless)
  2. Read-only depth buffers
  3. Expanded MSAA support (reading from MSAA depth buffers, per-sample pixel shaders, SV_Coverage as input, interpolate to sample position)
  4. Cubemap arrays
  5. Append/Consume buffers
  6. UAV's from the pixel shader

This topic is closed to new replies.

Advertisement