Исключения

Некоторые функции Direct3D 11 не полностью определены уровнями функций. В этом разделе описываются исключения при использовании Direct3D 11 на оборудовании нижнего уровня. Возможно, компонент был добавлен после определения уровня компонентов (и требует обновленного драйвера) или, возможно, разные GPU реализуют совершенно разные реализации. Исключения уровня компонентов можно объединить в следующие группы:

В разделе Справочник по 10Level9 перечислены различия между поведением различных методов ID3D11Device и ID3D11DeviceContext на различных уровнях функций 10Level9.

Расширенные форматы

Расширенный формат — это формат пикселей, добавленный в Direct3D 10.1 и Direct3D 11 для уровней компонентов 10_0 и 10_1. Для расширенного формата требуется обновленный драйвер (для Direct3D 10_1 или более поздней версии). Используйте ID3D11Device::CheckFormatSupport и ID3D11Device::CheckFeatureSupport , чтобы запросить поддержку этих расширенных форматов.

Расширенный формат:

  • Добавлена поддержка порядка BGRA для 8-разрядных ресурсов для каждого компонента.
  • Разрешает приведение буфера цепочки буферов с целым числом значений. Это позволяет приложению добавлять или удалять суффикс _SRGB или отрисовывать их в цепочке буферов XR_BIAS.
  • Добавляет необязательную поддержку DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM.
  • Гарантирует, что цепочка буферов DXGI_FORMAT_R16G16B16A16_FLOAT будет представлена так, как если бы содержащиеся данные не были закодированы в sRGB.

Полный набор расширенных форматов либо полностью поддерживается, либо не поддерживается, за исключением формата XR_BIAS. Формат XR_BIAS:

  • Не поддерживается на любом уровне 9
  • Необязательно на уровне 10_0 или 10_1
  • Гарантируется на уровне 11_0

Сглаживание с несколькими выборками

Реализации MSAA имеют мало общего в реализации GPU. На уровне компонентов 10.1 добавлены четко определенные минимумы, но на более низких уровнях функций MSAA необходимо тестировать явным образом с помощью ID3D11Device::CheckMultisampleQualityLevels.

Размеры Texture2D

Уровень функций гарантирует, что можно создать минимальный размер, однако приложение может создавать текстуры большего размера до полного размера, поддерживаемого GPU. Приложение должно ожидать сбой от метода, например ID3D11Device::CreateTexture2D , если превышено максимальное значение.

Особое поведение адаптеров для уровня компонентов 9

Три самых низких уровня функций, D3D_FEATURE_LEVEL_9_1, D3D_FEATURE_LEVEL_9_2 и D3D_FEATURE_LEVEL_9_3, совместно используют общую библиотеку DLL реализации и рассматривают аргумент IDXGIAdapter в D3D11CreateDevice[AndSwapchain] как адаптер шаблона и создают собственный адаптер как часть создания устройства. Это означает, что IDXGIAdapter , переданный в процедуру создания, будет не тем же адаптером, что и адаптер, полученный с устройства через IDXGIDevice::GetAdapter. Результатом этого является то, что idXGIOutputs , перечисленные из переданного адаптера, нельзя использовать для входа в полноэкранный режим с помощью любого устройства уровня 9, так как эти выходные данные не принадлежат адаптеру устройства. Рекомендуется отменить переданный адаптер шаблона и получить созданный на устройстве адаптер с помощью IDXGIDevice::GetAdapter, где IDXGIDevice можно получить с помощью QueryInterface из интерфейса устройства Direct3D.

Direct3D 11 на оборудовании нижнего уровня