Поделиться через


Ограничения ресурсов (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) тексели
Измерение U текстуры Texture1D D3D11_REQ_TEXTURE1D_U_DIMENSION (16384)
Измерение Texture1DArray D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION (2048 слоев массива)
Измерение текстуры 2D по U/V D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION (16384)
Размерность Texture2DArray D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION (массив из 2048 слоёв)
Измерение текстур3D U/V/W D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (2048)
Измерение текстурного куба D3D11_REQ_TEXTURECUBE_DIMENSION (16384)
Размер ресурса (в МБ) для любого из предыдущих ресурсов min(max(128,0,25f * (объем выделенной виртуальной памяти)), 2048 МБ
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) для каждого измерения
Размер ресурса (в МБ), адресируемый IA (входные данные и/или вершинные данные) или VS/GS/PS (точечная выборка) max(128,0,25f * (объем выделенного VRAM)) МБ
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 байт)
Размер выходных данных потока Совпадает с числом текселей в буфере (см. выше)
Число вершин для отрисовки или отрисовки с инстансами (включая инстансирование) 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)
Общее количество объектов sampler на один контекст D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE (4096)
Общее количество объектов viewport/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 (32)
Количество элементов вершинного шейдера (четыре 32-разрядных компонента) D3D11_STANDARD_VERTEX_ELEMENT_COUNT (32)
Общий шейдерный модуль (четыре 32-разрядных компонента) количество временных регистров (r# + индексируемый x#[n]) D3D11_COMMONSHADER_TEMP_REGISTER_COUNT (4096)
Слоты константного буфера общего шейдера D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT (15) (+1, зарезервирован для буфера мгновенных констант в шейдерах)
Основные слоты входных ресурсов общего шейдера D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT (128)
Основные слоты семплеров общего шейдера Количество слотов для семплеров в общих шейдерах D3D11: 16
Ограничение глубины вложенности подпрограмм общего шейдера 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 (Количество входных регистров PS в D3D11: 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 МБ).

Выходные слоты шейдера пикселей разделяются между регистрами вывода пикселей (четырьмя 32-разрядными компонентами) и UAV.

Общее количество компонентов для всех контрольных точек шейдера корпуса на шейдер домена ограничено 3968, что на 128 меньше, чем максимальное количество контрольных точек, умноженное на максимальное количество регистров контрольных точек, умноженное на четыре компонента.

Для профилей вычислительных шейдеров CS_4_0 и CS_4_1 доступен только 1 UAV. Дополнительные сведения о профилях шейдеров см. в Shader Model 5.

Ограничения ресурсов для аппаратного обеспечения уровня функций 9.x

Все эти 9.x уровне функций ограничения ресурсов заданы как константы в D3dcommon.h.

Ресурс Предел
уровень возможностей измерение texture1D 9_1 U D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION (2048)
уровень возможностей 9_3 текстура 1D U измерение D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION (4096)
уровень компонентов 9_1 для текстуры 2D U/V измерение D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION (2048)
уровень возможностей текстура2D 9_3 с измерением вдоль U/V D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION (4096)
уровне компонентов 9_1 измерение текстуры 3D U/V/W D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (256)
уровень возможностей измерение textureCube 9_1 D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION (512)
уровень функций измерение textureCube 9_3 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)

Ресурсов