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).
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.
You may find this page, detailing the migration notes from D3D10 to D3D11, useful as a basis for comparision of more minor feature details.
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.