Direct3D バージョン 10.1 のバージョン番号
Direct3D バージョン 10.0 および 10.1 では、ユーザー モード ディスプレイ ドライバーがバージョン管理に使用する #define が提供されています。 ユーザー モード ディスプレイ ドライバーは、OpenAdapter10、CreateDevice(D3D10)、CalcPrivateDeviceSize の各関数の呼び出しで受け取る Interface メンバー (D3D10DDIARG_OPENADAPTER、D3D10DDIARG_CREATEDEVICE、および D3D10DDIARG_CALCPRIVATEDEVICESIZE の各構造体) を調べて、Direct3D ランタイムでサポートされている Direct3D DDI バージョンを特定する必要があります。 Interface メンバーの上位 16 ビットが Direct3D DDI のメジャー バージョン番号です。 Direct3D バージョン 10.0 および 10.1 の場合、この番号は 10 です。 Interface メンバーの下位 16 ビットが Direct3D DDI のマイナー バージョンです。 このマイナー バージョンの値は、Direct3D DDI の破壊的変更が導入されるたびに引き上げられます。 このマイナー バージョン値は、より強力なバージョン変更を示すために、人為的に引き上げることもできます。 以下の #define では Direct3D DDI マイナー バージョンをリリースされたバージョン番号と関連付けています (つまり、D3D10_0 == x、D3D10_1 == y。ここで、y > x)。
ユーザー モード ディスプレイ ドライバーは、Version メンバー (D3D10DDIARG_OPENADAPTER、D3D10DDIARG_CREATEDEVICE、D3D10DDIARG_CALCPRIVATEDEVICESIZE の各構造体) の上位 16 ビットのみを調べて Direct3D ランタイムがいつビルドされたのかを特定する必要があります。 この値は、非破壊的 Direct3D DDI 変更が導入されるたびに手動で引き上げられます。 時間が経つと、それぞれの非破壊的 DDI 変更にドライバーが依存するようになる場合があります。 したがって、ドライバーは、渡された DDI ビルド バージョンが現在のドライバーの *_BUILD_VERSION 以上であることを確認する必要があります。ドライバーに互換性がない場合は失敗します (多くの場合、レジストリの回避策も提供されます)。 Version メンバーの下位 16 ビットは DDI リビジョン バージョンです。 通常、Version の下位 16 ビットは、Direct3D API に存在するバグに基づいてドライバーを特殊なケースに分類するために使用されます。 ドライバーは、すべての値で作成に成功する必要があります。 ただし、ドライバーは、特定の値に応じて動作を変更することができます。 ランタイムの修正によって番号が恣意的に上がる場合があるので、>= を使用してこれらの値を比較する必要があります。 また、">= (動作するバージョン)" を使用し、"> (以前の破損バージョン)" は使用すべきではありません。2 つの既知の番号の間のバージョン番号が付いていても、必要な修正が含まれていない新しいバージョンが現れる可能性があるからです。 Direct3D DDI のバージョン管理用の #define を次に示します。
#define D3D10_DDI_MAJOR_VERSION 10
#define D3D10_0_DDI_MINOR_VERSION 1
#define D3D10_0_DDI_INTERFACE_VERSION ((D3D10_DDI_MAJOR_VERSION << 16) | D3D10_0_DDI_MINOR_VERSION)
#define D3D10_0_DDI_BUILD_VERSION 4
#define D3D10_0_DDI_VERSION_VISTA_GOLD ( ( 4 << 16 ) | 6000 )
#define D3D10_0_DDI_VERSION_VISTA_GOLD_WITH_LINKED_ADAPTER_QFE ( ( 4 << 16 ) | 6008 )
#define D3D10_0_DDI_IS_LINKED_ADAPTER_QFE_PRESENT(Version) (Version >= D3D10_0_DDI_VERSION_VISTA_GOLD_WITH_LINKED_ADAPTER_QFE)
#if D3D10DDI_MINOR_HEADER_VERSION >= 1
#define D3D10_1_DDI_MINOR_VERSION 2
#define D3D10_1_DDI_INTERFACE_VERSION ((D3D10_DDI_MAJOR_VERSION << 16) | D3D10_1_DDI_MINOR_VERSION)
#define D3D10_1_DDI_BUILD_VERSION 1
// Note: d3d10_1 doesn't currently ship on vista gold. // This definition is included for completeness in the
// event that it does at some point in the future:
#define D3D10_1_DDI_VERSION_VISTA_GOLD ( ( 1 << 16 ) | 6000 )
#define D3D10_1_DDI_VERSION_VISTA_SP1 ( ( 1 << 16 ) | 6008 )
#define D3D10_1_DDI_IS_LINKED_ADAPTER_QFE_PRESENT(Version) (Version >= D3D10_1_DDI_VERSION_VISTA_SP1)
#define D3D10on9_DDI_MINOR_VERSION 0
#define D3D10on9_DDI_INTERFACE_VERSION ((D3D10_DDI_MAJOR_VERSION << 16) | D3D10on9_DDI_MINOR_VERSION)
#define D3D10on9_DDI_BUILD_VERSION 0