Поделиться через


Номера версий для Direct3D версии 10.1

Direct3D версий 10.0 и 10.1 предоставляют #defines, которые драйвер отображения пользовательского режима использует для управления версиями. Драйвер отображения пользовательского режима должен изучить элемент InterfaceD3D10DDIARG_OPENADAPTER, D3D10DDIARG_CREATEDEVICE и D3D10DDIARG_CALCPRIVATEDEVICESIZE структур, которые драйвер получает в вызовах функций OpenAdapter10, CreateDevice(D3D10) и CalcPrivateDeviceSize , чтобы определить версию Direct3D DDI, которую поддерживает среда выполнения Direct3D. Наиболее значимые 16 бит элемента Interface — это количество основной версии Direct3D DDI. Для Direct3D версий 10.0 и 10.1 это число равно 10. Наименее значимые 16 бит элемента Interface — это дополнительная версия Direct3D DDI. Это дополнительное значение версии добавляется при каждом вводе критического изменения Direct3D DDI. Это значение дополнительной версии также может быть искусственно изменено, чтобы означать более сильное изменение версии. В следующем #defines связать дополнительную версию Direct3D DDI с номером выпущенной версии (то есть D3D10_0 == x, D3D10_1 == y, where y > x).

Драйвер отображения в пользовательском режиме должен проверять только наиболее значимые 16 бит элемента VersionD3D10DDIARG_OPENADAPTER, D3D10DDIARG_CREATEDEVICE и D3D10DDIARG_CALCPRIVATEDEVICESIZE структур, чтобы определить, когда создается среда выполнения Direct3D. Это значение добавляется вручную при каждом изменении Direct3D DDI без прерывания. Драйвер может зависеть от каждого некримивного изменения DDI с течением времени. Таким образом, драйвер должен убедиться, что переданная в версии сборки DDI больше или равна *_BUILD_VERSION текущего драйвера, и должен завершиться сбоем, если драйвер несовместим (возможно, также предоставляя временное решение реестра). Наименее значимыми 16 битами члена Version является версия редакции DDI. Наименее значимые 16 бит версии обычно используются для особых случаев драйвера на основе ошибок, присутствующих в API Direct3D. Драйвер должен успешно создаваться для всех значений. Однако драйвер может изменять поведение в зависимости от определенных значений. С этими значениями следует сравнивать с помощью >параметра = , так как числа могут увеличиваться произвольно из-за исправлений среды выполнения. Кроме того, не следует использовать "> (предыдущая неисправная версия)" (а не ">= рабочая версия"), так как могут появиться новые редакции, которые имеют номера версий между двумя известными номерами и не содержат необходимых исправлений. Следующие #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