Condividi tramite


Flusso dell'operazione WINDOWS Display Driver Model (WDDM)

Il diagramma seguente mostra il flusso delle operazioni WDDM che si verificano da quando viene creato un dispositivo di rendering a quando il contenuto viene presentato alla visualizzazione. Le informazioni che seguono il diagramma descrivono in modo più dettagliato la sequenza ordinata del flusso dell'operazione.

Diagramma che mostra il flusso dell'operazione WDDM dalla creazione di un dispositivo di rendering alla presentazione del contenuto sullo schermo.

  • Creazione di un dispositivo di rendering

    Dopo che un'applicazione richiede di creare un dispositivo di rendering:

  • Creazione di superfici per un dispositivo

    Dopo che un'applicazione richiede di creare superfici per il dispositivo di rendering:

  • Invio del buffer dei comandi alla modalità kernel

    Dopo che un'applicazione richiede di disegnare in una superficie:

    • 7: Il runtime Direct3D chiama la funzione UMD correlata all'operazione di disegno, ad esempio DrawPrimitive2.

    • 8: il runtime Direct3D chiama la funzione Present o Flush di UMD per fare in modo che il buffer dei comandi venga inviato alla modalità kernel. Nota: UMD invia anche il buffer dei comandi quando il buffer dei comandi è pieno.

    • 9: In risposta al passaggio 8, UMD chiama una delle funzioni fornite dal runtime seguenti:

    • 10: la funzione DxgkDdiPresent di KMD viene chiamata se è stato chiamato pfnPresentCb o la funzione DxgkDdiRender o DxgkDdiRenderKm se è stato chiamato pfnRenderCb. KmD convalida il buffer dei comandi, scrive nel buffer DMA nel formato dell'hardware e produce un elenco di allocazioni che descrive le superfici usate.

  • Invio del buffer DMA all'hardware

    • 11: Dxgkrnl chiama la funzione DxgkDdiBuildPagingBuffer di KMD per creare buffer DMA speciali che spostano le allocazioni specificate nell'elenco di allocazioni da e verso la memoria accessibile dalla GPU. Questi buffer DMA speciali sono noti come buffer di paging. DxgkDdiBuildPagingBuffer non viene chiamato per ogni fotogramma.

    • 12: Dxgkrnl chiama la funzione DxgkDdiSubmitCommand di KMD per accodare i buffer di paging all'unità di esecuzione GPU.

    • 13: Dxgkrnl chiama la funzione DxgkDdiPatch di KMD per assegnare indirizzi fisici alle risorse nel buffer DMA.

    • 14: Dxgkrnl chiama la funzione DxgkDdiSubmitCommand di KMD per accodare il buffer DMA all'unità di esecuzione GPU. Ogni buffer DMA inviato alla GPU contiene un identificatore di recinto, ovvero un numero. Al termine dell'elaborazione del buffer DMA, la GPU genera un interrupt.

    • 15: KMD riceve una notifica dell'interrupt nella funzione DxgkDdiInterruptRoutine . Il kmD deve leggere, dalla GPU, l'identificatore di isolamento del buffer DMA appena completato.

    • 16: KMD deve chiamare DxgkCbNotifyInterrupt per notificare a DXGK che il buffer DMA è stato completato. KmD deve anche chiamare DxgkCbQueueDpc per accodare una chiamata di procedura posticipata (DPC).