Export (0) Print
Expand All

Direct3D feature levels

To handle the diversity of video cards in new and existing machines, Microsoft Direct3D 11 introduces the concept of feature levels. This topic discusses Direct3D feature levels.

Each video card implements a certain level of Microsoft DirectX (DX) functionality depending on the graphics processing units (GPUs) installed. In prior versions of Microsoft Direct3D, you could find out the version of Direct3D the video card implemented, and then program your application accordingly.

With Direct3D 11, a new paradigm is introduced called feature levels. A feature level is a well defined set of GPU functionality. For instance, the 9_1 feature level implements the functionality that was implemented in Microsoft Direct3D 9, which exposes the capabilities of shader models ps_2_x and vs_2_x, while the 11_0 feature level implements the functionality that was implemented in Direct3D 11.

Now when you create a device, you can attempt to create a device for the feature level that you want to request. If the device creation works, that feature level exists, if not, the hardware does not support that feature level. You can either try to recreate a device at a lower feature level or you can choose to exit the application. For more info about creating a device, see the D3D11CreateDevice function.

Using feature levels, you can develop an application for Direct3D 9, Microsoft Direct3D 10, or Direct3D 11, and then run it on 9, 10 or 11 hardware (with some exceptions of course, new 11 features will not run on an existing 9 card for example). Here is a couple of other basic properties of feature levels:

  • A GPU that allows a device to be created meets or exceeds the functionality of that feature level.
  • A feature level always includes the functionality of previous or lower feature levels.
  • A feature level does not imply performance, only functionality. Performance is dependent on hardware implementation.
  • Choose a feature level when you create a Direct3D 11 device.

For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.

To assist you in deciding what feature level to design with, compare the features for each feature level.

The 10Level9 Reference section lists the differences between how various ID3D11Device and ID3D11DeviceContext methods behave at various 10Level9 feature levels.

Overview For Each Feature Level

The following table lists the features available per feature level:

11_1111_010_110_09_39_29_1
Shader Model5.025.024.x4.02.0 (4_0_level_9_3) [vs_2_a/ps_2_x]52.0 (4_0_level_9_1)2.0 (4_0_level_9_1)
Geometry ShaderYesYesYesYesNoNoNo
Stream Out YesYesYesYesNoNoNo
DirectCompute / Compute Shader YesYesOptionalOptionalN/AN/AN/A
Hull and Domain Shaders YesYesNoNoNoNoNo
Texture Resource Arrays YesYesYesYesNoNoNo
Cubemap Resource Arrays YesYesYesNoNoNoNo
BC4/BC5 Compression YesYesYesYesNoNoNo
BC6H/BC7 Compression YesYesNoNoNoNoNo
Alpha-to-coverageYesYesYesYesNoNoNo
Extended Formats (BGRA, and so on)YesYesOptionalOptionalYesYesYes
10-bit XR High Color FormatYesYesOptionalOptionalN/AN/AN/A
Logic Operations (Output Merger) YesOptional1Optional1Optional1NoNoNo
Target-independent rasterizationYesNoNoNoNoNoNo
Multiple render target(MRT) with ForcedSampleCount 1 YesOptional1Optional1Optional1NoNoNo
UAV slots64811N/AN/AN/A
UAVs at every stageYesNoNoNoN/AN/AN/A
Max forced sample count for UAV-only rendering 168N/AN/AN/AN/AN/A
Constant buffer offsetting and partial updatesYesOptional1Optional1Optional1Yes1Yes1Yes1
16 bits per pixel (bpp) formatsYesOptional1Optional1Optional1Optional1Optional1Optional1
Max Texture Dimension163841638481928192409620482048
Max Cubemap Dimension1638416384819281924096512512
Max Volume Extent2048204820482048256256256
Max Texture Repeat16384163848192819281922048128
Max Anisotropy1616161616162
Max Primitive Count2^32 – 12^32 – 12^32 – 12^32 – 11048575104857565535
Max Input Slots32323216161616
Simultaneous Render Targets8888411
Occlusion QueriesYesYesYesYesYesYesNo
Separate Alpha BlendYesYesYesYesYesYesNo
Mirror OnceYesYesYesYesYesYesNo
Overlapping Vertex ElementsYesYesYesYesYesYesNo
Independent Write MasksYesYesYesYesYesNoNo
InstancingYesYesYesYesYesNoNo
Nonpowers-of-2 conditionally3NoNoNoNoYesYesYes
Nonpowers-of-2 unconditionally4YesYesYesYesNoNoNo

 

1 Requires the Direct3D 11.1 runtime.

2 Shader model 5.0 can optionally support double-precision shaders, extended double-precision shaders, the SAD4 shader instruction, and partial-precision shaders. To determine the shader model 5.0 options that are available, call ID3D11Device::CheckFeatureSupport.

3 At feature levels 9_1, 9_2 and 9_3, the display device supports the use of 2-D textures with dimensions that are not powers of two under two conditions. First, only one MIP-map level for each texture can be created, and second, no wrap sampler modes for textures are allowed (that is, the AddressU, AddressV, and AddressW members of D3D11_SAMPLER_DESC cannot be set to D3D11_TEXTURE_ADDRESS_WRAP).

4 At feature levels 10_0, 10_1 and 11_0, the display device unconditionally supports the use of 2-D textures with dimensions that are not powers of two.

5 Vertex Shader 2a with 256 instructions, 32 temporary registers, static flow control of depth 4, dynamic flow control of depth 24, and D3DVS20CAPS_PREDICATION. Pixel Shader 2x with 512 instructions, 32 temporary registers, static flow control of depth 4, dynamic flow control of depth 24, D3DPS20CAPS_ARBITRARYSWIZZLE, D3DPS20CAPS_GRADIENTINSTRUCTIONS, D3DPS20CAPS_PREDICATION, D3DPS20CAPS_NODEPENDENTREADLIMIT, and D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT.

Related topics

Hardware Support for Direct3D 10Level9 Formats
Hardware Support for Direct3D 10 Formats
Hardware Support for Direct3D 10.1 Formats
Hardware Support for Direct3D 11 Formats
Hardware Support for Direct3D 11.1 Formats

 

 

Community Additions

ADD
Show:
© 2014 Microsoft