기능 쿼리
애플리케이션은 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 Format Support for Direct3D Feature Level 12.1 Hardware(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 형식에 대한 하드웨어 지원)