Partilhar via


Segmentos Lineares de Espaço de Abertura

Um segmento linear de espaço de abertura é semelhante a um segmento linear de espaço de memória. No entanto, o segmento de espaço de abertura é apenas um espaço de endereçamento e não pode conter bits.

Para armazenar os bits, as páginas de memória do sistema devem ser alocadas e o intervalo de espaço de endereço deve ser redirecionado para fazer referência a essas páginas. O driver de miniport de exibição em modo kernel (KMD) deve implementar a função DxgkDdiBuildPagingBuffer para os tipos de operação DXGK_OPERATION_MAP_APERTURE_SEGMENT e DXGK_OPERATION_UNMAP_APERTURE_SEGMENT a fim de lidar com o redirecionamento, e deve expor essa função conforme descrito em DriverEntry do Driver de Miniport de Exibição. Dxgkrnl chama DxgkDdiBuildPagingBuffer com o intervalo de espaço de endereço a ser redirecionado e o MDL que faz referência às páginas de memória física do sistema que foram alocadas.

O KMD normalmente realiza o redirecionamento do intervalo de espaço de endereço programando uma tabela de páginas, que é desconhecida para o gerenciador de memória de vídeo (VidMm).

O driver deve definir o sinalizador de campo de bits Aperture no membro Flags da estrutura DXGK_SEGMENTDESCRIPTOR para especificar um segmento de espaço de abertura linear. O driver também pode definir os seguintes sinalizadores de campo de bits para indicar outro suporte de segmento:

  • CpuVisible para indicar que o segmento é acessível pela CPU.

  • CacheCoherent para indicar que o segmento mantém a coerência do cache com a CPU para as páginas para as quais o segmento redireciona.

A figura a seguir mostra uma representação visual de um segmento linear abertura-espaço.

Diagrama ilustrando um segmento de espaço de abertura linear.