Condividi tramite


Specifica dei segmenti per i buffer DMA

Il driver miniport di visualizzazione può specificare segmenti di apertura da cui è possibile allocare buffer DMA. I buffer DMA possono anche essere allocati come memoria di sistema bloccata contigua.

La gestione memoria video alloca ed elimina definitivamente i buffer DMA quando le applicazioni le richiedono. Pertanto, la gestione memoria video richiede un set di segmenti da cui può allocare buffer DMA. Si noti che il set di segmenti può essere costituito da un solo segmento.

Quando il sottosistema kernel di grafica DirectX Microsoft chiama la funzione DxgkDdiCreateDevice del driver miniport di visualizzazione per creare un dispositivo di contesto grafico, il driver miniport di visualizzazione può specificare un set di segmenti da cui la gestione memoria video può allocare buffer DMA. Se il driver miniport di visualizzazione imposta il membro DmaBufferSegmentSet della struttura DXGK_DEVICEINFO su 0, la gestione memoria video allocherà memoria non di paging contigua per i buffer DMA; in questo caso, il driver miniport di visualizzazione deve accedere alla memoria usando cicli PCI e tramite DMA, deve inviare dati direttamente dall'indirizzo fisico della memoria. Se il driver miniport di visualizzazione imposta DmaBufferSegmentSet su diverso da zero, il gestore della memoria video allocherà la memoria di paging e eseguirà il mapping delle pagine ai segmenti di apertura specificati. Le pagine all'interno dei segmenti di apertura vengono rivelate al driver miniport di visualizzazione in una chiamata alla sua funzione DxgkDdiSubmitCommand .

Si noti che il modello di gestione memoria video di base non supporta i buffer DMA nella memoria video locale.