Partager via


Bus-Master DMA dans les pilotes miniport vidéo

À compter de Windows XP, l’interface graphique du système d’exploitation prend en charge DMA sur les appareils master bus PCI. Les pilotes de miniport vidéo des appareils master de bus PCI peuvent implémenter les types suivants de prise en charge DMA à l’aide de fonctions d’assistance fournies par le pilote de port vidéo :

  • DMA basé sur les paquets

    Dans la DMA basée sur des paquets, les données sont transférées directement entre l’espace du demandeur et l’appareil. Étant donné que l’espace du demandeur n’est peut-être pas contigu, la DMA basée sur les paquets est plus efficace sur ces appareils avec la prise en charge des points/regroupements matériels. La DMA basée sur les paquets est un choix idéal pour déplacer de grandes quantités de données arbitraires entre l’espace utilisateur et l’appareil.

  • DMA de mémoire tampon commune

    Dans common-buffer DMA, une mémoire tampon est partagée entre (par conséquent, commune à) et utilisée par l’hôte et l’appareil pour les opérations DMA répétées. Certains pilotes utilisent common-buffer DMA pour charger des données manipulées par le pilote, telles qu’une série de commandes, vers le moteur graphique. La mémoire tampon commune est contiguë et est toujours accessible à l’appareil et à l’UC hôte.

    La mémoire tampon commune est une ressource système précieuse. Pour améliorer les performances globales des pilotes et du système, les pilotes doivent utiliser la mémoire DMA de mémoire tampon commune aussi économiquement que possible.

Selon la nature de l’adaptateur master bus, certains pilotes miniports utilisent exclusivement la DMA basée sur les paquets, d’autres utilisent exclusivement la DMA de mémoire tampon commune et d’autres utilisent les deux.

Quel que soit le type de DMA utilisé, le pilote miniport doit appeler VideoPortGetDmaAdapter pour obtenir un pointeur vers la structure VP_DMA_ADAPTER et l’utiliser pour les appels de fonctions DMA suivants. Lorsqu’il n’est plus nécessaire de poursuivre les opérations DMA, le pilote miniport doit appeler VideoPortPutDmaAdapter pour ignorer l’objet adaptateur.

Les sous-sections suivantes décrivent comment utiliser la prise en charge DMA basée sur les paquets et la mémoire tampon commune fournie par le pilote de port vidéo.

DMA basé sur les paquets Bus-Master

Common-Buffer Bus-Master DMA

Points à prendre en compte lors de l’utilisation de DMA