機能の照会

アプリケーションで、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 に指示し)、一致する構造体のインスタンスへのポインター (要求した情報を受け取ります) を渡すだけです。

DXGI 形式のハードウェア サポート

DXGI 形式とハードウェア機能の表を確認するには、次のトピックを参照してください。