비디오 메모리 리소스 페이징
Microsoft Windows 2000 디스플레이 드라이버 모델과 달리 Windows Vista 디스플레이 드라이버 모델을 사용하면 사용 가능한 실제 비디오 메모리의 총 양보다 더 많은 비디오 메모리 리소스를 만들 수 있으며, 이 리소스는 필요에 따라 비디오 메모리 내/외부로 페이징됩니다. 즉, 모든 비디오 메모리 리소스가 동시에 비디오 메모리에 있는 것은 아닙니다.
GPU는 파이프라인에 여러 DMA 버퍼를 포함할 수 있습니다. 이러한 활성 DMA 버퍼에서 참조하는 비디오 메모리 리소스는 비디오 메모리에 있어야 합니다. 다른 유휴 비디오 메모리 리소스는 시스템 메모리로 페이징할 수 있습니다.
GPU 스케줄러가 디스플레이 미니포트 드라이버의 DxgkDdiSubmitCommand 함수를 호출하여 DMA 버퍼를 GPU에 제출하기 전에 스케줄러는 DMA 버퍼에서 사용하는 모든 비디오 메모리 리소스가 실제로 비디오 메모리에 있는지 확인해야 합니다. 일부 리소스가 비디오 메모리에 없는 경우 시스템 메모리에서 페이징되어야 합니다. GPU 스케줄러는 비디오 메모리 관리자를 호출하여 비디오 메모리에서 필요한 비디오 메모리 리소스 데이터를 시스템 메모리에서 비디오 메모리로 전송할 공간을 찾아야 합니다. 비디오 메모리 수요가 높은 경우 GPU 스케줄러는 비디오 메모리 관리자를 호출하여 유휴 비디오 메모리 리소스 데이터를 시스템 메모리로 전송하여 필요한 비디오 메모리 리소스 데이터를 위한 공간을 확보해야 합니다. 비디오와 시스템 메모리 간에 데이터를 전송하는 명령을 포함하는 특수 용도의 DMA 버퍼를 페이징 버퍼라고 합니다. 비디오 메모리 관리자는 디스플레이 미니포트 드라이버의 DxgkDdiBuildPagingBuffer 함수를 호출하여 드라이버가 하드웨어별 데이터 전송 명령을 작성하는 페이징 버퍼를 만듭니다.