Auslagerung von Videospeicherressourcen

Im Gegensatz zum Microsoft Windows 2000-Anzeigetreibermodell ermöglicht das Windows Vista-Displaytreibermodell das Erstellen von mehr Videospeicherressourcen als die Gesamtmenge des verfügbaren physischen Videospeichers, die dann bei Bedarf in den und aus dem Videospeicher ausgelagert werden. Anders ausgedrückt: Nicht alle Videospeicherressourcen befinden sich gleichzeitig im Videospeicher.

Die GPU kann mehrere DMA-Puffer in ihrer Pipeline enthalten. Die Videospeicherressourcen, auf die von diesen aktiven DMA-Puffern verwiesen wird, müssen sich im Videospeicher befinden. Andere Im Leerlauf-Videospeicherressourcen können in den Systemspeicher ausgelagert werden.

Bevor der GPU-Planer die DxgkDdiSubmitCommand-Funktion des Anzeige-Miniporttreibers aufrufen kann, um einen DMA-Puffer an die GPU zu übermitteln, muss der Planer sicherstellen, dass sich alle vom DMA-Puffer verwendeten Videospeicherressourcen tatsächlich im Videospeicher befinden. Wenn sich einige Ressourcen nicht im Videospeicher befinden, müssen sie aus dem Systemspeicher ausgelagert werden. Der GPU-Scheduler muss den Videospeicher-Manager aufrufen, um Speicherplatz im Videospeicher zu finden, um die erforderlichen Videospeicherressourcendaten aus dem Systemspeicher in den Videospeicher zu übertragen. Wenn der Videospeicherbedarf hoch ist, muss der GPU-Planer den Videospeicher-Manager aufrufen, um Daten zu Videospeicherressourcen im Leerlauf in den Systemspeicher zu übertragen, um Platz für die erforderlichen Videospeicherressourcendaten zu schaffen. Die speziellen DMA-Puffer, die die Befehle zum Übertragen von Daten zwischen Video- und Systemspeicher enthalten, werden als Pagingpuffer bezeichnet. Der Videospeicher-Manager ruft die DxgkDdiBuildPagingBuffer-Funktion des Display-Miniporttreibers auf, um Pagingpuffer zu erstellen, in die der Treiber hardwarespezifische Datenübertragungsbefehle schreibt.