Condividi tramite


Rendering in una GPU discreta usando risorse multi-adapter

A partire da Windows 8.1, una GPU discreta usa una risorsa multi-adapter come:

  • Destinazione per il trasferimento a blocchi di bit (bitblt) o le operazioni presenti, ma senza estensione o conversione del colore.
  • Risorsa da cui il sistema operativo richiede il driver di visualizzazione in modalità utente per eseguire l'operazione bitblt o presente da e verso.

Una GPU integrata usa una risorsa tra schede come:

  • Trama durante la composizione da Desktop Window Manager (DWM).
  • Destinazione di rendering per l'accelerazione hardware GDI.
  • Oggetto primario di visualizzazione.
  • Non come destinazione di rendering per operazioni 3D.

Le sezioni seguenti descrivono l'architettura e i processi coinvolti in tre possibili scenari in cui un'applicazione esegue il rendering in una GPU discreta all'interno di un sistema ibrido.

Modello di presentazione bitblt reindirizzato

Diagramma che mostra il modello bitblt ibrido reindirizzato per il rendering in una GPU discreta.

  1. Una risorsa tra adattatori per una finestra di primo livello viene creata in modalità kernel come allocazione standard nella GPU integrata.
  2. Quando questa risorsa viene aperta sulla GPU discreta, il sottosistema kernel della grafica DirectX (Dxgkrnl.sys) chiama la funzione DxgkDdiGetStandardAllocationDriverData e crea una nuova risorsa sulla GPU discreta usando lo stesso archivio di backup (dispositivo di archiviazione di massa) come per la GPU integrata.
  3. Il runtime Direct3D indica al driver di visualizzazione in modalità utente della GPU discreta di aprire la risorsa tra schede usando i dati del driver privato.
  4. Un'applicazione DirectX esegue il rendering sulla GPU discreta in una risorsa back-buffer. Vedere l'operazione "Rendering" nella figura.
  5. Quando un'applicazione DirectX chiama un metodo Present , il runtime Direct3D chiama la funzione PresentDXGI (o pfnPresent) del driver in modalità utente della GPU discreta per copiare il buffer indietro nella risorsa multi-adapter. Vedere l'operazione "Presente" nella figura.
  6. Quando un'applicazione GDI (Windows Graphics Device Interface) esegue il rendering in una finestra di primo livello, il sottosistema kernel della grafica DirectX chiama la funzione DxgkDdiRenderKm del driver di visualizzazione della GPU integrata e indica che la risorsa tra schede è una destinazione di rendering. Vedere la connessione tra l'applicazione GDI e la superficie dell'adattatore incrociato nella figura.
  7. Il processo DWM apre la risorsa tra adattatori nella GPU integrata e la usa durante la composizione come trama di origine. Vedere l'operazione "Composizione" nella figura.

Modello di presentazione con capovolgimento diretto

Diagramma che illustra il modello di capovolgimento diretto della grafica ibrida per il rendering in una GPU discreta.

  1. Il runtime Direct3D indica al driver di visualizzazione in modalità utente della GPU discreta di creare una risorsa tra schede per ogni superficie della catena di scambio.
  2. Nella GPU discreta, il runtime Direct3D potrebbe impostare i membri Primary e VidPnSourceId della struttura D3DDDI_ALLOCATIONINFO se la modalità Direct Flip è disponibile. Questi valori membro devono essere passati quando viene chiamata la funzione pfnAllocateCb .
  3. Il runtime Direct3D indica al driver di visualizzazione in modalità utente della GPU integrata di aprire una risorsa tra schede che deve essere gestita da DWM.
  4. Un'applicazione esegue il rendering sulla GPU discreta usando la trama di destinazione di rendering come destinazione. Vedere l'operazione "Rendering" nella figura.
  5. Quando un'applicazione chiama un metodo Present , il runtime Direct3D chiama la funzione BltDXGI (o pfnBlt) del driver in modalità utente della GPU discreta per eseguire una copia nella risorsa multi-adapter. Il runtime chiama quindi la funzione PresentDXGI (o pfnPresent) del driver in modalità utente della GPU discreta, con origine impostata sulla risorsa tra schede e l'allocazione di destinazione impostata su NULL. Vedere l'operazione "Copia" nella figura.
  6. DWM esegue la sua composizione usando la risorsa dalla GPU integrata. Se è necessaria un'operazione Direct Flip (DXGK_SEGMENTFLAGS.DirectFlip è impostato), DWM indica al driver miniport della GPU integrata di eseguire un'operazione di scorrimento da un'allocazione tra schede a un'altra. Vedere l'operazione "DWM flip" nella figura.

Modello a schermo intero

  1. Il runtime Direct3D indica al driver di visualizzazione in modalità utente della GPU integrata di creare un'allocazione primaria condivisa tra schede per ogni superficie della catena di scambio.
  2. Il runtime Direct3D indica al driver di visualizzazione in modalità utente della GPU discreta di aprire le risorse tra schede.
  3. Un'applicazione esegue il rendering sulla GPU discreta usando la trama di destinazione di rendering come destinazione.
  4. Quando l'applicazione chiama un metodo Present , il runtime Direct3D indica al driver di visualizzazione in modalità utente della GPU discreta di eseguire una copia in una risorsa multi-adapter.
  5. Il driver di visualizzazione in modalità utente della GPU integrata e il driver miniport visualizzato vengono incaricati di passare a questa risorsa multi-adapter.