Partilhar via


Especificando segmentos para buffers de DMA

O driver de miniporta de exibição pode especificar segmentos de abertura dos quais os buffers de DMA podem ser alocados. Os buffers de AMD também podem ser alocados como memória contígua do sistema bloqueada.

O gerenciador de memória de vídeo aloca e destrói buffers de DMA quando os aplicativos os exigem. Portanto, o gerenciador de memória de vídeo requer um conjunto de segmentos dos quais ele pode alocar buffers de DMA. Observe que o conjunto de segmentos pode consistir em apenas um segmento.

Quando o subsistema de kernel de gráficos do Microsoft DirectX chama a função DxgkDdiCreateDevice do driver de miniporta de exibição para criar um dispositivo de contexto gráfico, o driver de miniporta de exibição pode especificar um conjunto de segmentos do qual o gerenciador de memória de vídeo pode alocar buffers de DMA. Se o driver de miniporto de exibição definir o membro DmaBufferSegmentSet da estrutura DXGK_DEVICEINFO como 0, o gerenciador de memória de vídeo alocará memória nãopagada contígua para buffers DMA; Nesse caso, o driver de miniporta de exibição deve acessar a memória usando ciclos PCI e, por meio do AMD, deve enviar dados diretamente do endereço físico da memória. Se o driver de miniporto de exibição definir DmaBufferSegmentSet como diferente de zero, o gerenciador de memória de vídeo alocará memória paginável e mapeará as páginas para os segmentos de abertura especificados. As páginas dentro dos segmentos de abertura são reveladas para o driver de miniporta de exibição em uma chamada para sua função DxgkDdiSubmitCommand .

Observe que o modelo básico do gerenciador de memória de vídeo não dá suporte a buffers de DMA na memória de vídeo local.