(Direct3D 11) 的资源限制

本主题包含 Direct3D 11 支持 (特别是 功能级别 11 或 9.x 硬件) 的资源列表。

功能级别 11 硬件的资源限制

所有这些资源限制在 D3d11.h 中定义为常量。

资源 限制
常量缓冲区中的元素数 D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT (4096)
独立于缓冲区中结构大小) (纹素数 D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP (2 7) 纹素
Texture1D U 维度 D3D11_REQ_TEXTURE1D_U_DIMENSION (16384)
Texture1DArray 维度 D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION (2048 数组切片)
Texture2D U/V 维度 D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION (16384)
Texture2DArray 维度 D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION (2048 数组切片)
Texture3D U/V/W 维度 D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (2048)
TextureCube 维度 D3D11_REQ_TEXTURECUBE_DIMENSION (16384)
上述任何资源的资源大小 (MB) min (max (128,0.25f * (量专用 VRAM) ) ,2048) MB
D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM (128)
D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM (0.25f)
D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM (2048)
各向异性筛选 maxanisotropy D3D11_REQ_MAXANISOTROPY (16)
可通过筛选硬件来寻址的资源维度 每个维度D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION (16384)
资源大小 (MB) 可通过 IA (输入或顶点数据) 或 VS/GS/PS (点示例) 最大 (128,0.25f * (专用 VRAM 量) ) MB
D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM (128)
D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM (0.25f)
每个上下文的资源视图总数 (每个数组计为 1) (所有视图类型都有共享限制) D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP (2 )
多元素) (缓冲区结构大小 D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES (2048 字节)
流输出大小 与缓冲区中的纹素数相同, (前面的)
Draw 或 DrawInstanced 顶点计数 (包括实例化) D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP (2 )
DrawIndexed[Instanced] () 顶点计数 (包括实例化) D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP (2 )
GS 调用输出数据 (组件 * 顶点) D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES (1024)
每个上下文的采样器对象总数 D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE (4096)
每个管道的视区/scissor 对象总数 D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE (16)
每个顶点的剪辑/截距总数 D3D11_CLIP_OR_CULL_DISTANCE_COUNT (8)
每个上下文的混合对象总数 D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE (4096)
每个上下文的深度/模具对象总数 D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE (4096)
每个上下文的光栅器状态对象总数 D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE (4096)
多重采样期间每个像素的最大采样计数 D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT (32)
着色器资源顶点元素计数 (4 个 32 位组件) D3D11_STANDARD_VERTEX_ELEMENT_COUNT (32)
通用着色器核心 (四个 32 位组件,) r# + 可索引 x#[n]) (临时寄存器计数 D3D11_COMMONSHADER_TEMP_REGISTER_COUNT (4096)
Common-shader core constant-buffer 槽 D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT (15) (+1 为着色器中的即时常量缓冲区预留)
Common-shader core input-resource 槽 D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT (128)
通用着色器核心采样器槽 D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT (16)
Common-shader 核心子例程嵌套限制 D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT (32)
通用着色器核心流控制嵌套限制 D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT (64)
顶点着色器输入寄存器计数 (四个 32 位组件) D3D11_VS_INPUT_REGISTER_COUNT (32)
顶点着色器输出寄存器计数 (四个 32 位组件) D3D11_VS_OUTPUT_REGISTER_COUNT (32)
几何着色器输入寄存器计数 (四个 32 位组件) D3D11_GS_INPUT_REGISTER_COUNT (32)
几何着色器输出寄存器计数 (四个 32 位组件) D3D11_GS_OUTPUT_REGISTER_COUNT (32)
像素着色器输入寄存器计数 (四个 32 位组件) D3D11_PS_INPUT_REGISTER_COUNT (32)
像素着色器输出槽 8
像素着色器输出深度寄存器计数 (一个 32 位分量) D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT (1)
输入汇编程序索引输入资源槽 D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT (1)
输入汇编程序顶点输入资源槽 D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT (32)
外壳着色器控制点输入寄存器计数 (四个 32 位组件) D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT (32)
外壳着色器输入控制点数 D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
外壳着色器控制点输出寄存器计数 (四个 32 位组件) D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT (32)
外壳着色器输出控制点数 D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
外壳着色器修补常量输出寄存器计数 (四个 32 位组件) D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT (32)
域着色器控制点输入寄存器计数 (四个 32 位组件) D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT (32)
输入控制点的域着色器数 D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT (32)
域着色器修补常量输入寄存器计数 (四个 32 位组件) D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT (32)
域着色器细化顶点输出寄存器计数 (四个 32 位组件) D3D11_DS_OUTPUT_REGISTER_COUNT (32)
UAV) 槽 (计算着色器无序访问视图 D3D11_PS_CS_UAV_REGISTER_COUNT (8) 4
资源磁贴大小(以字节为单位) D3D11_2_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )

应用可以尝试为资源分配超过最大资源大小所指定的内存。 也就是说,Direct3D 11 运行时允许在硬件可能支持这些内存分配尝试的情况下进行。 但是,Direct3D 11 运行时仅保证所有 功能级别 11 硬件都支持最大资源大小的分配。 如果应用尝试在最大资源大小内为资源分配内存,则仅当操作系统耗尽资源时,运行时才会失败。 如果应用尝试为超过最大资源大小的资源分配内存,运行时可能会使尝试失败,因为操作系统过度扩展或硬件不支持超过最大资源大小的分配。 调试层仅检查D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM (128) MB。

像素着色器输出槽在像素输出寄存器之间共享, (四个 32 位组件) 和 UAV。

域着色器控制点的所有外壳着色器组件总数限制为 3968,比最大控制点数乘以最大控制点寄存器乘以四个分量少 128 个。

4对于计算着色器配置文件CS_4_0和CS_4_1只有 1 个 UAV 可用。 有关着色器配置文件的详细信息,请参阅 着色器模型 5

功能级别 9.x 硬件的资源限制

所有这些 9.x 功能级别 资源限制都定义为 D3dcommon.h 中的常量。

资源 限制
功能级别 9_1 texture1D U 尺寸 D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION (2048)
功能级别 9_3 texture1D U 维度 D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION (4096)
功能级别 9_1 texture2D U/V 维度 D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION (2048)
功能级别 9_3 texture2D U/V 维度 D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION (4096)
功能级别 9_1 texture3D U/V/W 维度 D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (256)
功能级别 9_1 textureCube 维度 D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION (512)
功能级别 9_3 textureCube 维度 D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION (4096)
功能级别 9_1 各向异性筛选 maxanisotropy 默认值 D3D_FL9_1_DEFAULT_MAX_ANISOTROPY (2)
功能级别 9_1 最大输入汇编程序基元 D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT (65535)
功能级别 9_2 最大输入汇编程序基元 D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT (1048575)
功能级别 9_1 同时呈现目标 D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT (1)
功能级别 9_3 同时呈现目标 D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT (4)
功能级别 9_1 最大纹理重复 D3D_FL9_1_MAX_TEXTURE_REPEAT (128)
功能级别 9_2 最大纹理重复 D3D_FL9_2_MAX_TEXTURE_REPEAT (2048)
功能级别 9_3 最大纹理重复 D3D_FL9_3_MAX_TEXTURE_REPEAT (8192)

资源