AGP-Unterstützung

Microsoft DirectDraw behandelt AGP-Speicher (Accelerated Graphics Port) als Unterklasse des Anzeigespeichers. Dieser Speichertyp wird als nichtlokaler Anzeigespeicher bezeichnet. Die Begriffe AGP-Arbeitsspeicher und nichtlokaler Anzeigespeicher sind aus der Perspektive von DirectDraw- und DirectDraw-Treibern gleichbedeutend.

AGP-Arbeitsspeicher wird als reine Unterklasse des Anzeigespeichers betrachtet. Das heißt, wenn ein Treiber angibt, dass er AGP-Arbeitsspeicher unterstützt, muss er in den meisten Fällen über die gleichen Funktionalen Funktionen für den lokalen und nicht lokalen Anzeigespeicher verfügen, obwohl Leistungsunterschiede zulässig sind. Die Ausnahme ist, wenn das flag DDCAPS2_NONLOCALVIDMEMCAPS festgelegt ist. In diesem Fall können sich die blt-Funktionen für nichtlokalen Anzeigespeicher vom lokalen Anzeigespeicher unterscheiden.

Wenn ein Treiber beispielsweise angibt, dass er eine Textur aus dem Anzeigespeicher erstellen kann, muss er in der Lage sein, sowohl aus dem lokalen als auch aus dem nicht lokalen Anzeigespeicher zu texturieren. Blitting wird ähnlich behandelt. Ein Treiber, der die Blt-Funktion des Quellfarbschlüssels exportiert, muss in der Lage sein, eine Quellfarbschlüssel-BLT sowohl in den als auch aus dem nichtlokalen Anzeigespeicher zu erstellen. Die einzige Ausnahme von dieser Regel ist, dass es möglich ist, zu verhindern, dass bestimmte Oberflächentypen jemals im nichtlokalen Anzeigespeicher zugeordnet werden. Beispielsweise ist es möglich, Heaps zu verwenden, um zu verhindern, dass Überlagerungsflächen jemals im AGP-Arbeitsspeicher zugeordnet werden.

Da AGP-Speicher als Unterklasse des Anzeigespeichers behandelt wird, verfügt DirectDraw über keinen separaten Satz von Anzeigetreiber-Einstiegspunkten für AGP-Arbeitsspeicher. Die vorhandenen Aufrufe des Anzeigetreibers werden sowohl für AGP-Oberflächen als auch für lokale Anzeigespeicheroberflächen verwendet. Ein AGP-kompatibler Treiber muss eingehende Oberflächen überprüfen, um festzustellen, ob sie sich im nicht lokalen oder lokalen Anzeigespeicher befinden, und die entsprechende Aktion ausführen. Blts von System zu AGP (und umgekehrt) durchlaufen die DirectDraw-Emulationsebene wie gewohnt, es sei denn, ein Treiber unterstützt System-zu-Anzeige-Speicher-Blts (in diesem Fall muss er auch System-zu-AGP-Übertragungen unterstützen).

Treiber sollten das DDCAPS2_TEXMANINNONLOCALVIDMEM-Flag so weit wie möglich festlegen, da der Direct3D-Textur-Manager sein Hintergrundbild der Videospeicherkopie einer Oberfläche im AGP-Speicher (anstelle des Systemspeichers) behält, wenn dies der Fall ist.

Im weiteren Verlauf dieses Abschnitts werden die schritte erläutert, die erforderlich sind, um Ihren vorhandenen Treiber so zu ändern, dass er AGP-Arbeitsspeicher mithilfe von DirectDraw-Features für nichtlokale Anzeigespeicher unterstützt.