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.