(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) |