機能の照会Capability querying

アプリケーションで、ID3D12Device::CheckFeatureSupport を呼び出すことで、リソース バインディングのサポート レベル (およびその他の多くの機能のサポート レベル) を検出できます。Your application can discover the level of support for resource binding (as well as the level of support for many other features), with a call to ID3D12Device::CheckFeatureSupport.

リソース バインディング層を照会する方法How to query for the resource binding tier

この最初の例では、リソース バインディングに焦点を当てています。This first example focuses on resource binding. 各リソース バインディング層は、機能のより低い層のスーパーセットであるため、所定の層で動作するコードは、より高い層で変更なしで動作します。Each resource binding tier is a superset of lower tiers in functionality, so code that works on a given tier works unchanged on any higher tier.

リソース バインディング層は、D3D12_RESOURCE_BINDING_TIER 列挙型の定数です。The resource binding tiers are constants in the D3D12_RESOURCE_BINDING_TIER enumeration.

リソース バインディング層を照会するには、次のようなコードを使用します。To query for the resource binding tier, use code such as this. このコード例では、各種の機能サポートを照会するための一般的なパターンが示されています。This code example demonstrates the general pattern for querying for any of the various kinds of feature support.

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) があるので注意してください。Note that any enumerated constant that you pass (D3D12_FEATURE_D3D12_OPTIONS, in this case) has a corresponding data structure that receives info about that feature or set of features (D3D12_FEATURE_DATA_D3D12_OPTIONS, in this case). 渡す列挙型定数に一致する構造体へのポインターを必ず渡してください。Always pass a pointer to the structure that matches the enumerated constant that you pass.

機能レベルを照会する方法How to query for any feature level

リソース バインディング層に加えて、その他の多数の機能についても、上記のコード例で示されている同じパターンを使用して機能のサポート レベルを照会できます。As well as the resource binding tier, there are many other features whose level of support you can query for using the same pattern shown in the code example above. D3D12_FEATURE 列挙型から異なる定数を ID3D12Device::CheckFeatureSupport に渡して (サポート情報を要求する機能を API に指示し)、一致する構造体のインスタンスへのポインター (要求した情報を受け取ります) を渡すだけです。You just pass a different constant from the D3D12_FEATURE enumeration to ID3D12Device::CheckFeatureSupport (to tell the API what feature to request support information on), and you pass a pointer to an instance of the matching structure (in which to receive the requested info).

DXGI 形式のハードウェア サポートHardware support for DXGI Formats

DXGI 形式とハードウェア機能の表を確認するには、次のトピックを参照してください。To view tables of DXGI formats and hardware features, refer to these topics.