Direct3D の機能レベル

Microsoft Direct3D 11 では、新規および既存のマシンでのビデオ カードの多様性に対応するために、機能レベルの概念が導入されています。 このトピックでは、Direct3D 機能レベルについて説明します。

各ビデオ カードは、取り付けられている GPU (グラフィックス処理装置) に応じて、特定のレベルの Microsoft DirectX (DX) 機能を実装します。 以前のバージョンの Microsoft Direct3D では、ビデオ カードが実装しているバージョンを検出し、それに応じてアプリケーションをプログラミングすることができました。

Direct3D 11 では、機能レベルと呼ばれる新しいパラダイムが導入されます。 機能レベルは、明確に定義された GPU 機能のセットです。 たとえば、9_1 機能レベルでは、Microsoft Direct3D 9 で実装された機能が実装され、シェーダー モデルの機能 ps_2_xvs_2_xが公開されますが、11_0 機能レベルでは Direct3D 11 で実装された機能が実装されます。

デバイスを作成するとき、必要な機能レベルのデバイスの作成を試行できます。 デバイスの作成に成功した場合は、その機能レベルが存在します。失敗した場合は、ハードウェアはその機能レベルをサポートしていません。 低い機能レベルでデバイスを再作成してみることも、アプリケーションの終了を選択することもできます。 デバイスの作成の詳細については、 D3D11CreateDevice 関数を 参照してください。

機能レベルを使用すると、Direct3D 9、Microsoft Direct3D 10、または Direct3D 11 用のアプリケーションを開発し、9、10、または 11 のハードウェアで実行できます (たとえば、新しい 11 の機能は既存の 9 カードでは実行されません)。 機能レベルのその他の基本的なプロパティを次に示します。

  • デバイスの作成を許可する GPU は、その機能レベルを満たすか上回る機能を持ちます。
  • 機能レベルには、以前または下位の機能レベルの機能が必ず含まれます。
  • 機能レベルでは、パフォーマンスは示されず、機能のみ示されます。 パフォーマンスは、ハードウェアの実装によって決まります。
  • Direct3D 11 デバイスを作成するときに機能レベルを選択します。

特定の機能レベルでのハードウェア以外のデバイスの作成に関する制限事項については、「 WARP および参照デバイスの作成に関する制限事項」を参照してください。

設計する機能レベルを決定するのに役立つには、各機能レベルの特徴量を比較します。

「10Level9 リファレンス」セクションでは、さまざまな ID3D11Device メソッドと ID3D11DeviceContext メソッドがさまざまな 10Level9 機能レベルでどのように動作するかの違いを示します。

バージョン番号の形式

Direct3D バージョン、シェーダー モデル、および機能レベルには、3 つの形式があります。

  • Direct3D のバージョンではピリオドが使用される (例: Direct3D 12.0)。
  • シェーダー モデルではピリオドが使用される (例: シェーダー モデル 5.1)。
  • 機能レベルではアンダースコアが使用されます。たとえば、機能レベル 12_0 です。

Direct3D 12機能のサポート (機能レベル 12_2 から 11_0)

一覧表示されている機能レベルでは、次の機能を使用できます。 上部の行の見出しは、機能レベルDirect3D 12。 左側の列の見出しは機能です。 テーブルの 脚注も参照してください。

機能 \ 機能レベル 12_28 12_10 12_00 11_11 11_0
シェーダー モデル 6.5 5.12 5.12 5.12 5.12
WDDM ドライバー モデル 2.0 1.x 1.x 1.x 1.x
レイトレーシング レベル 1.1 オプション オプション オプション オプション
可変シェーディング レート 階層 2 オプション オプション オプション オプション
メッシュ シェーダー 階層 1 オプション オプション オプション オプション
サンプラーのフィードバック レベル 0.9 オプション オプション オプション オプション
リソース バインド 階層 3 階層 3 階層 3 階層 3 階層 1
ルート署名 1.1 1 1 1 1
深度境界テスト はい 省略可能 オプション オプション オプション
書き込みバッファーを即時に作成する Direct、Compute、Bundle オプション オプション オプション オプション
GPU 仮想アドレス ビット 4010 4010 4010
タイル化されたリソース Tier3 レベル 26 レベル 26 オプション オプション
保守的なラスター化 Tier3 階層 16 オプション 省略可能 いいえ
ラスタライザーの順序ビュー はい はい 省略可能 省略可能 いいえ
最小/最大フィルター はい はい はい 省略可能 いいえ
既定バッファーのマップ 該当なし 省略可能 オプション オプション オプション
シェーダー指定されたステンシル参照値 オプション オプション オプション 省略可能 いいえ
型指定された順序なしのアクセス ビューの読み込み 18 個の形式、および追加オプション 18 個の形式、および追加オプション 18 個の形式、および追加オプション 3 個の形式、および追加オプション 3 個の形式、および追加オプション
ジオメトリ シェーダー はい はい はい はい はい
ストリーム出力 はい はい はい はい はい
DirectCompute/計算シェーダー はい はい はい はい はい
ハル シェーダーおよびドメイン シェーダー はい はい はい はい はい
機能 \ 機能レベル 12_28 12_10 12_00 11_11 11_0
テクスチャ リソース配列 はい はい はい はい はい
キューブマップ リソース配列 はい はい はい はい はい
BC4/BC5 圧縮 はい はい はい はい はい
BC6H/BC7 圧縮 はい はい はい はい はい
Alpha-to-coverage はい はい はい はい はい
拡張形式 (BGRA など) はい はい はい はい はい
10 ビット XR ハイカラー形式 はい はい はい はい はい
論理操作 (出力マージャー) はい はい はい はい 省略可能1
ターゲットに依存しないラスター化 はい はい はい はい いいえ
ForcedSampleCount 1 による複数のレンダー ターゲット (MRT) はい はい はい はい 省略可能1
UAV スロット 階層化9 64 64 64 8
すべてのステージでの UAV はい はい はい はい いいえ
機能 \ 機能レベル 12_28 12_10 12_00 11_11 11_0
UAV 専用レンダリングの最大強制サンプル カウント 16 16 16 16 8
定数バッファー オフセットと部分更新 はい はい はい はい 省略可能1
ピクセルあたり 16 ビット (bpp) 形式 はい はい はい はい 省略可能1
最大テクスチャ次元 16384 16384 16384 16384 16384
最大キューブマップ次元 16384 16384 16384 16384 16384
最大ボリューム範囲 2048 2048 2048 2048 2048
最大テクスチャ反復 16384 16384 16384 16384 16384
最大異方性 16 16 16 16 16
最大プリミティブ カウント 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1
最大頂点インデックス 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1
最大入力スロット 32 32 32 32 32
同時レンダー ターゲット 8 8 8 8 8
機能 \ 機能レベル 12_28 12_10 12_00 11_11 11_0
オクルージョン クエリ はい はい はい はい はい
個別アルファ ブレンド はい はい はい はい はい
1 回のミラー はい はい はい はい はい
頂点要素のオーバーラップ はい はい はい はい はい
非依存書き込みマスク はい はい はい はい はい
インスタンス化 はい はい はい はい はい
Nonpowers-of-2 conditionally3 いいえ いいえ いいえ いいえ いいえ
Nonpowers-of-2 無条件4 はい はい はい はい はい

さらに、次のフラグが設定されます。

機能 \ 機能レベル 12_28
WaveOps TRUE
OutputMergerLogicOp TRUE
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation TRUE
CopyQueueTimestampQueriesSupported TRUE
CastingFullyTypedFormatSupported TRUE
Int64ShaderOps TRUE

Direct3D 11 機能のサポート (機能レベル 12_1 ~ 9_1)

一覧表示されている機能レベルでは、次の機能を使用できます。 一番上の行の見出しは、Direct3D 11 の機能レベルです。 左側の列の見出しは機能です。 テーブルの 脚注も参照してください。

機能 \ 機能レベル 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
シェーダー モデル 5.12 5.12 5.02 5.02 4.x 4.0 2.0 (4_0_level_9_3) [vs_2_a/ps_2_x]5 2.0 (4_0_level_9_1) 2.0 (4_0_level_9_1)
WDDM ドライバー モデル 1.x 1.x 1.x 1.x 1.x 1.x 1.x 1.x 1.x
タイル化されたリソース レベル 26 レベル 26 オプション 省略可能 いいえ いいえ いいえ いいえ いいえ
保守的なラスター化 階層 16 オプション 省略可能 いいえ いいえ いいえ いいえ いいえ いいえ
ラスタライザーの順序ビュー はい 省略可能 省略可能 いいえ いいえ いいえ いいえ いいえ いいえ
最小/最大フィルター はい はい 省略可能 いいえ いいえ いいえ いいえ いいえ いいえ
既定バッファーのマップ オプション オプション オプション 省略可能 いいえ いいえ いいえ いいえ いいえ
シェーダー指定されたステンシル参照値 オプション オプション 省略可能 いいえ いいえ いいえ いいえ いいえ いいえ
型指定された順序なしのアクセス ビューの読み込み 18 個の形式、および追加オプション 18 個の形式、および追加オプション 3 個の形式、および追加オプション 3 個の形式、および追加オプション いいえ いいえ いいえ いいえ いいえ
ジオメトリ シェーダー はい はい はい はい はい はい いいえ いいえ いいえ
ストリーム出力 はい はい はい はい はい はい いいえ いいえ いいえ
DirectCompute/計算シェーダー はい はい はい はい 省略可能 オプション 該当なし 該当なし 該当なし
ハル シェーダーおよびドメイン シェーダー はい はい はい はい いいえ いいえ いいえ いいえ いいえ
機能 \ 機能レベル 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
テクスチャ リソース配列 はい はい はい はい はい はい いいえ いいえ いいえ
キューブマップ リソース配列 はい はい はい はい はい いいえ いいえ いいえ いいえ
BC4/BC5 圧縮 はい はい はい はい はい はい いいえ いいえ いいえ
BC6H/BC7 圧縮 はい はい はい はい いいえ いいえ いいえ いいえ いいえ
Alpha-to-coverage はい はい はい はい はい はい いいえ いいえ いいえ
拡張形式 (BGRA など) はい はい はい はい 省略可能 省略可能 はい はい はい
10 ビット XR ハイカラー形式 はい はい はい はい 省略可能 オプション 該当なし 該当なし 該当なし
論理操作 (出力マージャー) はい はい はい 省略可能1 省略可能1 省略可能1 いいえ いいえ いいえ
ターゲットに依存しないラスター化 はい はい はい はい はい いいえ いいえ いいえ いいえ いいえ いいえ
ForcedSampleCount 1 による複数のレンダー ターゲット (MRT) はい 省略可能1 省略可能1 省略可能1 いいえ いいえ いいえ
UAV スロット 64 64 64 8 1 1 該当なし 該当なし 該当なし
すべてのステージでの UAV はい はい はい いいえ いいえ いいえ 該当なし 該当なし 該当なし
機能 \ 機能レベル 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
UAV 専用レンダリングの最大強制サンプル カウント 16 16 16 8 該当なし 該当なし 該当なし 該当なし 該当なし
定数バッファー オフセットと部分更新 はい はい はい 省略可能1 省略可能1 省略可能1 1 1 1
ピクセルあたり 16 ビット (bpp) 形式 はい はい はい 省略可能1 省略可能1 省略可能1 省略可能1 省略可能1 省略可能1
最大テクスチャ次元 16384 16384 16384 16384 8192 8192 4096 2048 2048
最大キューブマップ次元 16384 16384 16384 16384 8192 8192 4096 512 512
最大ボリューム範囲 2048 2048 2048 2048 2048 2048 256 256 256
最大テクスチャ反復 16384 16384 16384 16384 8192 8192 8192 2048 128
最大異方性 16 16 16 16 16 16 16 16 2
最大プリミティブ カウント 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 1048575 1048575 65,535
最大頂点インデックス 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 1048575 1048575 65534
最大入力スロット 32 32 32 32 32 16 16 16 16
同時レンダー ターゲット 8 8 8 8 8 8 4 1 1
機能 \ 機能レベル 12_28 12_10 11_11 11_0 10_1 10_0 9_37 9_2 9_1
オクルージョン クエリ はい はい はい はい はい はい はい はい いいえ
個別アルファ ブレンド はい はい はい はい はい はい はい はい いいえ
1 回のミラー はい はい はい はい はい はい はい はい いいえ
頂点要素のオーバーラップ はい はい はい はい はい はい はい はい いいえ
非依存書き込みマスク はい はい はい はい はい はい はい いいえ いいえ
インスタンス化 はい はい はい はい はい はい はい7 いいえ いいえ
Nonpowers-of-2 conditionally3 いいえ いいえ いいえ いいえ いいえ いいえ はい はい はい
Nonpowers-of-2 無条件4 はい はい はい はい はい はい いいえ いいえ いいえ

表の脚注

0 Direct3D 11.3 または Direct3D 12 ランタイムが必要です。

1 Direct3D 11.1 ランタイムが必要です。

2 シェーダー モデル 5.0 以降では、必要に応じて、倍精度シェーダー、拡張倍精度シェーダー、 SAD4 シェーダー命令、部分精度シェーダーをサポートできます。 DirectX 11 で使用できるシェーダー モデル 5.0 オプションを確認するには、 ID3D11Device::CheckFeatureSupport を呼び出します。 一部の互換性は、実行しているハードウェアによって異なります。 シェーダー モデル 5.1 以降は、使用されている機能レベルに関係なく、DirectX 12 API でのみサポートされます。 DirectX 11 では、シェーダー モデル 5.0 までのみサポートされます。 DirectX 12 API は、機能レベル 11_0 にのみダウンします。

3 機能レベル 9_1、9_2、および 9_3 では、ディスプレイ デバイスは、2 つの条件下で 2 の累乗ではないディメンションを持つ 2-D テクスチャの使用をサポートしています。 まず、テクスチャごとに 1 つの MIP マップ レベルのみを作成でき、2 つ目はテクスチャのラップ サンプラー モードを使用できません (つまり、D3D11_SAMPLER_DESCの AddressUAddressVAddressW メンバーD3D11_TEXTURE_ADDRESS_WRAPに設定することはできません)。

4 機能レベル 10_0、10_1、11_0 では、ディスプレイ デバイスは、2 の累乗ではないディメンションを持つ 2-D テクスチャの使用を無条件にサポートします。

5 頂点 シェーダー 2a 256 命令、32 個の一時レジスタ、深度 4 の静的フロー制御、深度 24 の動的フロー制御、およびD3DVS20CAPS_PREDICATION。 ピクセル シェーダー 2x 512 命令、32 個の一時レジスタ、深度 4 の静的フロー制御、深度 24 の動的フロー制御、D3DPS20CAPS_ARBITRARYSWIZZLE、D3DPS20CAPS_GRADIENTINSTRUCTIONS、D3DPS20CAPS_PREDICATION、D3DPS20CAPS_NODEPENDENTREADLIMIT、およびD3DPS20CAPS_NOTEXINSTRUCTIONLIMIT。

6 上位レベルは省略可能です。

7 フィーチャー レベル 9_3 では、サポートされているレンダリング メソッドは DrawDrawIndexedDrawIndexInstanced のみです。 また、フィーチャー レベル 9_3 では、ポイント リストレンダリングは 描画によるレンダリングでのみサポートされます。

8 Windows 11でサポートされています。

9 Direct3D 12 API では、CBV/SRV/UAV ヒープ内の記述子の数に制限があります。 詳細については、「 ハードウェア層 」を参照してください。 これとは別に、 リソース バインディング層に基づくすべてのステージにわたって、すべての記述子テーブル内の UAV の数に制限があります。

10 A 64 ビット プロセスには、リソースごとおよびプロセスごとに 40 ビットのアドレス空間が必要です。 32 ビット プロセスは、アドレス空間の 31 ビットに制限される場合があります。 API には、プロセスごととリソースごとの 2 つの機能 (上限) があります。 プロセスごとのアドレス空間は、常にリソースごとのアドレス空間以上です。

さまざまなハードウェア機能レベルでのフォーマット サポートの詳細については、以下を参照してください。