Direct3D 12 Core 1.0 機能レベル

コア 1.0 機能レベルは、完全なDirect3D 12機能セットのサブセットです。 コア 1.0 機能レベルは、 コンピューティング専用デバイスと呼ばれるデバイスのカテゴリによって公開できます。 コンピューティング専用デバイスの全体的なドライバー モデルは、Microsoft Compute Driver Model (MCDM) です。 MCDM は、より大きなスコープを持つ Windows デバイス ドライバー モデル (WDDM) のスケールダウン ピアです。

コア機能レベル内の機能 のみを サポートするデバイスは、 Core デバイスと呼ばれます。

Note

コンピューティング専用デバイスMCDM デバイスコア機能レベル デバイスおよびコア デバイス はすべて同じことを意味します。 わかりやすくするために 、Core デバイス を使用します。

コア デバイスの作成

一般に、Direct3D 12 デバイスを作成するには、D3D12CreateDevice 関数を呼び出し、最小機能レベルを指定します。

機能レベルを 9 から 12 に指定した場合、返されるデバイスは、従来の GPU (コア デバイスの機能のスーパーセットをサポートする) などの機能豊富なデバイスです。 コア デバイスは、その範囲の機能レベルに対して返されることはありません。

一方、コア機能レベル ( たとえば、D3D_FEATURE_LEVEL::D 3D_FEATURE_LEVEL_1_0_CORE) を指定した場合、返されるデバイスは機能豊富であるか、コア デバイスである可能性があります。

// d3dcommon.h
D3D_FEATURE_LEVEL_1_0_CORE = 0x1000

機能レベルを _CORE 指定した場合、ランタイム/デバッグ レイヤーは、アプリケーションで使用する機能がその _CORE 機能レベルで許可されていることを検証します。 この一連の機能については、このトピックで後述します。

コア デバイスのシェーダー モデル

コア デバイスでは、シェーダー モデル 5.0 以降がサポートされています。

ランタイムは、5.x 以外の DXIL シェーダー モデルから 6.0 DXIL への変換を実行します。 そのため、ドライバーは 6.x のみをサポートする必要があります。

コア デバイスのリソース管理モデル

  • サポートされているリソース ディメンション: 生バッファーと構造化バッファーのみ (型指定されたバッファー、texture1d/2D など)
  • 予約済み (タイル化) リソースのサポートなし
  • カスタム ヒープのサポートなし
  • 次のヒープ フラグはサポートされません。
    • D3D12_HEAP_FLAG_HARDWARE_PROTECTED
    • D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
    • D3D12_HEAP_FLAG_ALLOW_DISPLAY
    • D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS (シェーダーアトミックが必要です。このフラグは別の機能であるクロス アダプター アトミック用です)

コア デバイスのリソース バインド モデル

  • リソース バインド層 1 のみのサポート
  • 例外:
    • テクスチャ サンプラーのサポートなし
    • 機能レベル 11.1 以降などの 64 の UAV のサポート (8 台のみではなく)
    • 実装では、記述子を介したリソースへのシェーダー アクセスに対する境界チェックを実装する必要はありません。範囲外のアクセスでは未定義の動作が生成されます。
      • 副生物として、ルート署名でD3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS記述子範囲フラグはサポートされていません。
  • UAV/CBV 記述子は、既定のヒープからのリソースでのみ作成できます (そのため、アップロード/読み戻しヒープはありません)。 これにより、アプリケーションがコピーを実行して、CPU-GPU<> 全体でデータを取得する必要があります。
  • バインディング機能レベルが最も低いにもかかわらず、このレベルでも呼び出す価値のあるいくつかの機能が必要です。
    • 記述子ヒープは、コマンド リストが記録された後に更新できます (リソース バインド 仕様の「D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE」を参照してください)
    • ルート記述子は基本的に GPUVA ポインターです
      • MMU/VA のサポートはありませんが、ルート記述子で使用されるバッファーVAは、アドレス修正を行うことで実装によってエミュレートできます。

構造化バッファーの制限

構造化バッファーには、4 バイトアラインされたベース アドレスが必要で、ストライドは 2 または 4 の倍数である必要があります。 ストライドが 2 の場合は、特にD3D_FEATURE_LEVEL_1_0_COREで型指定されたバッファーがサポートされていないことを考えると、16 ビット データを持つアプリの場合です。

記述子で指定されたストライドは、HLSL で指定されたストライドと一致する必要があります。

コア デバイスのコマンド キューのサポート

キューのみを計算してコピーします (3D、ビデオなどのキューはありません)。

コア デバイスに対するシェーダーのサポート

コンピューティング シェーダーのみ。グラフィックス シェーダー (頂点、ピクセル シェーダーなど) も、レンダー ターゲット、スワップ チェーン、入力アセンブラーなどの関連機能もありません。

算術精度

コア デバイスは、16 ビット浮動小数点操作でデノルムをサポートする必要はありません。

コア デバイスでサポートされている API

次の一覧は、完全なアプリケーション プログラミング インターフェイスのサポートされているサブセットを表しています (Core 1.0 機能レベルでサポート されていない API は一覧 に表示されません )。

ID3D12Device メソッド

ID3D12Device1 メソッド

ID3D12Device2 メソッド

ID3D12Device3 メソッド

ID3D12Device4 メソッド

ID3D12Device5 メソッド

ID3D12CommandQueue メソッド

ID3D12CommandList メソッド

ID3D12GraphicsCommandList メソッド

ID3D12GraphicsCommandList1 メソッド

ID3D12GraphicsCommandList2 メソッド

ID3D12GraphicsCommandList4 メソッド