Inizializzazione dell'uso dei segmenti di memoria

I segmenti di memoria, nel contesto del modello di driver di visualizzazione per Windows Vista e versioni successive (WDDM), descrivono lo spazio indirizzi dell'unità di elaborazione grafica (GPU) nella gestione memoria video. I segmenti di memoria generalizzare e virtualizzare le risorse di memoria video. I segmenti di memoria vengono configurati in base ai tipi di memoria supportati dall'hardware(ad esempio, la memoria del buffer frame o l'apertura della memoria di sistema).

Per inizializzare il modo in cui usa segmenti di memoria, il sottosistema kernel della grafica Microsoft DirectX (Dxgkrnl.sys) chiama la funzione DxgkDdiQueryAdapterInfo del driver di visualizzazione. Per indirizzare il driver miniport visualizzato per restituire informazioni sui segmenti di memoria dalla chiamata DxgkDdiQueryAdapterInfo, il sottosistema grafico specifica il DXGKQAITYPE_QUERYSEGMENT o il valore DXGKQAITYPE_QUERYSEGMENT3 nel membro Typedella strutturaDXGKARG_QUERYADAPTERINFO.

Il sottosistema grafico chiama la funzione DxgkDdiQueryAdapterInfo del driver di visualizzazione due volte per le informazioni sul segmento. La prima chiamata a DxgkDdiQueryAdapterInfo recupera il numero di segmenti supportati dal driver e la seconda chiamata recupera informazioni dettagliate su ogni segmento. Nelle chiamate a DxgkDdiQueryAdapterInfo, il driver punta il membro pOutputData di DXGKARG_QUERYADAPTERINFO a strutture DXGK_QUERYSEGMENTOUT popolate (per una versione driver precedente a Windows Display Driver Model (WDDM) 1.2) o alle strutture DXGK_QUERYSEGMENTOUT3 popolate (per un driver WDDM 1.2 e versioni successive).

Nella prima chiamata, il membro pSegmentDescriptor di DXGK_QUERYSEGMENTOUT (per una versione del driver precedente a WDDM 1.2) o DXGK_QUERYSEGMENTOUT3 (per un driver WDDM 1.2 e versioni successive) è impostato su NULL. Il driver deve riempire solo il membro NbSegment di DXGK_QUERYSEGMENTOUT o DXGK_QUERYSEGMENTOUT3 con il numero di tipi di segmento supportati. Questo numero indica anche il numero di strutture DXGK_SEGMENTDESCRIPTOR non popolate (per una versione del driver prima di WDDM 1.2 ) o DXGK_SEGMENTDESCRIPTOR3 (per un driver WDDM 1.2 e versioni successive) che il driver richiede dalla seconda chiamata a DxgkDdiQueryAdapterInfo.

Nella seconda chiamata, il driver deve riempire tutti i membri di DXGK_QUERYSEGMENTOUT o DXGK_QUERYSEGMENTOUT3. Nella seconda chiamata, il driver deve popolare una matrice le dimensioni di NbSegment di DXGK_SEGMENTDESCRIPTORo DXGK_SEGMENTDESCRIPTOR3 strutture nel membro pSegmentDescriptor di DXGK_QUERYSEGMENTOUT o DXGK_QUERYSEGMENTOUT3 con informazioni sui segmenti supportati dal driver.

In entrambe le chiamate a DxgkDdiQueryAdapterInfo, il membro pInputData di DXGKARG_QUERYADAPTERINFO punta a una struttura DXGK_QUERYSEGMENTIN che contiene informazioni sulla posizione e le proprietà dell'apertura AGP. Se non è disponibile alcuna apertura AGP o se è presente, ma non è installato alcun driver GART appropriato, le informazioni sull'apertura AGP sono impostate su zero. Se non è presente alcuna apertura AGP, il driver miniport visualizzato non deve indicare, nella matrice pSegmentDescriptor di DXGK_QUERYSEGMENTOUT o DXGK_QUERYSEGMENTOUT3, che supporta un segmento di apertura di tipo AGP. Se un segmento di apertura di tipo AGP è indicato in tali circostanze, l'adattatore non riesce a inizializzare.

Durante l'inizializzazione, poiché la memoria è abbondante, la memoria per il buffer di paging può essere allocata da un segmento specifico. Gestione memoria video alloca memoria per il buffer di paging dal segmento specificato nel membro PagingBufferSegmentId di DXGK_QUERYSEGMENTOUT o DXGK_QUERYSEGMENTOUT3. Il driver indica l'identificatore del segmento del buffer di paging nella seconda chiamata a DxgkDdiQueryAdapterInfo. Il driver deve specificare anche le dimensioni in byte che devono essere allocate per il buffer di paging nel membro PagingBufferSize di DXGK_QUERYSEGMENTOUT o DXGK_QUERYSEGMENTOUT3.

Per altre informazioni sui segmenti di memoria e sull'uso dei buffer di paging, vedere Gestione dei segmenti di memoria e paging delle risorse di memoria video.