What advantages does DirectX 11 have over DirectX 10? Most of the new features seemed to be for directcompute from what I can tell, and how much more are you limiting your market by if you use DX11 compared to DX10 (assuming you don't add DX10 support).
-
\$\begingroup\$ Steam dominates online game distribution market. So, their h/w survey should be reliable. You can find it here. From the header : 36.47% are DX10, 41.34% are DX11 \$\endgroup\$– Quazi IrfanCommented Jun 20, 2012 at 19:56
-
\$\begingroup\$ so if you target dx10 you'd have to add those, so you'd limit yourself to half the market if targeting dx11? right? i'm bad with this stuff. \$\endgroup\$– dretaCommented Jun 20, 2012 at 20:06
2 Answers
You should usually prefer to use the D3D11 API, because it introduced downlevel feature level support that allows you to target 9, 10 or 11 level features using the same (D3D11) API. This means cleaner, more compact code so long as you don't have to support XP (and thus need to use the actual D3D9 API as well).
If you choose to require D3D11-level features, however, you will be limiting your market -- it's impossible to say by exactly how much in a fashion that is not overly time-sensitive, however, because market penetration will naturally change over time.
The primary advantages of the D3D11-level feature set are:
- Separation of device and context, allowing for better concurrency support.
- Compute, hull and domain shaders.
- Shader model 5.0 and dynamic shader linkage.
- WARP.
You may find this page, detailing the migration notes from D3D10 to D3D11, useful as a basis for comparision of more minor feature details.
-
\$\begingroup\$ this is a great answer, i was considering just dx10 since it's supported more widely, but thanks to this i know i can just use the dx11 api, my opengl habits, even if very young, are getting to me \$\endgroup\$– dretaCommented Jun 20, 2012 at 21:36
-
-
\$\begingroup\$ Hm, WARP is documented to have been "introduced by the Direct3D 11 runtime," (on the page I linked for WARP in the answer), although it is also available on Windows 7 using 10.1 (on the bottom of this page). I don't recall the relative timeframe of those events, but I guess it is worth noting if WARP is something one is concerned about. \$\endgroup\$– user1430Commented Jun 21, 2012 at 2:15
-
\$\begingroup\$ Could be worth noting what the hull and domain shaders actually are for: tessellation. \$\endgroup\$– TapioCommented Jun 21, 2012 at 5:58
-
1\$\begingroup\$ Note that DX11 only works on Vista SP2 w/ Platform Update and up. DX10 works on RTM Vista. On the upside of things, downlevel support in 11.0 goes down to 9_1, while downlevel support in 10.1 is just 10_0 and 10_1. \$\endgroup\$ Commented Jun 21, 2012 at 11:59
One of the major benefits is the clear separation of the device and the context
The device is synchronized for use in arbitrary threads and is used for maintenance tasks like creating resources, while a context is tied to a particular thread.
There's two flavors of context, the immediate context which is tied to the GUI thread, and the deferred contexts, which may be used to queue draw commands and resource updates for later execution in the immediate context, somewhat akin to the display lists of OpenGL.
This separation has benefits like being able to do write-only discards and uploads of resources in streaming threads without hitching the rendering of the main thread. In these many-core days, being able to spread the load grows more and more important.