Compartilhar via


Segmentos lineares de espaço de abertura

Um segmento de espaço de abertura linear é semelhante a um segmento de espaço de memória linear. No entanto, o segmento de espaço de abertura é apenas um espaço de endereço 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 miniporta de exibição (KMD) do modo kernel deve implementar a função DxgkDdiBuildPagingBuffer para DXGK_OPERATION_MAP_APERTURE_SEGMENT e DXGK_OPERATION_UNMAP_APERTURE_SEGMENT tipos de operação para manipular o redirecionamento e deve expor essa função conforme descrito em DriverEntry of Display Miniport Driver. 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 do sistema físico que foram alocadas.

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

O driver deve definir o sinalizador de campo de bits de abertura no membro Sinalizadores 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 suporte a outros segmentos:

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

  • CacheCoherent para indicar que o segmento mantém coerência de 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 de espaço de abertura linear.

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