Anfordern der Umbenennung einer Zuordnung

Der Anzeigetreiber für den Benutzermodus sollte den Videospeicher-Manager auffordern, eine Zuordnung umzubenennen, die einer Oberfläche zugeordnet ist, wenn eine Anwendung angibt, den Inhalt der Oberfläche im Rahmen einer Anforderung zum Sperren der Oberfläche zu verwerfen (z. B. einen Vertexpuffer). Die Microsoft Direct3D-Runtime übergibt das Bitfeldflag Verwerfen , um anzugeben, dass der aktuelle Inhalt der Oberfläche nicht mehr erforderlich ist. Der Treiber kann anfordern, dass der Videospeicher-Manager eine neue Zuordnung zuweisen soll, um die Sperranforderung zu behandeln, wenn die aktuelle Zuordnung, die den Inhalt der Oberfläche enthält, ausgelastet ist, anstatt den Anwendungsthread zu blockieren, bis die aktuelle Zuordnung im Leerlauf liegt.

Der Benutzermodusanzeigetreiber fordert den Videospeicher-Manager auf, eine Zuordnung umzubenennen, wenn der Treiber das Verwerfen-Element der D3DDDICB_LOCKFLAGS-Struktur in einem Aufruf der pfnLockCb-Funktion festlegt. Der Videospeicher-Manager bestimmt, ob die Zuordnung umbenannt werden soll oder ob die Anwendung so lange angehalten werden soll, bis sich die Zuordnung im Leerlauf befindet, basierend darauf, ob die Zuordnung derzeit ausgelastet ist und die aktuelle Arbeitsspeicherbedingung verwendet wird. Für jede umbenennte Zuordnung verwaltet der Videospeicher-Manager eine Liste der Zuordnungen, die sukzessive zum Sperren von Zuordnungen verwendet werden. Der Videospeicher-Manager durchläuft die Liste jedes Mal, wenn die Anwendung den Inhalt einer Zuordnung verwirft. Die Länge der Liste wird durch die Anwendungsanforderungen und den Arbeitsspeicherdruck bestimmt. Der Videospeicher-Manager versucht, die Liste so lang zu halten, dass der Anwendungsthread bei einer Sperranforderung nicht blockiert wird. Unter Arbeitsspeicherdruck kann der Videospeicher-Manager die Liste jedoch kürzen, um zusätzlichen Arbeitsspeicherdruck zu vermeiden.

Um die Länge der Umbenennungsliste für eine Zuordnung zu begrenzen, legt der Treiber das MaximumRenamingListLength-Element der DXGK_ALLOCATIONINFO-Struktur fest, wenn er die Zuordnung erstellt. Wenn der Treiber MaximumRenamingListLength auf einen Wert ohne Zero festlegt, bestimmt der Videospeicher-Manager die angemessene Länge der Umbenennungsliste, ohne den vom Treiber festgelegten Grenzwert zu überschreiten. Wenn der Treiber MaximumRenamingListLength auf 0 festlegt, kann der Speicher-Manager die Größe der Umbenennungsliste auf die größe erhöhen, die zur Verbesserung der Leistung erforderlich ist.

Beachten Sie, dass der Videospeicher-Manager, wenn der Benutzermodusanzeigetreiber das Element Verwerfen von D3DDDICB_LOCKFLAGS festlegt, nicht den Anzeigeminiporttreiber aufruft, um zusätzliche Zuordnungen für die ursprüngliche Zuordnung zuzuweisen. Der Videospeicher-Manager erstellt alle zusätzlichen Zuordnungen mithilfe der Erstellungsparameter der ursprünglichen Zuordnung. Aus Sicht des Anzeigeminiporttreibers wird dieselbe Zuordnung an potenziell mehreren gleichzeitigen Segmentstandorten eingelagert.