Share via


Richiesta di rinominare un'allocazione

Il driver di visualizzazione in modalità utente deve richiedere che la gestione memoria video rinomina un'allocazione associata a una superficie quando un'applicazione indica di eliminare il contenuto della superficie come parte di una richiesta per bloccare la superficie,ad esempio un buffer del vertice. Il runtime Di Microsoft Direct3D passa il flag di campo a bit di eliminazione per indicare che non richiede più il contenuto corrente dell'area. Il driver può richiedere che la gestione memoria video alloca una nuova allocazione per gestire la richiesta di blocco se l'allocazione corrente che mantiene il contenuto della superficie è occupato, anziché bloccare il thread dell'applicazione fino a quando l'allocazione corrente non diventa inattiva.

Il driver di visualizzazione in modalità utente richiede che la gestione memoria video rinomina un'allocazione quando il driver imposta il membro Annulla della struttura D3DDDICB_LOCKFLAGS in una chiamata alla funzione pfnLockCb . La gestione memoria video determina se deve rinominare l'allocazione o deve causare lo stallo dell'applicazione fino a quando l'allocazione non è inattiva in base al fatto che l'allocazione sia attualmente occupato e nella condizione di memoria corrente. Per ogni allocazione rinominata, la gestione memoria video mantiene un elenco di allocazioni che vengono usate successivamente per bloccare le allocazioni. La gestione memoria video viene eseguita tramite l'elenco ogni volta che l'applicazione elimina il contenuto di un'allocazione. La lunghezza dell'elenco è determinata dai requisiti dell'applicazione e dalla pressione di memoria. Gestione memoria video tenta di mantenere l'elenco abbastanza lungo per evitare di bloccare il thread dell'applicazione in una richiesta di blocco. Tuttavia, sotto pressione sulla memoria, la gestione memoria video può tagliare l'elenco per evitare di causare una pressione di memoria aggiuntiva.

Per imporre un limite alla lunghezza dell'elenco di ridenominazione per un'allocazione, il driver imposta il membro MaximumRenamingListLength della struttura DXGK_ALLOCATIONINFO quando crea l'allocazione. Se il driver imposta MaximumRenamingListLength su un valore diverso da zero, la gestione memoria video determina la lunghezza appropriata dell'elenco di ridenominazione senza superare il limite imposto dal driver. Se il driver imposta MaximumRenamingListLength su 0, la gestione memoria può aumentare le dimensioni dell'elenco di ridenominazione a qualsiasi dimensione necessaria per migliorare le prestazioni.

Si noti che quando il driver di visualizzazione in modalità utente imposta il membro Annulla di D3DDDICB_LOCKFLAGS, la gestione memoria video non chiama il driver miniport visualizzato per allocare allocazioni aggiuntive per l'allocazione originale. Gestione memoria video crea tutte le allocazioni aggiuntive usando i parametri di creazione dell'allocazione originale. Dal punto di vista del driver miniport visualizzato, la stessa allocazione viene impaginata in in posizioni di segmento simultanee potenzialmente multiple.