Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Certaines informations concernent un produit de préversion qui peut être sensiblement modifié avant sa sortie commerciale. Microsoft n’offre aucune garantie, expresse ou implicite, en ce qui concerne les informations fournies ici.
Cet article décrit les modifications apportées dans IddCx 1.11. Un fichier binaire IDD (Indirect Display Driver) unique généré sur IddCx 1.11 peut s’exécuter sur Windows 10 1803 et versions ultérieures à l’aide de vérifications d’exécution pour vérifier si les modifications DDI dans IddCx 1.11 sont disponibles sur ce système. Pour plus d’informations, consultez Génération d’un pilote WDF pour plusieurs versions de Windows.
Les modifications IddCx 1.11 appartiennent aux catégories suivantes :
- Mettez à jour la version IddCxGetVersion (console et distante). Pour obtenir la liste complète des informations de version liées à IddCx, consultez les versions IddCx.
- Ajoutez la possibilité d’interroger la prise en charge des fonctionnalités du système d’exploitation.
- Ajoutez la prise en charge de l’utilisation de l’API D3D12.
- Ajoutez un nouveau DDI I2C à lecture/écriture atomique.
- Ajoutez la prise en charge des descripteurs DisplayID uniquement.
- Ajouter la prise en charge de la mise à jour du nombre de réencodages statiques de bureau.
Mettre à jour la version IddCxGetVersion
La valeur retournée par IddCxGetVersion a été mise à jour pour retourner 0x1B00.
Requêtes de prise en charge des fonctionnalités du système d'exploitation
Les pilotes ont désormais la possibilité de déterminer si une fonctionnalité particulière d’IddCx 1.11 est disponible dans le système d’exploitation sous-jacent en appelant IddCxCheckOsFeatureSupport. Plusieurs versions du système d’exploitation peuvent signaler la prise en charge d’IddCx 1.11 via IddCxGetVersion, mais éventuellement certaines des fonctionnalités seront disponibles.
Prise en charge de D3D12
Les pilotes IddCx 1.11 prenant en charge D3D12 peuvent associer un objet ID3D12Device à une chaîne d’échange et recevoir des objets ID3D12Resource à l’aide d’appels à IddCxSwapChainReleaseAndAcquireBuffer2. Une vue d’ensemble des modifications associées est donnée dans les sections suivantes.
Association d’un appareil D3D12 à une chaîne d’échange
Si un pilote souhaite recevoir des images D3D12, un objet ID3D12Device doit être fourni dans un appel à IddCxSwapChainSetDevice2.
Réception d’images D3D12
Une fois qu’un pilote a appelé IddCxSwapChainSetDevice2 et fourni un objet ID3D12Device, l'objet IDARG_OUT_RELEASEANDACQUIREBUFFER2 passé aux appels à IddCxSwapChainReleaseAndAcquireBuffer2 aura le drapeau IDDCX_METADATA2_VALID_FLAGS_D3D12SURFACE activé. Ensuite, le pilote doit utiliser IDARG_OUT_RELEASEANDACQUIREBUFFER2.MetaData.pD3d12Surface pour accéder aux données des pixels.
Synchronisation de l’accès aux surfaces D3D12
Une modification significative introduite par l'utilisation de D3D12 par un pilote est le changement du modèle de synchronisation. Ce modèle contrôle l'accès aux surfaces de la chaîne d'échange et évite des problèmes tels que les blocages et l'accès à des données de pixels obsolètes. En raison du contrôle plus granulaire de D3D12, les pilotes doivent indiquer explicitement au système d’exploitation quelle file d’attente de commandes va utiliser la surface comme données d’entrée.
Vous trouverez plus d’informations sur les responsabilités des pilotes en ce qui concerne la synchronisation dans les remarques supplémentaires de IDDCX_METADATA2.
Prise en charge atomique de l'I2C
Un pilote 1.11 qui prend en charge I2C en fournissant les EVT_IDD_CX_MONITOR_I2C_RECEIVE et EVT_IDD_CX_MONITOR_I2C_TRANSMIT DDIs doit également fournir EVT_IDD_CX_MONITOR_I2C_TRANSMIT_AND_RECEIVE. Cette nouvelle DDI effectue une opération I2C dans un seul appel pour aider les pilotes qui effectuent leurs propres opérations I2C de ne pas interagir avec les appels du système d’exploitation.
Note
Les pilotes qui fournissent la nouvelle DDI ne doivent pas supposer que les DDIS existants ne seront plus utilisés.
Prise en charge du descripteur DisplayID uniquement
Un nouveau type de descripteur, IDDCX_MONITOR_DESCRIPTION_TYPE_DISPLAYID, a été ajouté à l’énumération IDDCX_MONITOR_DESCRIPTION_TYPE utilisée dans les arguments passés à IddCxMonitorCreate et IddCxMonitorCreate2. Cela doit être utilisé lorsque le descripteur fourni contient uniquement un descripteur DisplayID et aucun bloc EDID du tout.
Mise à jour du nombre de réencodages de bureau statique
Actuellement, le nombre de reencodements de bureau statique est spécifié lors de la création d’un adaptateur. Une nouvelle DDI permet désormais à cette valeur d’être mise à jour sur une chaîne d’échange après la création de l’adaptateur.
Prise en charge d’un pilote 1.11 fonctionnant à un niveau réduit
Si un pilote 1.11 doit s’exécuter sur des versions antérieures de Windows, vous devez effectuer des étapes pour garantir la compatibilité.
- Le pilote doit définir la taille de la structure IDD_CX_CLIENT_CONFIG à l’aide de la macro IDD_CX_CLIENT_CONFIG_INIT .
- Le pilote ne doit pas définir les nouveaux indicateurs ajoutés à IDDCX_ADAPTER_FLAGS.
- Le pilote ne doit pas essayer et appeler de nouvelles fonctions fournies par le système d’exploitation, car elles ne sont pas disponibles. IDD_IS_FUNCTION_AVAILABLE peut être utilisé pour vérifier.
- Aucune des nouvelles fonctions ne peut être exportée. Les pilotes peuvent utiliser la macro IDD_IS_FIELD_AVAILABLE pour vérifier si le rappel EvtIddXxx doit être écrit dans la structure IDD_CX_CLIENT_CONFIG .
- Même si le système d’exploitation retourne 0x1B00 d’un appel à IddCxGetVersion, le pilote doit vérifier la prise en charge de fonctionnalités spécifiques en appelant IddCxCheckOsFeatureSupport.
L’exemple suivant montre comment IDD_IS_FIELD_AVAILABLE pouvez être utilisé :
if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxMonitorI2CTransmitAndReceive))
{
IddCxClientConfig.EvtIddCxMonitorI2CTransmitAndReceive = MonitorI2CTransmitAndReceive;
}
Pour plus d’informations, consultez Génération de pilotes IddCx 1.4.
Quelles fonctions sont utilisées
| Fonctionnalité IddCx 1.11 | Nouveaux appels de fonctions du système d'exploitation pour les adaptateurs 1.11 | Équivalent précédent |
|---|---|---|
| I2C atomique | EVT_IDD_CX_MONITOR_I2C_TRANSMIT_AND_RECEIVE | EVT_IDD_CX_MONITOR_I2C_TRANSMIT et EVT_IDD_CX_MONITOR_I2C_RECEIVE |
| Fonctionnalité IddCx 1.11 | Nouvelles fonctions qu’un pilote doit appeler | Équivalent précédent |
|---|---|---|
| D3D12 | IddCxSwapChainSetDevice2 | IddCxSwapChainSetDevice |
| Mettre à jour le nombre de réencodages | IddCxSwapChainUpdateStaticDesktopReencodeFrameCount | N/A |
Versions précédentes
Pour plus d’informations sur les modifications apportées aux versions antérieures d’IddCx, consultez les articles suivants :
- Mises à jour pour iddCx versions 1.10 et ultérieures
- Mises à jour pour les versions 1.9 et ultérieures d’IddCx
- Mises à jour pour les versions 1.8 et ultérieures d’IddCx
- Mises à jour pour iddCx versions 1.7 et ultérieures
- Mises à jour pour iddCx versions 1.6 et ultérieures
- Mises à jour pour iddCx versions 1.4 et ultérieures