Threading et synchronisation niveau 1
Au niveau 1 du threading et de la synchronisation, WDDM n’autorise pas la réentrance au sein d’une classe de fonction particulière. Autrement dit, un seul thread peut entrer le pilote dans une classe particulière. Toutefois, les appels de plusieurs classes de niveau un et d’appels de niveau zéro peuvent être entrés simultanément. Bien que deux threads ou plus provenant de classes de premier niveau différentes et des threads d’appels de niveau zéro puissent s’exécuter dans le pilote en même temps, deux threads ne peuvent pas appartenir à un seul processus.
WDDM classe les appels dans le pilote miniport d’affichage qui sont effectués sous le niveau un de thread et de synchronisation dans des classes non réentrancy, telles que les classes suivantes. Les classes supplémentaires incluent VidMm, les machines virtuelles et les processeurs virtuels.
Pointer, classe
WDDM n’autorise pas un appel à l’une des fonctions de classe pointeur de manière réentrante. Autrement dit, au maximum, un thread peut s’exécuter dans l’une des fonctions suivantes à un moment donné :
Classe GPU Scheduler
WDDM n’autorise pas un appel à l’une des fonctions de classe de chargeur du planificateur GPU de manière réentrante. Autrement dit, au maximum, un thread peut s’exécuter dans l’une des fonctions suivantes à un moment donné :
- DxgkDdiBuildPagingBuffer
- DxgkDdiPatch
- DxgkDdiPreemptCommand
- DxgkDdiQueryDependentEngineGroup
- DxgkDdiQueryEngineStatus
- DxgkDdiResetEngine
- DxgkDdiSubmitCommand
Swizzling Range, classe
WDDM n’autorise pas un appel à l’une des fonctions de classe de plage swizzling de manière réentrante. Autrement dit, au maximum, un thread peut s’exécuter dans l’une des fonctions suivantes à un moment donné :
Overlay, classe
WDDM n’autorise pas un appel à l’une des fonctions de classe de superposition de manière réentrante. Autrement dit, au maximum, un thread peut s’exécuter dans l’une des fonctions suivantes à un moment donné :
Classe d’E/S enfant
WDDM n’autorise pas un appel à l’une des fonctions de classe d’E/S enfants de manière réentrante. Autrement dit, au maximum, un thread peut s’exécuter dans l’une des fonctions suivantes par appareil enfant à un moment donné.
Les fonctions de classe d’E/S enfants sont synchronisées par appareil enfant (autrement dit, les appels simultanés à plusieurs appareils enfants sont autorisés). Toutefois, s’il existe des dépendances internes entre les appareils enfants, le pilote miniport d’affichage doit bloquer les appels en fonction des besoins.
- DxgkDdiQueryChildStatus
- DxgkDdiQueryConnectionChange
- DxgkDdiQueryDeviceDescriptor
- DxgkDdiDisplayDetectControl
- DxgkDdiI2CReceiveDataFromDisplay
- DxgkDdiI2CTransmitDataToDisplay
- DxgkDdiOPMConfigureProtectedOutput
- DxgkDdiOPMCreateProtectedOutput
- DxgkDdiOPMDestroyProtectedOutput
- DxgkDdiOPMGetCertificate
- DxgkDdiOPMGetCertificateSize
- DxgkDdiOPMGetCOPPCompatibleInformation
- DxgkDdiOPMGetInformation
- DxgkDdiOPMGetRandomNumber
- DxgkDdiOPMSetSigningKeyAndSequenceNumbers
Classe d’affichage
WDDM n’autorise pas un appel à l’une des fonctions de classe d’affichage de manière réentrante. Autrement dit, au maximum, un thread peut s’exécuter dans l’une des fonctions suivantes à un moment donné :