Compartir a través de


Segmentos de espacio de apertura lineal

Un segmento de espacio de apertura lineal es similar a un segmento de espacio de memoria lineal. Sin embargo, el segmento de espacio de apertura es solo un espacio de direcciones y no puede contener bits.

Para contener los bits, se deben asignar páginas de memoria del sistema y se debe redirigir el intervalo de espacio de direcciones para hacer referencia a esas páginas. El controlador de miniporte de pantalla en modo kernel (KMD) debe implementar la función DxgkDdiBuildPagingBuffer para DXGK_OPERATION_MAP_APERTURE_SEGMENT y DXGK_OPERATION_UNMAP_APERTURE_SEGMENT tipos de operación para controlar el redireccionamiento y debe exponer esta función como se describe en DriverEntry of Display Miniport Driver. Dxgkrnl llama a DxgkDdiBuildPagingBuffer con el intervalo de espacio de direcciones que se va a redirigir y la MDL que hace referencia a las páginas de memoria del sistema físico asignadas.

El KMD normalmente realiza la redirección del intervalo de espacio de direcciones mediante la programación de una tabla de páginas, que es desconocida para el administrador de memoria de vídeo (VidMm).

El controlador debe establecer la marca de campo de bits aperture en el miembro Flags de la estructura DXGK_SEGMENTDESCRIPTOR para especificar un segmento de espacio de apertura lineal. El controlador también puede establecer las siguientes marcas de campo de bits para indicar otra compatibilidad con segmentos:

  • CpuVisible para indicar que el segmento es accesible para la CPU.

  • CacheCoherent para indicar que el segmento mantiene la coherencia de caché con la CPU de las páginas a las que redirige el segmento.

En la ilustración siguiente se muestra una representación visual de un segmento de espacio de apertura lineal.

Diagrama que ilustra un segmento de espacio de apertura lineal.