Paging Video Memory Resources
不同于Win2000的显示驱动模型,Vista的显示驱动模型允许实际被创建的显示内存资源大于物理可用的显示内存总量,即图形内存能够被Page in 和Page out。因此,并不是所有的的显示内存会同时存在于显存中。
GPU能在其管线中拥有多个DMA buffer。而active的DMA buffer中引用的显存资源必须存在于显存之中。而另外暂时不会用到的现存资源则能被page out到系统内存中。
在GPU Scheduler能够调用KMD的DxgkDdiSubmitCommand来将提交DMA buffer到GPU硬件之前,Scheduler必须保证被提交的DMA buffer中引用的显存资源实际存在于显存中。如果有资源不在显存中,这些资源必须从系统内存中page in到显存中。GPU scheduler必须调用VMM在显存中寻找空间并将资源数据从系统内存中转移到显存中。当显存需求过高时,GPU scheduler会调用VMM将暂时不适用的显示内存支援转移到系统内存中,以留出空间给需要使用到的显存资源。 这种包含转移显存内容指令的用于特殊目的的DMA buffer被称为paging buffer。VMM调用KMD的DxgkDdiBuildPagingBuffer来创建paging buffer,KMD会在其中写入硬件指定的数据转移指令。