Supporto del sistema e del driver per Resizable BAR

Un'unità di elaborazione grafica discreta (GPU) ha in genere solo una piccola parte del buffer di frame esposto sul bus PCI. Per la compatibilità con i sistemi operativi a 32 bit, le GPU discrete in genere sostengono un'area di I/O di 256 MB per i buffer dei frame. Questo valore viene usato per la configurazione da parte del firmware tipico.

Nelle GPU che supportano un registro degli indirizzi di base ridimensionabile (BAR), Windows rinegozia le dimensioni della BARRA di una GPU dopo l'inizializzazione del firmware in Windows Display Driver Model (WDDM) v2 e versioni successive. Per ulteriori informazioni su BAR ridimensionabile, fare riferimento alla specifica della funzionalità BAR ridimensionabile nella libreria di specifiche PCI SIG.

Una GPU che supporta BAR ridimensionabile deve garantire che il display continui a mostrare un'immagine statica durante il processo di riprogrammazione della BAR. Lo schermo non deve essere vuoto o sfarfallio durante questo processo. È importante eseguire una transizione uniforme tra l'immagine visualizzata dal firmware, l'immagine del caricatore di avvio e la prima immagine generata dal driver in modalità kernel. Nessuna transazione PCI si verifica verso la GPU mentre viene eseguita la rinegoziazione.

La rinegoziazione è per lo più invisibile al driver in modalità kernel. Quando la rinegoziazione ha esito positivo, il driver in modalità kernel rileva che la BAR GPU viene ridimensionata alla sua dimensione massima per esporre l'intera VRAM della GPU discreta.

Dopo un ridimensionamento corretto, il driver in modalità kernel deve esporre un singolo CPUVisible segmento di memoria al gestore della memoria video. Il gestore della memoria video mappa gli indirizzi virtuali della CPU direttamente in questo intervallo quando la CPU deve accedere al contenuto del segmento di memoria. Per ulteriori informazioni, vedere struttura DXGK_SEGMENTFLAGS - Membro CPUVisible.