Разбиение ресурсов видеопамять на страницы
В отличие от модели драйвера дисплея Microsoft Windows 2000, модель драйвера дисплея Windows Vista позволяет создавать больше ресурсов видеопамяти, чем общий объем доступной физической видеопамяти, который затем затем выстраивать видеопамяти и из нее при необходимости. Иными словами, не все ресурсы видеопамяти находятся в видеопамяти одновременно.
В конвейере GPU может быть несколько буферов DMA. Ресурсы видеопамяти, на которые ссылаются эти активные буферы DMA, должны находиться в видеопамяти. Другие неактивные ресурсы видеопамяти можно выстраивать в системную память.
Прежде чем планировщик GPU сможет вызвать функцию DxgkDdiSubmitCommand драйвера мини-порта дисплея для отправки буфера DMA в GPU, планировщик должен убедиться, что все ресурсы видеопамяти, используемые буфером DMA, фактически находятся в видеопамяти. Если некоторые ресурсы не находятся в видеопамяти, их необходимо разостранить из системной памяти. Планировщик GPU должен вызвать диспетчер видеопамяти для поиска места в видеопамяти для передачи необходимых данных ресурсов видеопамяти из системной памяти в видеопамяти. Если потребность в видеопамяти высока, планировщик GPU должен вызвать диспетчер видеопамяти для передачи данных бездействующего ресурса видеопамяти в системную память, чтобы освободить место для необходимых данных ресурсов видеопамяти. Буферы DMA специального назначения, содержащие команды для передачи данных между видео и системной памятью, называются буферами подкачки. Диспетчер видеопамяти вызывает функцию DxgkDdiBuildPagingBuffer драйвера мини-порта дисплея, чтобы создать буферы подкачки, в которые драйвер записывает команды передачи данных, зависящие от оборудования.