Share via


Rendu sur un GPU discret à l’aide de ressources inter-adaptateurs

À partir de Windows 8.1, un GPU discret utilise une ressource inter-adaptateurs comme suit :

  • Destination pour le transfert de bloc de bits (bitblt) ou les opérations présentes, mais sans étirement ni conversion de couleur.
  • Ressource que le système d’exploitation demande au pilote d’affichage en mode utilisateur d’effectuer l’opération bitblt ou present vers et à partir de.

Un GPU intégré utilise une ressource inter-adaptateurs comme suit :

  • Texture pendant la composition par le Gestionnaire de fenêtres de bureau (DWM).
  • Cible de rendu pour l’accélération matérielle GDI.
  • Principal d’affichage.
  • Pas en tant que cible de rendu pour les opérations 3D.

Les sections suivantes décrivent l’architecture et les processus impliqués dans trois scénarios possibles où une application s’affiche sur un GPU discret au sein d’un système hybride.

Modèle de présentation bitblt redirigé

Diagramme montrant le modèle bitblt redirigé de graphiques hybrides pour le rendu sur un GPU discret.

  1. Une ressource inter-adaptateurs pour une fenêtre de niveau supérieur est créée en mode noyau en tant qu’allocation standard sur le GPU intégré.
  2. Lorsque cette ressource est ouverte sur le GPU discret, le sous-système du noyau graphique DirectX (Dxgkrnl.sys) appelle la fonction DxgkDdiGetStandardAllocationDriverData et crée une ressource sur le GPU discret à l’aide du même magasin de stockage (périphérique de stockage de masse) que pour le GPU intégré.
  3. Le runtime Direct3D indique au pilote d’affichage en mode utilisateur du GPU discret d’ouvrir la ressource inter-adaptateurs à l’aide de données de pilote privé.
  4. Une application DirectX s’affiche sur le GPU discret vers une ressource back-buffer. Consultez l’opération « Render » dans la figure.
  5. Lorsqu’une application DirectX appelle une méthode Present , le runtime Direct3D appelle la fonction PresentDXGI (ou pfnPresent) du pilote en mode utilisateur du GPU discret pour copier la mémoire tampon arrière sur la ressource inter-adaptateurs. Consultez l’opération « Présent » dans la figure.
  6. Lorsqu’une application GDI (Graphics Device Interface) Windows s’affiche dans une fenêtre de niveau supérieur, le sous-système du noyau graphique DirectX appelle la fonction DxgkDdiRenderKm du pilote miniport d’affichage du GPU intégré et indique que la ressource inter-adaptateurs est une cible de rendu. Consultez la connexion entre l’application GDI et la surface inter-adaptateurs dans la figure.
  7. Le processus DWM ouvre la ressource inter-adaptateurs dans le GPU intégré et l’utilise lors de la composition en tant que texture source. Consultez l’opération « Composition » dans la figure.

Modèle de présentation à basculement direct

Diagramme illustrant le modèle de retournement direct graphique hybride pour le rendu sur un GPU discret.

  1. Le runtime Direct3D indique au pilote d’affichage en mode utilisateur du GPU discret de créer une ressource inter-adaptateurs pour chaque surface de chaîne d’échange.
  2. Sur le GPU discret, le runtime Direct3D peut définir les membres Primary et VidPnSourceId de la structure D3DDDI_ALLOCATIONINFO si le mode Direct Flip est disponible. Ces valeurs membres doivent être transmises lorsque la fonction pfnAllocateCb est appelée.
  3. Le runtime Direct3D indique au pilote d’affichage en mode utilisateur du GPU intégré d’ouvrir une ressource inter-adaptateurs qui doit être gérée par le DWM.
  4. Une application effectue un rendu sur le GPU discret à l’aide de la texture cible de rendu comme destination. Consultez l’opération « Render » dans la figure.
  5. Lorsqu’une application appelle une méthode Present , le runtime Direct3D appelle la fonction BltDXGI (ou pfnBlt) du pilote en mode utilisateur du GPU discret pour effectuer une copie vers la ressource inter-adaptateurs. Le runtime appelle ensuite la fonction PresentDXGI (ou pfnPresent) du pilote en mode utilisateur du GPU discret, avec la source définie sur la ressource inter-adaptateurs et l’allocation de destination définie sur NULL. Consultez l’opération « Copier » dans la figure.
  6. Le DWM effectue sa composition à l’aide de la ressource du GPU intégré. Si une opération de basculement direct est nécessaire (DXGK_SEGMENTFLAGS.DirectFlip est défini), DWM indique au pilote miniport d’affichage du GPU intégré d’effectuer une opération de basculement d’une allocation inter-adaptateurs à une autre. Voir l’opération « DWM flip » dans la figure.

Modèle plein écran

  1. Le runtime Direct3D indique au pilote d’affichage en mode utilisateur du GPU intégré de créer une allocation primaire partagée entre adaptateurs pour chaque surface de chaîne d’échange.
  2. Le runtime Direct3D indique au pilote d’affichage en mode utilisateur du GPU discret d’ouvrir les ressources inter-adaptateurs.
  3. Une application effectue un rendu sur le GPU discret à l’aide de la texture cible de rendu comme destination.
  4. Lorsque l’application appelle une méthode Present , le runtime Direct3D demande au pilote d’affichage en mode utilisateur du GPU discret d’effectuer une copie vers une ressource inter-adaptateurs.
  5. Le pilote d’affichage en mode utilisateur du GPU intégré et le pilote miniport d’affichage sont invités à basculer vers cette ressource inter-adaptateurs.