Direct3D 版本 10.1 的版本号

Direct3D 版本 10.0 和 10.1 提供用户模式显示驱动程序用于版本控制#defines。 用户模式显示驱动程序必须检查驱动程序在调用 OpenAdapter10CreateDevice (D3D10 ) 和CalcPrivateDeviceSize 函数时收到的 D3D10DDIARG_OPENADAPTER、D3D10DDIARG_CREATEDEVICE 和 D3D10DDIARG_CALCPRIVATEDEVICESIZE 结构的 Interface 成员,以确定 Direct3D 运行时支持的 Direct3D DDI 版本。 接口成员中最重要的 16 位是 Direct3D DDI 主版本的数量。 对于 Direct3D 版本 10.0 和 10.1,此数字为 10。 接口成员的最小有效 16 位是 Direct3D DDI 次要版本。 每次引入 Direct3D DDI 中断性变更时,此次要版本值都会颠簸。 此次要版本值也可以人为地颠簸,以表示更强大的版本更改。 以下#defines将 Direct3D DDI 次要版本与已发布版本号 (相关联,即 D3D10_0 == x,D3D10_1 == y,其中 y > x) 。

用户模式显示驱动程序应仅检查D3D10DDIARG_OPENADAPTERVersion 成员的最有效 16 位,D3D10DDIARG_CREATEDEVICED3D10DDIARG_CALCPRIVATEDEVICESIZE结构以确定何时生成 Direct3D 运行时。 每次发生非中断性 Direct3D DDI 更改时,都会手动颠簸此值。 随着时间的推移,驱动程序可能会依赖于每个非中断性 DDI 更改。 因此,驱动程序应确保 DDI 内部版本中传递的 大于或等于当前驱动程序的 *_BUILD_VERSION,如果驱动程序不兼容, (可能还会) 提供注册表解决方法,则驱动程序会失败。 版本成员的最小有效 16 位是 DDI 修订版本。 最低有效版本 16 位通常用于根据 Direct3D API 中存在的 bug 对驱动程序进行特殊处理。 驱动程序必须成功创建所有值。 但是,驱动程序可以根据某些值更改行为。 应使用 >= 与这些值进行比较,因为由于运行时修复,数字可能会任意增加。 此外,不应使用“> (以前的损坏版本) ” (而不是“>= 工作版本”) ,因为可能会出现在两个已知数字之间具有版本号的新修订,并且不包含所需的修补程序。 以下#defines适用于 Direct3D DDI 版本控制:

#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