DirectX HAL 仕様はどこにありますか?
この図を正しいと考える
次に、すべての GPU ベンダーは、HAL と対話するようにデバイス ドライバーを作成する必要があります。
HAL はどこで指定されていますか? MSFT は HAL をどのように調整または更新しますか? HAL はいつ変更されますか? HAL が変更された場合、世界が壊れたり、空が落ちたりしますか?
私の知る限り、「DirectX HAL」はなく、HALは単なるHALです。HALは、WDDMが使用するカーネルモードの抽象化レイヤーです。次に、DirectX APIはWDDMドライバー(nVidia、ATiなどで作成)と通信し、HALデバイスをインスタンス化します。
ソフトウェアがHALと通信するには、特権モードで実行する必要があります(つまり、ドライバーである必要があります)。興味がある場合は、ここでHALが指定されます:http://msdn.microsoft.com/en-us/library/aa490448.aspx
HALは(通常)新しいバージョンのWindowsがリリースされると変更されます。そして、はい、空は時々落ちます。XPドライバーがVistaで動作しなかったときのことを覚えていますか?これは、WDDMの変更またはHALの変更のいずれかが原因でした。または、おそらく両方。
Vista+ のビデオ ドライバーは WDDM に対して書かれています。MSDN を参照してください。私があなたを正しく理解しているかどうかは完全にはわかりませんが、WDDM の仕様/ガイドライン/API はあなたが探しているものだと思います。
GPU ベンダーは、デバイス ドライバー モデル ( Vista および Windows 7 ではWDDM ) に書き込みます。DirectX で使用するには、このモデルに準拠する必要があります。
WDDM は、Windows デバイス ドライバー キットで利用できます。
彼はこれを探していますか?
DirectDraw DDI、Direct3D DDI
これは、次のようなデバイス ドライバを作成するため
のインターフェイスです。
2. 次に、ビデオ カード ハードウェア レジスタに直接アクセスして、その要求を適用します。
(PCI-E メモリにマップされたメモリに、三角形のパラメータ、レンダリング状態、コマンドを gpu に送信して三角形の描画を開始します。)
(Eq. 呼び出しシーケンス:
1. ユーザーが Direct3D.DrawPrimitive 関数を呼び出す =>
2. Direct3D が Direct3DDDIDriver を呼び出す。ドライバー内のD3dDrawPrimitives2関数=>
3. Direct3D DDI ドライバーがグラフィック カード メモリに要求パラメーターを書き込み、描画コマンドをコマンド レジスタに書き込む)。
4. GPU が動作し、指定された宛先メモリ領域 (GDDR5 など) に三角形を描画しています。これは動的に割り当てられ、ターゲット 2D サーフェスとしてマークされています。)
SIS 6326、3dfx Voodoo 1、2、3、4、5 などのシンプルで古いオープン ハードウェア仕様の GPU にこのドライバーを実装する練習をすることができます
。