Condividi tramite


Rendering in una GPU discreta usando risorse tra adattatori

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

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

Un GPU integrato usa un di risorse tra schede come:

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

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

Modello di presentazione reindirizzato di bitblt

Diagramma che mostra il modello ibrido di bitblt reindirizzato per il rendering su 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 nella GPU discreta, il sottosistema del kernel grafico DirectX (Dxgkrnl.sys) chiama la funzione DxgkDdiGetStandardAllocationDriver Data e crea una nuova risorsa nella GPU discreta usando lo stesso archivio di backup (dispositivo di archiviazione di massa) della GPU integrata.
  3. Il runtime Direct3D indica al driver di visualizzazione in modalità utente della GPU discreta di aprire la risorsa inter-adattatore usando i dati privati del driver.
  4. Un'applicazione DirectX esegue il rendering sulla GPU discreta, verso una risorsa di back-buffer. Consulta l'operazione "Render" nella figura.
  5. Quando un'applicazione DirectX chiama un metodo Present, il Direct3D runtime chiama la funzione PresentDXGI (o pfnPresent) del driver in modalità utente della GPU discreta per copiare la memoria video nella risorsa cross-adapter. Vedere l'operazione "Present" nella figura.
  6. Quando un'applicazione GDI (Windows Graphics Device Interface) esegue il rendering su una finestra di livello superiore, il sottosistema kernel della grafica DirectX chiama la funzione DxgkDdiRenderKm del driver miniport di visualizzazione della GPU integrata e indica che la risorsa cross-adapter è un target di rendering. Osservare la connessione tra l'applicazione GDI e la superficie cross-adapter nella figura.
  7. Il processo DWM apre la risorsa cross-adapter nella GPU integrata e la utilizza durante la composizione come texture di origine. Vedi l'operazione "Composizione" nella figura.

Modello di presentazione "Direct Flip"

Diagramma che illustra il modello di inversione diretta 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 cross-adapter per ogni superficie della swap chain.
  2. Nella GPU discreta, il runtime Direct3D potrebbe impostare i membri Primario e VidPnSourceId della struttura D3DDDI_ALLOCATIONINFO se è disponibile la modalità Direct Flip. Questi valori dei membri devono essere passati quando viene chiamata la funzione pfnAllocateCb.
  3. Il runtime Direct3D istruisce il driver di visualizzazione in modalità utente della GPU integrata ad aprire una risorsa condivisa tra adattatori che deve essere gestita dal DWM.
  4. Un'applicazione esegue il rendering sulla GPU discreta utilizzando la texture di destinazione di rendering. Osserva l'operazione "Render" nella figura mostrata.
  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 effettuare una copia sulla risorsa cross-adapter. Il runtime chiama quindi la funzione PresentDXGI (o pfnPresent) del driver in modalità utente della GPU discreta, con origine impostata sulla risorsa tra adattatori 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.è impostata DirectFlip), DWM indica al driver miniport della GPU integrato di eseguire un'operazione di inversione da un'allocazione tra schede a un'altra. Vedere l'operazione di flip DWM nella figura.

Modello a schermo intero

  1. Il runtime Direct3D istruisce il driver di visualizzazione in modalità utente della GPU integrata di creare un'allocazione primaria condivisa attraverso adattatori per ogni superficie della catena di scambio.
  2. Il runtime Direct3D istruisce il driver di visualizzazione in modalità utente della GPU discreta ad aprire le risorse cross-adapter.
  3. Un'applicazione esegue il rendering sulla GPU discreta utilizzando la texture di destinazione di rendering come destinazione.
  4. Quando l'applicazione chiama un metodo Present, il runtime di Direct3D istruisce il driver di visualizzazione in modalità utente della GPU discreta a eseguire una copia su una risorsa cross-adapter.
  5. Il driver di visualizzazione in modalità utente e il driver miniport della GPU integrata ricevono istruzioni per cambiare a questa risorsa cross-adapter.