Уровни функций Direct3D
Чтобы справиться с разнообразием видеоадаптеров на новых и существующих компьютерах, Microsoft Direct3D 11 вводит концепцию уровней функций. В этом разделе рассматриваются уровни функций Direct3D.
Каждый карта видео реализует определенный уровень функциональности Microsoft DirectX (DX) в зависимости от установленных графических процессоров (GPU). В предыдущих версиях Microsoft Direct3D можно было узнать версию Direct3D, реализуемую видеоадаптером, а затем программировать приложение соответствующим образом.
В Direct3D 11 появилась новая парадигма, называемая уровнями функций. Уровень компонентов — это заданный набор функций GPU. Например, уровень функций 9_1 реализует функции, реализованные в Microsoft Direct3D 9, который предоставляет возможности моделей шейдеров ps_2_x и vs_2_x, а уровень компонентов 11_0 реализует функции, реализованные в Direct3D 11.
Теперь при создании устройства можно попытаться создать устройство для уровня функций, который требуется запросить. Если создать устройство удалось, этот уровень компонентов существует; если нет, оборудование не поддерживает этот уровень компонентов. Можно либо попробовать заново создать устройство на более низком уровне компонентов, либо закрыть приложение. Дополнительные сведения о создании устройства см. в разделе Функция D3D11CreateDevice .
Используя уровни функций, вы можете разработать приложение для Direct3D 9, Microsoft Direct3D 10 или Direct3D 11, а затем запустить его на оборудовании 9, 10 или 11 (за некоторыми исключениями; например, новые функции 11 не будут работать на существующих 9 карта). Вот несколько других основных свойств уровней функций:
- GPU, который позволяет создать устройство, соответствует функциональности этого уровня компонентов или превышает его.
- Уровень компонентов всегда включает функции предыдущих или более низких уровней функций.
- Уровень функций не подразумевает производительность, а только функциональные возможности. Производительность зависит от реализации оборудования.
- Выберите уровень функций при создании устройства Direct3D 11.
Сведения об ограничениях, создающих устройства неклавого типа на определенных уровнях функций, см. в разделе Ограничения создание WARP и эталонных устройств.
Чтобы помочь вам решить, какой уровень функций следует разрабатывать, сравните функции для каждого уровня компонентов.
В разделе Справочник по 10Level9 перечислены различия между поведением различных методов ID3D11Device и ID3D11DeviceContext на различных уровнях функций 10Level9.
Форматы номеров версий
Существует три формата для версий Direct3D, моделей шейдеров и уровней функций.
- Версии Direct3D используют точку; Например, Direct3D 12.0.
- Модели шейдеров используют точку; например, модель шейдера 5.1.
- Уровни признаков используют символ подчеркивания; например, уровень компонентов 12_0.
Поддержка функций Direct3D 12 (уровни компонентов с 12_2 по 11_0)
Для перечисленных уровней доступны следующие функции. Заголовки в верхней строке — это уровни функций Direct3D 12. Заголовки в левом столбце являются признаками. См . также сноски для таблиц.
Компонент \ Уровень компонентов | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
---|---|---|---|---|---|
Модель шейдера | 6,5 | 5.12 | 5.12 | 5.12 | 5.12 |
Модель драйвера WDDM | 2,0 | 1.x | 1.x | 1.x | 1.x |
Трассировка лучей | Уровень 1.1 | Необязательно | Необязательно | Необязательно | Необязательно |
Переменная скорость заливки | Уровень 2 | Необязательно | Необязательно | Необязательно | Необязательно |
Шейдер сетки | Уровень 1 | Необязательно | Необязательно | Необязательно | Необязательно |
Отзыв о выборке | Уровень 0.9 | Необязательно | Необязательно | Необязательно | Необязательно |
Привязка ресурсов | Уровень 3 | Уровень 3 | Уровень 3 | Уровень 3 | Уровень 1 |
Корневая подпись | 1,1 | 1 | 1 | 1 | 1 |
Тест границ глубины | да | Необязательно | Необязательно | Необязательно | Необязательно |
Немедленная запись буфера | Direct, Compute, Bundle | Необязательно | Необязательно | Необязательно | Необязательно |
Биты виртуальных адресов GPU | 4010 | 4010 | 4010 | ||
Ресурсы с плитками | Уровень 3 | Уровень 26 | Уровень 26 | Необязательно | Необязательно |
Консервативная растеризация | Уровень 3 | Уровень 16 | Необязательно | Необязательно | Нет |
Представления порядка растеризатора | Да | да | Необязательно | Необязательно | Нет |
Минимальное и максимальное число фильтров | Да | Да | да | Необязательно | Нет |
Сопоставление буфера по умолчанию | Недоступно | Необязательно | Необязательно | Необязательно | Необязательно |
Контрольное значение трафарета в шейдере | Необязательно | Необязательно | Необязательно | Необязательно | Нет |
Загрузка типизированного представления неупорядоченного доступа | 18 форматов, более необязательный | 18 форматов, более необязательный | 18 форматов, более необязательный | 3 формата, более необязательный | 3 формата, более необязательный |
Шейдер геометрии | Да | Да | Да | Да | Да |
Потоковая передача | Да | Да | Да | Да | Да |
DirectCompute / Вычислительный шейдер | Да | Да | Да | Да | Да |
Шейдеры корпусов и доменов | Да | Да | Да | Да | Да |
Компонент \ Уровень компонентов | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Массивы ресурсов текстуры | Да | Да | Да | Да | Да |
Массивы ресурсов cubemap | Да | Да | Да | Да | Да |
Сжатие BC4/BC5 | Да | Да | Да | Да | Да |
Сжатие BC6H/BC7 | Да | Да | Да | Да | Да |
Альфа-канал для покрытия | Да | Да | Да | Да | Да |
Расширенные форматы (BGRA и т. д.) | Да | Да | Да | Да | Да |
10-битный формат XR High Color | Да | Да | Да | Да | Да |
Логические операции (объединение выходных данных) | Да | Да | Да | Да | Необязательно1 |
Не зависят от целевого объекта растеризации | Да | Да | Да | Да | Нет |
Множественный целевой объект отрисовки (MRT) с ForcedSampleCount 1 | Да | Да | Да | Да | Необязательно1 |
Слоты UAV | Многоуровневый9 | 64 | 64 | 64 | 8 |
БПЛА на каждом этапе | Да | Да | Да | Да | Нет |
Компонент \ Уровень компонентов | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Максимальное число принудительных выборок для отрисовки только для UAV | 16 | 16 | 16 | 16 | 8 |
Смещение буфера констант и частичные обновления | Да | Да | Да | Да | Необязательно1 |
16 бит на пиксель (bpp) форматов | Да | Да | Да | Да | Необязательно1 |
Максимальное измерение текстуры | 16384 | 16384 | 16384 | 16384 | 16384 |
Max Cubemap Dimension | 16384 | 16384 | 16384 | 16384 | 16384 |
Максимальный экстент тома | 2048 | 2048 | 2048 | 2048 | 2048 |
Максимальное число повторов текстуры | 16384 | 16384 | 16384 | 16384 | 16384 |
Макс анизотропия | 16 | 16 | 16 | 16 | 16 |
Максимальное число примитивов | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 |
Индекс максимальной вершины | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 |
Максимальное число слотов ввода | 32 | 32 | 32 | 32 | 32 |
Целевые объекты одновременной отрисовки | 8 | 8 | 8 | 8 | 8 |
Компонент \ Уровень компонентов | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Запросы окклюзии | Да | Да | Да | Да | Да |
Отдельная альфа-смесь | Да | Да | Да | Да | Да |
Зеркальное отображение один раз | Да | Да | Да | Да | Да |
Перекрывающиеся элементы вершин | Да | Да | Да | Да | Да |
Независимые маски записи | Да | Да | Да | Да | Да |
Instancing | Да | Да | Да | Да | Да |
Неспособности из-2 условно3 | Нет | Нет | Нет | Нет | Нет |
Безусловно4 | Да | Да | Да | Да | Да |
Кроме того, устанавливаются следующие флаги:
Компонент \ Уровень компонентов | 12_28 |
---|---|
WaveOps | TRUE |
OutputMergerLogicOp | TRUE |
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation | TRUE |
CopyQueueTimestampQueriesSupported | TRUE |
CastingFullyTypedFormatSupported | TRUE |
Int64ShaderOps | TRUE |
Поддержка функций Direct3D 11 (уровни компонентов с 12_1 по 9_1)
Для перечисленных уровней доступны следующие функции. Заголовки в верхней строке представляют собой уровни функций Direct3D 11. Заголовки в левом столбце являются признаками. См . также сноски для таблиц.
Компонент \ Уровень компонентов | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Модель шейдера | 5.12 | 5.12 | 5.02 | 5.02 | 4.x | 4,0 | 2.0 (4_0_level_9_3) [vs_2_a/ps_2_x]5 | 2.0 (4_0_level_9_1) | 2.0 (4_0_level_9_1) | ||
Модель драйвера WDDM | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | ||
Плитки ресурсов | Уровень 26 | Уровень 26 | Необязательно | Необязательно | Нет | Нет | Нет | Нет | Нет | ||
Консервативная растеризация | Уровень 16 | Необязательно | Необязательно | Нет | Нет | Нет | Нет | Нет | Нет | ||
Представления порядка растеризатора | да | Необязательно | Необязательно | Нет | Нет | Нет | Нет | Нет | Нет | ||
Минимальные и максимальные фильтры | Да | да | Необязательно | Нет | Нет | Нет | Нет | Нет | Нет | ||
Сопоставление буфера по умолчанию | Необязательно | Необязательно | Необязательно | Необязательно | Нет | Нет | Нет | Нет | Нет | ||
Контрольное значение трафарета в шейдере | Необязательно | Необязательно | Необязательно | Нет | Нет | Нет | Нет | Нет | Нет | ||
Загрузка типизированного представления неупорядоченного доступа | 18 форматов, более необязательный | 18 форматов, более необязательный | 3 формата, более необязательный | 3 формата, более необязательный | Нет | Нет | Нет | Нет | Нет | ||
Шейдер геометрии | Да | Да | Да | Да | Да | Да | Нет | Нет | Нет | ||
Потоковая передача | Да | Да | Да | Да | Да | Да | Нет | Нет | Нет | ||
DirectCompute/ шейдер вычислений | Да | Да | Да | да | Необязательно | Необязательно | Н/Д | Н/Д | Н/Д | ||
Шейдеры корпусов и доменов | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Нет | ||
Компонент \ Уровень компонентов | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Массивы ресурсов текстуры | Да | Да | Да | Да | Да | Да | Нет | Нет | Нет | ||
Массивы ресурсов Cubemap | Да | Да | Да | Да | Да | Нет | Нет | Нет | Нет | ||
Сжатие BC4/BC5 | Да | Да | Да | Да | Да | Да | Нет | Нет | Нет | ||
Сжатие BC6H/BC7 | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Нет | ||
Альфа-охват | Да | Да | Да | Да | Да | Да | Нет | Нет | Нет | ||
Расширенные форматы (BGRA и т. д.) | Да | Да | Да | да | Необязательно | Необязательно | Да | Да | Да | ||
10-битный формат XR High Color | Да | Да | Да | да | Необязательно | Необязательно | Н/Д | Н/Д | Н/Д | ||
Логические операции (объединение выходных данных) | Да | Да | Да | Необязательно1 | Необязательно1 | Необязательно1 | Нет | Нет | Нет | ||
Не зависят от целевого объекта растеризации | Да | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
Множественный целевой объект отрисовки (MRT) с ForcedSampleCount 1 | Да | Необязательно1 | Необязательно1 | Необязательно1 | Нет | Нет | Нет | ||||
Слоты UAV | 64 | 64 | 64 | 8 | 1 | 1 | Недоступно | Н/Д | Н/Д | ||
БПЛА на каждом этапе | Да | Да | Да | Нет | Нет | Нет | Н/Д | Н/Д | Н/Д | ||
Компонент \ Уровень компонентов | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Максимальное число принудительных выборок для отрисовки только для UAV | 16 | 16 | 16 | 8 | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | ||
Смещение буфера констант и частичные обновления | Да | Да | Да | Необязательно1 | Необязательно1 | Необязательно1 | Да1 | Да1 | Да1 | ||
Форматы 16 бит на пиксель (bpp) | Да | Да | Да | Необязательно1 | Необязательно1 | Необязательно1 | Необязательно1 | Необязательно1 | Необязательно1 | ||
Максимальное измерение текстуры | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 4096 | 2048 | 2048 | ||
Max Cubemap Dimension | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 4096 | 512 | 512 | ||
Максимальный экстент тома | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 256 | 256 | 256 | ||
Максимальное число повторов текстуры | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 8192 | 2048 | 128 | ||
Макс анизотропия | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 2 | ||
Максимальное число примитивов | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 1048575 | 1048575 | 65535 | ||
Индекс максимальной вершины | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 1048575 | 1048575 | 65534 | ||
Максимальное число слотов ввода | 32 | 32 | 32 | 32 | 32 | 16 | 16 | 16 | 16 | ||
Целевые объекты одновременной отрисовки | 8 | 8 | 8 | 8 | 8 | 8 | 4 | 1 | 1 | ||
Компонент \ Уровень компонентов | 12_28 | 12_10 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Запросы окклюзии | Да | Да | Да | Да | Да | Да | Да | Да | Нет | ||
Отдельная альфа-смесь | Да | Да | Да | Да | Да | Да | Да | Да | Нет | ||
Зеркальное отображение один раз | Да | Да | Да | Да | Да | Да | Да | Да | Нет | ||
Перекрывающиеся элементы вершин | Да | Да | Да | Да | Да | Да | Да | Да | Нет | ||
Независимые маски записи | Да | Да | Да | Да | Да | Да | Да | Нет | Нет | ||
Instancing | Да | Да | Да | Да | Да | Да | Да7 | Нет | Нет | ||
Несиловые 2 условно3 | Нет | Нет | Нет | Нет | Нет | Нет | Да | Да | Да | ||
Безусловно4 | Да | Да | Да | Да | Да | Да | Нет | Нет | Нет |
Сноски для таблиц
0 Требуется среда выполнения Direct3D 11.3 или Direct3D 12.
1 Требуется среда выполнения Direct3D 11.1.
2 Модель шейдера 5.0 и более поздних версий может при необходимости поддерживать шейдеры двойной точности, расширенные шейдеры двойной точности, инструкции шейдера SAD4 и шейдеры частичной точности. Чтобы определить параметры модели шейдера 5.0, доступные для DirectX 11, вызовите ID3D11Device::CheckFeatureSupport. Некоторая совместимость зависит от того, на каком оборудовании вы работаете. Модель шейдера версии 5.1 и более поздних версий поддерживается только через API DirectX 12, независимо от используемого уровня компонентов. DirectX 11 поддерживает только модель шейдера 5.0. API DirectX 12 переходит только на уровень компонентов 11_0.
3 На уровнях компонентов 9_1, 9_2 и 9_3 устройство отображения поддерживает использование объемных текстур с размерами, которые не являются двумя при двух условиях. Во-первых, для каждой текстуры можно создать только один уровень MIP-карты, а во-вторых, для текстур не разрешены режимы выборки оболочки (то есть для элементов AddressU, AddressV и AddressWD3D11_SAMPLER_DESC нельзя задать значение D3D11_TEXTURE_ADDRESS_WRAP).
4 На уровнях компонентов 10_0, 10_1 и 11_0 устройство отображения безоговорочно поддерживает использование двухуровневых текстур с размерами, которые не являются двумя.
5 Вершинный шейдер 2a с 256 инструкциями, 32 временными регистрами, статическим управлением потоком глубины 4, динамическим управлением потоком глубины 24 и D3DVS20CAPS_PREDICATION. Пиксельный шейдер 2x с 512 инструкциями, 32 временными регистрами, статическим управлением потоком глубины 4, динамическим потоком глубины 24, D3DPS20CAPS_ARBITRARYSWIZZLE, D3DPS20CAPS_GRADIENTINSTRUCTIONS, D3DPS20CAPS_PREDICATION, D3DPS20CAPS_NODEPENDENTREADLIMIT и D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT.
6 Более высокие уровни необязательные.
7 Для уровня признаков 9_3 единственными поддерживаемыми методами отрисовки являются Draw, DrawIndexed и DrawIndexInstanced. Кроме того, для уровня компонентов 9_3 отрисовка точечного списка поддерживается только для отрисовки с помощью draw.
8 Поддерживается Windows 11.
9 В API Direct3D 12 существуют ограничения на количество дескрипторов в куче CBV,SRV/UAV. Дополнительные сведения см. в разделе Уровни оборудования . Отдельно существует ограничение на количество БПЛА во всех таблицах дескрипторов на всех этапах, основанное на уровне привязки ресурсов.
10 Для 64-разрядного процесса требуется 40 бит адресного пространства для каждого ресурса и каждого процесса. 32-разрядный процесс может быть ограничен 31 битом адресного пространства. В API доступны две возможности (ограничения) — для каждого процесса и для каждого ресурса. Адресное пространство для каждого процесса всегда больше или равно пространству адресов для каждого ресурса.
Дополнительные сведения о поддержке формата на разных аппаратных уровнях функций см. в:
- Поддержка формата DXGI для оборудования Уровня компонентов Direct3D 12.1
- Поддержка формата DXGI для оборудования Уровня компонентов Direct3D 12.0
- Поддержка формата DXGI для оборудования Уровня компонентов Direct3D 11.1
- Поддержка формата DXGI для оборудования Direct3D Feature Level 11.0
- Поддержка оборудования для форматов Direct3D 10Level9
- Поддержка оборудования для форматов Direct3D 10.1
- Поддержка оборудования для форматов Direct3D 10