Numéros de version pour Direct3D version 10.1
Direct3D versions 10.0 et 10.1 fournissent des #defines que le pilote d’affichage en mode utilisateur utilise pour le contrôle de version. Le pilote d’affichage en mode utilisateur doit examiner le membre d’interface des structures D3D10DDIARG_OPENADAPTER, D3D10DDIARG_CREATEDEVICE et D3D10DDIARG_CALCPRIVATEDEVICESIZE que le pilote reçoit dans les appels aux fonctions OpenAdapter10, CreateDevice(D3D10) et CalcPrivateDeviceSize pour déterminer la version de la DDI Direct3D prise en charge par le runtime Direct3D. Les 16 bits les plus significatifs du membre d’interface sont le nombre de la version principale de Direct3D DDI. Pour Direct3D versions 10.0 et 10.1, ce nombre est 10. Les 16 bits les moins significatifs du membre d’interface sont la version mineure de Direct3D DDI. Cette valeur de version mineure est modifiée chaque fois qu’une modification cassant Direct3D DDI est introduite. Cette valeur de version mineure peut également être modifiée artificiellement pour signifier un changement de version plus fort. Les #defines suivantes associent une version mineure de Direct3D DDI à un numéro de version publiée (autrement dit, D3D10_0 == x, D3D10_1 == y, où y > x).
Le pilote d’affichage en mode utilisateur doit examiner uniquement les 16 bits les plus significatifs du membre Version des structures D3D10DDIARG_OPENADAPTER, D3D10DDIARG_CREATEDEVICE et D3D10DDIARG_CALCPRIVATEDEVICESIZE pour déterminer quand le runtime Direct3D est généré. Cette valeur est modifiée manuellement chaque fois qu’il y a une modification de Direct3D DDI non cassant. Le pilote peut dépendre de chaque changement DDI non cassant au fil du temps. Par conséquent, le pilote doit s’assurer que la version de build DDI passée est supérieure ou égale à la *_BUILD_VERSION du pilote actuel et échouer si le pilote est incompatible (peut-être tout en fournissant une solution de contournement du Registre). Les 16 bits les moins significatifs du membre Version sont la version de révision DDI. Les 16 bits les moins significatifs de version sont généralement utilisés pour cas particulier du pilote en fonction des bogues présents dans l’API Direct3D. Le pilote doit réussir la création de toutes les valeurs. Toutefois, le pilote peut changer de comportement en fonction de certaines valeurs. Vous devez comparer avec ces valeurs à l’aide >de =, car les nombres peuvent augmenter arbitrairement en raison de correctifs d’exécution. En outre, vous ne devez pas utiliser «> (version précédente rompue) » (plutôt que «> = version opérationnelle ») car de nouvelles révisions peuvent apparaître qui ont des numéros de version entre les deux nombres connus et ne contiennent pas les correctifs requis. Les #defines suivantes concernent le contrôle de version 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