Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Чтобы справиться с разнообразием видеоадаптеров на новых и существующих компьютерах, 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