WDDM のメリット

Note

XDDM ドライバーと VGA ドライバーは、Windows 8 以降のオペレーティング システムではコンパイルされません。 WDDM 1.2 以降のサポートが認定されているドライバーを搭載していない Windows 8 コンピューターにディスプレイ ハードウェアが接続されている場合、システムは既定で基本ディスプレイ ドライバーを実行します。

グラフィックス ドライバーやディスプレイ ドライバーを作成する際は、以下のように機能強化が図られたことから、Windows 2000 ディスプレイ ドライバー モデル (XDDM) ではなく、WDDM を使用する方が簡単です。 さらに、WDDM ドライバーは、オペレーティング システムの安定性とセキュリティの向上にも貢献します。 カーネル モードで実行されるドライバー コードの数が少なく、システム アドレス空間にアクセスすることが可能で、クラッシュの原因となる可能性があります。

  • Direct3D ランタイムと DirectX グラフィックス カーネル サブシステム (Dxgkrnl) は、より多くの表示処理を実行します。つまり、ドライバーではなく、ランタイムとサブシステムのコードが多くなります。 この処理には、ビデオ メモリを管理し、GPU のダイレクト メモリ アクセス (DMA) バッファーをスケジュールするコードが含まれます。 詳細については、「ビデオ メモリ管理と GPU スケジュール設定」を参照してください。

  • サーフェスの作成に必要なカーネル モード ステージの数が少なくなります。

    Windows Vista 以前のオペレーティング システムでサーフェスを作成するには、次の連続するカーネル モード呼び出しが必要でした。

    1. DdCanCreateSurface
    2. DdCreateSurface
    3. D3dCreateSurfaceEx

    WDDM でサーフェスを作成する際に必要なのは、ランタイムの pfnAllocateCb 関数を呼び出す、CreateResource ユーザー モード ディスプレイ ドライバーの呼び出しのみです。 この呼び出しで、Dxgkrnl はカーネルモード ドライバーの DxgkDdiCreateAllocation 関数を呼び出します。

  • サーフェスを作成して破棄する呼び出しと、リソースのロックとロック解除を行う呼び出しは、非常に対等な組み合わせになっています。

  • WDDM は、ビデオ メモリ、システム メモリ、マネージド サーフェイスを同じように処理します。 Windows Vista 以前のオペレーティング システムでは、これらのコンポーネントはわずかに異なる方法で処理されていました。

  • シェーダー変換は、ディスプレイ ドライバーのユーザー モード部分で実行されます。

    この方法では、シェーダー変換がカーネル モードで実行される場合に発生する次の複雑さが解消されます。

    • デバイス ドライバー インターフェイス (DDI) の抽象化に一致しないハードウェア モデル
    • 翻訳で使用される複雑なコンパイラ テクノロジ

    シェーダー処理はプロセスごとに十分に行われ、ハードウェア アクセスは必要ないため、カーネル モードのシェーダー処理は必要ありません。 そのため、シェーダー変換コードはユーザー モードで処理できます。

    ユーザー モードの変換コードに関する try/except コードを記述する必要があります。 変換エラーが発生した場合は、アプリケーション処理に戻る必要があります。

    バックグラウンド翻訳 (つまり、他の表示処理スレッドとは別のスレッドで実行される翻訳コード) は、ユーザー モードの方が簡単に記述できます。