Condividi tramite


Elaborare i budget di residenza

In Windows Display Driver Model (WDDM) v2 i processi verranno assegnati budget per la quantità di memoria che possono mantenere residenti. Questo budget può cambiare nel tempo, ma in genere verrà imposto solo quando il sistema è sotto pressione di memoria. Prima di Microsoft Direct3D 12, il budget viene gestito dal driver in modalità utente sotto forma di notifiche di taglio e errori MakeResident con STATUS_NO_MEMORY. Notifica TrimToBudget , Evict e MakeResident non riuscito chiama tutti i budget più recenti sotto forma di valore intero NumBytesToTrim che indica quanto deve essere tagliato per adattarsi al nuovo budget.

Per le applicazioni Direct3D 12, il budget viene gestito completamente dall'applicazione. La dimensione del budget è destinata a un segnale per consentire all'applicazione di sapere cosa ridimensionare. Usando le dimensioni del budget come suggerimento, l'applicazione può decidere il numero di risorse da mantenere residenti, la risoluzione e la qualità delle risorse da mantenere.

Per gestire correttamente questi budget, il kernel deve conoscere quale memoria deve partecipare al budget. È disponibile un nuovo bit ApplicationTarget nella struttura DXGK_SEGMENTFLAGS2 che deve essere impostata su segmenti che il driver in modalità kernel vuole essere incluso nella logica di budget. Ad esempio, in un'unità di elaborazione grafica discreta (GPU) con 1 segmento di VRAM adatto all'utilizzo dell'applicazione e 1 segmento di VRAM usato automaticamente per le risorse speciali, il driver contrassegnerà probabilmente solo il segmento VRAM primario come ApplicationTarget. Per le GPU integrate, il segmento di apertura principale in genere sarà quello contrassegnato. Non esiste alcun limite al numero di segmenti che possono essere contrassegnati come ApplicationTarget. Il kernel aggrega questi elementi e presenta l'applicazione con una dimensione unificata.