功能查询
通过调用 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 格式和硬件功能的表,请参阅以下主题。
- Direct3D 功能级别 12.1 硬件的 DXGI 格式支持
- DXGI Format Support for Direct3D Feature Level 12.0 Hardware(Direct3D 功能级别 12.0 硬件的 DXGI 格式支持)
- DXGI Format Support for Direct3D Feature Level 11.1 Hardware(Direct3D 功能级别 11.1 硬件的 DXGI 格式支持)
- DXGI Format Support for Direct3D Feature Level 11.0 Hardware(Direct3D 功能级别 11.0 硬件的 DXGI 格式支持)
- Hardware Support for Direct3D 10Level9 Formats(Direct3D 10Level9 格式的硬件支持)
- Hardware Support for Direct3D 10.1 Formats(Direct3D 10.1 格式的硬件支持)
- Hardware Support for Direct3D 10 Formats(Direct3D 10 格式的硬件支持)