Запрашивание возможностей
Приложение может определить уровень поддержки привязки ресурсов (а также уровень поддержки многих других функций) с помощью вызова ID3D12Device::CheckFeatureSupport.
Как запросить уровень привязки ресурсов
В этом первом примере основное внимание уделяется привязке ресурсов. Каждый уровень привязки ресурсов является надмножеством более низких уровней в функциональных возможностях, поэтому код, работающий на данном уровне, работает без изменений на любом более высоком уровне.
Уровни привязки ресурсов являются константами в перечислении D3D12_RESOURCE_BINDING_TIER .
Чтобы запросить уровень привязки ресурсов, используйте следующий код. В этом примере кода демонстрируется общий шаблон для запроса для любого из различных типов поддержки функций.
D3D12_RESOURCE_BINDING_TIER get_resource_binding_tier(::ID3D12Device* pIDevice)
{
D3D12_FEATURE_DATA_D3D12_OPTIONS featureSupport{};
winrt::check_hresult(
pIDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &featureSupport, sizeof(featureSupport))
);
switch (featureSupport.ResourceBindingTier)
{
case D3D12_RESOURCE_BINDING_TIER_1:
// Tier 1 is supported.
break;
case D3D12_RESOURCE_BINDING_TIER_2:
// Tiers 1 and 2 are supported.
break;
case D3D12_RESOURCE_BINDING_TIER_3:
// Tiers 1, 2, and 3 are supported.
break;
}
return featureSupport.ResourceBindingTier;
}
Обратите внимание, что любая передаваемая вами перечисляемая константа (в данном случае D3D12_FEATURE_D3D12_OPTIONS) имеет соответствующую структуру данных, которая получает сведения об этой функции или наборе признаков (в данном случае D3D12_FEATURE_DATA_D3D12_OPTIONS). Всегда передайте указатель на структуру, соответствующую передаваемой перечисляемой константе.
Как запросить любой уровень компонентов
Помимо уровня привязки ресурсов, существует множество других функций, уровень поддержки которых можно запросить, используя тот же шаблон, который показан в примере кода выше. Вы просто передаете константу, отличную от перечисления D3D12_FEATURE , в ID3D12Device::CheckFeatureSupport (чтобы сообщить API, к какой функции следует запросить сведения о поддержке) и передаете указатель на экземпляр соответствующей структуры (в которой нужно получить запрошенные сведения).
- Передача D3D12_FEATURE_ARCHITECTURE и D3D12_FEATURE_DATA_ARCHITECTURE.
- Передача D3D12_FEATURE_ARCHITECTURE1 и D3D12_FEATURE_DATA_ARCHITECTURE1.
- Передача D3D12_FEATURE_COMMAND_QUEUE_PRIORITY и D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY.
- Передача D3D12_FEATURE_CROSS_NODE и D3D12_FEATURE_DATA_CROSS_NODE.
- Передача D3D12_FEATURE_D3D12_OPTIONS и D3D12_FEATURE_DATA_D3D12_OPTIONS.
- Передача D3D12_FEATURE_D3D12_OPTIONS1 и D3D12_FEATURE_DATA_D3D12_OPTIONS1.
- Передача D3D12_FEATURE_D3D12_OPTIONS2 и D3D12_FEATURE_DATA_D3D12_OPTIONS2.
- Передача D3D12_FEATURE_D3D12_OPTIONS3 и D3D12_FEATURE_DATA_D3D12_OPTIONS3.
- Передача D3D12_FEATURE_D3D12_OPTIONS4 и D3D12_FEATURE_DATA_D3D12_OPTIONS4.
- Передача D3D12_FEATURE_D3D12_OPTIONS5 и D3D12_FEATURE_DATA_D3D12_OPTIONS5.
- Передача D3D12_FEATURE_EXISTING_HEAPS и D3D12_FEATURE_DATA_EXISTING_HEAPS.
- Передача D3D12_FEATURE_FEATURE_LEVELS и D3D12_FEATURE_DATA_FEATURE_LEVELS.
- Передача D3D12_FEATURE_FORMAT_INFO и D3D12_FEATURE_DATA_FORMAT_INFO.
- Передача D3D12_FEATURE_FORMAT_SUPPORT и D3D12_FEATURE_DATA_FORMAT_SUPPORT.
- Передача D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT и D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT.
- Передача D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS и D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS.
- Передача D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT и D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT.
- Передача D3D12_FEATURE_ROOT_SIGNATURE и D3D12_FEATURE_DATA_ROOT_SIGNATURE.
- Передача D3D12_FEATURE_SERIALIZATION и D3D12_FEATURE_DATA_SERIALIZATION.
- Передача D3D12_FEATURE_SHADER_CACHE и D3D12_FEATURE_DATA_SHADER_CACHE.
- Передача D3D12_FEATURE_SHADER_MODEL и D3D12_FEATURE_DATA_SHADER_MODEL.
Аппаратная поддержка форматов DXGI
Чтобы просмотреть таблицы форматов DXGI и функций оборудования, ознакомьтесь с этими разделами.
- Поддержка формата DXGI для оборудования Уровня компонентов Direct3D 12.1
- Поддержка формата DXGI для оборудования Уровня компонентов Direct3D 12.0
- Поддержка формата DXGI для оборудования Уровня компонентов Direct3D 11.1
- Поддержка формата DXGI для оборудования уровня компонентов Direct3D 11.0
- Аппаратная поддержка форматов Direct3D 10Level9
- Поддержка оборудования для форматов Direct3D 10.1
- Аппаратная поддержка форматов Direct3D 10