Condividi tramite


Segmenti di spaziatura lineare

Un segmento di spazio di apertura lineare è simile a un segmento di spazio di memoria lineare. Tuttavia, il segmento spazio di apertura è solo uno spazio indirizzi e non può contenere bit.

Per contenere i bit, è necessario allocare le pagine di memoria di sistema e l'intervallo di spazio indirizzi deve essere reindirizzato per fare riferimento a tali pagine. Il driver miniport in modalità kernel deve implementare la funzione DxgkDdiBuildPagingBuffer per i tipi di operazione DXGK_OPERATION_MAP_APERTURE_SEGMENT e DXGK_OPERATION_UNMAP_APERTURE_SEGMENT per gestire il reindirizzamento e deve esporre questa funzione come descritto in DriverEntry of Display Miniport Driver. Dxgkrnl chiama DxgkDdiBuildPagingBuffer con l'intervallo di spazio degli indirizzi da reindirizzare e il file MDL che fa riferimento alle pagine di memoria del sistema fisico allocate.

Il KMD esegue in genere il reindirizzamento dell'intervallo di spazi di indirizzi programmando una tabella di pagine, sconosciuta alla gestione della memoria video (VidMm).

Il driver deve impostare il flag di campo di bit Aperture nel membro Flags della struttura DXGK_SEGMENTDESCRIPTOR per specificare un segmento dello spazio di apertura lineare. Il driver può anche impostare i flag di campo di bit seguenti per indicare il supporto di altri segmenti:

  • CpuVisible per indicare che il segmento è accessibile dalla CPU.

  • CacheCoherent per indicare che il segmento mantiene la coerenza della cache con la CPU per le pagine a cui il segmento reindirizza.

La figura seguente mostra una rappresentazione visiva di un segmento dello spazio di apertura lineare.

Diagramma che illustra un segmento dello spazio di apertura lineare.