Линейные сегменты пространства диафрагмы
Линейный сегмент пространства диафрагмы похож на сегмент линейного пространства памяти. Однако сегмент пространства диафрагмы является только адресным пространством и не может содержать биты.
Чтобы сохранить биты, необходимо выделить страницы системной памяти, а диапазон адресного пространства должен быть перенаправлен для ссылки на эти страницы. Драйвер мини-порта (KMD) в режиме ядра должен реализовать функцию DxgkDdiBuildPagingBuffer для типов операций DXGK_OPERATION_MAP_APERTURE_SEGMENT и DXGK_OPERATION_UNMAP_APERTURE_SEGMENT для обработки перенаправления и должен предоставлять эту функцию, как описано в driverEntry display Miniport Driver. Dxgkrnl вызывает DxgkDdiBuildPagingBuffer с диапазоном адресного пространства для перенаправления и MDL, ссылающийся на выделенные страницы памяти физической системы.
KMD обычно выполняет перенаправление диапазона адресного пространства путем программирования таблицы страницы, которая неизвестна диспетчеру памяти видео (VidMm).
Драйвер должен задать флаг битового поля Aperture в элементе Flags структуры DXGK_SEGMENTDESCRIPTOR, чтобы указать линейный сегмент пространства диафрагмы. Драйвер также может задать следующие флаги битового поля, чтобы указать поддержку других сегментов:
CpuVisible , чтобы указать, что сегмент доступен для ЦП.
CacheCoherent указывает, что сегмент поддерживает совместное использование кэша с ЦП для страниц, на которые сегмент перенаправляется.
На следующем рисунке показан визуальное представление сегмента линейного пространства диафрагмы.