Уровни функций 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 доступны две возможности (ограничения) — для каждого процесса и для каждого ресурса. Адресное пространство для каждого процесса всегда больше или равно пространству адресов для каждого ресурса.

Дополнительные сведения о поддержке формата на разных аппаратных уровнях функций см. в: