Resource Limits (Direct3D 11)

This topic contains a list of resources that Direct3D 11 supports (specifically feature level 11 or 9.x hardware).

Resource limits for feature level 11 hardware

All of these resource limits are defined as constants in D3d11.h.

Resource Limit
Number of elements in a constant buffer D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT (4096)
Number of texels (independent of struct size) in a buffer D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP (2 7) texels
Texture1D U dimension D3D11_REQ_TEXTURE1D_U_DIMENSION (16384)
Texture1DArray dimension D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION (2048 array slices)
Texture2D U/V dimension D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION (16384)
Texture2DArray dimension D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION (2048 array slices)
Texture3D U/V/W dimension D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (2048)
TextureCube dimension D3D11_REQ_TEXTURECUBE_DIMENSION (16384)
Resource size (in MB) for any of the preceding resources min(max(128,0.25f * (amount of dedicated VRAM)), 2048) MB
Anisotropic filtering maxanisotropy D3D11_REQ_MAXANISOTROPY (16)
Resource dimension addressable by filtering hardware D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION (16384) per dimension
Resource size (in MB) addressable by IA (input or vertex data) or VS/GS/PS (point sample) max(128,0.25f * (amount of dedicated VRAM)) MB
Total number of resource views per context (Each array counts as 1) (all view types have shared limit) D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP (2 )
Buffer structure size (multi-element) D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES (2048 bytes)
Stream output size Same as the number of texels in a buffer (see preceding)
Draw or DrawInstanced vertex count (including instancing) D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP (2 )
DrawIndexed[Instanced]() vertex count (including instancing) D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP (2 )
GS invocation output data (components * vertices) D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES (1024)
Total number of sampler objects per context D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE (4096)
Total number of viewport/scissor objects per pipeline D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE (16)
Total number of clip/cull distances per vertex D3D11_CLIP_OR_CULL_DISTANCE_COUNT (8)
Total number of blend objects per context D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE (4096)
Total number of depth/stencil objects per context D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE (4096)
Total number of rasterizer state objects per context D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE (4096)
Maximum per-pixel sample count during multisampling D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT (32)
Shader resource vertex-element count (four 32-bit components) D3D11_STANDARD_VERTEX_ELEMENT_COUNT (32)
Common-shader core (four 32-bit components) temp-register count (r# + indexable x#[n]) D3D11_COMMONSHADER_TEMP_REGISTER_COUNT (4096)
Common-shader core constant-buffer slots D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT (15) (+1 set aside for an immediate constant buffer in shaders)
Common-shader core input-resource slots D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT (128)
Common-shader core sampler slots D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT (16)
Common-shader core subroutine-nesting limit D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT (32)
Common-shader core flow-control nesting limit D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT (64)
Vertex shader input-register count (four 32-bit components) D3D11_VS_INPUT_REGISTER_COUNT (32)
Vertex shader output-register count (four 32-bit components) D3D11_VS_OUTPUT_REGISTER_COUNT (32)
Geometry shader input-register count (four 32-bit components) D3D11_GS_INPUT_REGISTER_COUNT (32)
Geometry shader output-register count (four 32-bit components) D3D11_GS_OUTPUT_REGISTER_COUNT (32)
Pixel shader input-register count (four 32-bit components) D3D11_PS_INPUT_REGISTER_COUNT (32)
Pixel shader output slots 8
Pixel shader output depth register count(one 32-bit component) D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT (1)
Input assembler index input resource slots D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT (1)
Input assembler vertex input resource slots D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT (32)
Hull shader control point input-register count (four 32-bit components) D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT (32)
Hull shader number of input control points D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
Hull shader control point output-register count (four 32-bit components) D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT (32)
Hull shader number of output control points D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
Hull shader patch constant output-register count (four 32-bit components) D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT (32)
Domain shader control point input-register count (four 32-bit components) D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT (32)
Domain shader number of input control points D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
Domain shader patch constant input-register count (four 32-bit components) D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT (32)
Domain shader tessellated vertex output-register count (four 32-bit components) D3D11_DS_OUTPUT_REGISTER_COUNT (32)
Compute shader unordered access view (UAV) slots D3D11_PS_CS_UAV_REGISTER_COUNT (8)4
Resource tile size in bytes D3D11_2_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )

An app can try to allocate more memory for a resource than the maximum resource size specifies. That is, the Direct3D 11 runtime allows these memory allocation attempts in the event that the hardware might support them. However, the Direct3D 11 runtime only guarantees that allocations within the maximum resource size are supported by all feature level 11 hardware. If an app tries to allocate memory for a resource within the maximum resource size, the runtime fails the attempt only if the operating system runs out of resources. If an app tries to allocate memory for a resource above the maximum resource size, the runtime can fail the attempt because either the operating system is overextended or the hardware does not support allocations above the maximum resource size. The debug layer only checks D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM (128) MB.

The pixel shader output slots are shared between pixel output registers (four 32-bit components) and UAVs.

The total number of components for all hull shader to domain shader control points is limited to 3968, which is 128 less than the maximum control points times the maximum control point registers times four components.

4For compute shader profiles CS_4_0 and CS_4_1 there is only 1 UAV available. For more information about shader profiles, see Shader Model 5.

Resource limits for feature level 9.x hardware

All of these 9.x feature level resource limits are defined as constants in D3dcommon.h.

Resource Limit
Feature level 9_1 texture1D U dimension D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION (2048)
Feature level 9_3 texture1D U dimension D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION (4096)
Feature level 9_1 texture2D U/V dimension D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION (2048)
Feature level 9_3 texture2D U/V dimension D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION (4096)
Feature level 9_1 texture3D U/V/W dimension D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (256)
Feature level 9_1 textureCube dimension D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION (512)
Feature level 9_3 textureCube dimension D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION (4096)
Feature level 9_1 anisotropic filtering maxanisotropy default D3D_FL9_1_DEFAULT_MAX_ANISOTROPY (2)
Feature level 9_1 maximum input assembler primitives D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT (65535)
Feature level 9_2 maximum input assembler primitives D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT (1048575)
Feature level 9_1 simultaneous render targets D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT (1)
Feature level 9_3 simultaneous render targets D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT (4)
Feature level 9_1 maximum texture repeat D3D_FL9_1_MAX_TEXTURE_REPEAT (128)
Feature level 9_2 maximum texture repeat D3D_FL9_2_MAX_TEXTURE_REPEAT (2048)
Feature level 9_3 maximum texture repeat D3D_FL9_3_MAX_TEXTURE_REPEAT (8192)