Condividi tramite


Panoramica della residenza

Panoramica

Oggi il driver in modalità utente compila le informazioni sull'elenco di percorsi di allocazione e patch insieme a ogni buffer dei comandi compilato. Queste informazioni vengono usate dal gestore di memoria video per due scopi:

  • L'elenco di allocazioni e l'elenco dei percorsi delle patch vengono usati per applicare patch ai buffer dei comandi con indirizzi di segmento effettivi prima che vengano inviati a un motore gpu (Graphics Processing Unit). Il supporto degli indirizzi virtuali GPU in Windows Display Driver Model (WDDM) v2 rimuove la necessità di questa applicazione di patch.
  • L'elenco di allocazioni e l'elenco dei percorsi delle patch vengono usati dal gestore della memoria video per controllare la residenza dell'allocazione. La gestione memoria video garantisce che tutte le allocazioni a cui fa riferimento un buffer di comando vengano effettuate residente prima che il buffer dei comandi venga inviato all'esecuzione per un determinato motore.

Con l'introduzione del nuovo modello di residenza, la residenza viene spostata in un elenco esplicito nel dispositivo anziché nell'elenco di buffer per comando. La gestione memoria video garantisce che tutte le allocazioni in un determinato elenco di requisiti di residenza del dispositivo siano residenti prima che tutti i contesti appartenenti a tale dispositivo siano pianificati per l'esecuzione.

Per gestire la residenza, il driver in modalità utente avrà accesso a due nuove interfacce del driver di dispositivo (DDI), MakeResident ed Evict, nonché per implementare un nuovo callback TrimResidency . MakeResident aggiungerà una o più allocazioni a un elenco dei requisiti di residenza dei dispositivi. Evict rimuoverà una di più allocazioni da tale elenco. Il callback TrimResidency verrà chiamato dal gestore della memoria video quando necessita del driver in modalità utente per ridurre i requisiti di residenza.

MakeResident ed Evict sono stati aggiornati anche per mantenere un conteggio dei riferimenti interni, ovvero più chiamate a MakeResident richiederanno un numero uguale di chiamate Evict per rimuovere effettivamente l'allocazione.

Nel nuovo modello di residenza, l'allocazione del buffer per comando e l'elenco di percorsi delle patch vengono gradualmente eliminati gradualmente. Anche se questi elenchi saranno presenti in alcuni scenari, non avranno più alcun controllo sulla residenza.

Importante La residenza in WDDM v2 è controllata esclusivamente dall'elenco dei requisiti di residenza dei dispositivi. Questo vale per tutti i motori della GPU e per ogni API.

Suddivisione in fasi dell'elenco di allocazione e posizione delle patch

Il ruolo dell'elenco di località di allocazione e patch verrà ridotto in modo significativo con l'introduzione del nuovo modello di residenza e andrà effettivamente completamente via con l'introduzione della pianificazione assistita dall'hardware.

Nel modello di pianificazione basata su pacchetti l'elenco di allocazione continuerà a esistere come segue:

  • Per i motori che non supportano l'indirizzamento virtuale GPU, l'elenco di allocazioni e l'elenco di percorsi delle patch continueranno a esistere, ma verranno usati esclusivamente a scopo di applicazione di patch e non avranno più alcun controllo sulla residenza. L'elenco di allocazioni e l'elenco di posizioni patch verranno forniti sia al driver in modalità utente che al driver in modalità kernel nei vari DDI consueti, ma tutti i riferimenti alle allocazioni che non sono residenti causeranno il rifiuto dell'invio da parte dell'utilità di pianificazione GPU e l'errore del dispositivo (perdita). Questa modalità di funzionamento è considerata legacy e tutti i motori GPU riceveranno il supporto per l'indirizzamento virtuale GPU nelle versioni hardware future. È previsto che questa modalità di operazione venga eliminata nelle versioni future di WDDM.
  • Per i motori che supportano l'indirizzamento virtuale GPU, viene aggiunto un nuovo flag di creazione del contesto (DXGK_CONTEXTINFO_NO_PATCHING_REQUIRED) per indicare che il contesto specifico non richiede alcuna applicazione di patch. Quando questo flag viene specificato, non verrà allocato alcun elenco di percorsi patch e verrà allocato solo un elenco di allocazione molto piccolo (16 voci). L'elenco di allocazione verrà usato per tenere traccia dei riferimenti di scrittura alle superfici primarie e per nessun altro scopo. L'utilità di pianificazione GPU deve sapere quando un particolare buffer di comandi sta scrivendo in una superficie primaria in modo che possa sincronizzare correttamente l'esecuzione del buffer rispetto all'inversione potenzialmente in corso sulla superficie primaria.

Analogamente, l'elenco di allocazione viene attualmente usato nel percorso Present del driver in modalità kernel per passare informazioni al driver sull'origine e sulla destinazione dell'operazione Present . In questo contesto l'elenco di allocazione continuerà a esistere per passare i parametri, ma l'elenco di allocazione non verrà usato per la residenza. Nelle GPU che richiedono l'applicazione di patch all'elenco Di allocazione presente conterrà informazioni di pre-patch come avvieni oggi e il pacchetto Presente verrà nuovamente sottoposto a patch prima di essere pianificato se una delle risorse si sposta in memoria tra il momento in cui vengono accodati all'utilità di pianificazione e il momento in cui sono pianificati per l'esecuzione sulla GPU.

La tabella seguente riepiloga quando un driver WDDM v2 dovrebbe ricevere un elenco di percorsi di allocazione e patch in vari driver in modalità utente e DDI del driver in modalità kernel.

Motore GPU Elenco allocazioni? Elenco dei percorsi patch?
Nessun supporto per indirizzi virtuali GPU (richiede l'applicazione di patch, impostazione predefinita)

Sì, le dimensioni complete, ma vengono usate esclusivamente a scopo di applicazione di patch.

Qualsiasi riferimento all'allocazione non residente comporterà l'errore del dispositivo di invio (perso) e l'invio rifiutato dall'utilità di pianificazione.
Sì, dimensioni intere.
Supporto degli indirizzi virtuali GPU (set di flag DXGK_CONTEXTINFO_NO_PATCHING_REQUIRED )

Sì, 16 voci.

Fa riferimento alla superficie primaria, se presente, scritta dal buffer dei comandi. Usato dall'utilità di pianificazione GPU per la sincronizzazione con le labbra che si verificano nel controller di visualizzazione. La superficie primaria deve essere già presente nell'elenco dei requisiti di residenza del dispositivo oppure il riferimento verrà rifiutato.
No
Supporto degli indirizzi virtuali GPU e pianificazione hardware No No