DXGK_SEGMENTDESCRIPTOR Struktur (d3dkmddi.h)
Die DXGK_SEGMENTDESCRIPTOR-Struktur enthält Informationen zu einem Segment, das vom Treiber unterstützt wird.
Syntax
typedef struct _DXGK_SEGMENTDESCRIPTOR {
[out] PHYSICAL_ADDRESS BaseAddress;
[out] PHYSICAL_ADDRESS CpuTranslatedAddress;
[out] SIZE_T Size;
[out] UINT NbOfBanks;
[out] SIZE_T *pBankRangeTable;
[out] SIZE_T CommitLimit;
[out] DXGK_SEGMENTFLAGS Flags;
} DXGK_SEGMENTDESCRIPTOR;
Member
[out] BaseAddress
Die Basisadresse des Segments, die von der Grafikverarbeitungseinheit (GPU) bestimmt wird. Der physischen Adresse einer Zuordnung, die der Videospeicher-Manager im Segment ausgelagert hat, wird eine GPU-Adresse zugewiesen, die von der Basisadresse, die BaseAddress angibt, offsett.
Der Videospeicher-Manager ignoriert die Basisadresse von AGP-Typ Blendensegmenten (wobei das AGP-Bitfeldflag im Flags-Element angegeben ist) und verwendet stattdessen die tatsächliche physische Adresse des Segments innerhalb der AGP-Blende, wie sie auf dem Bus bestimmt wird, in dem sich die GPU befindet. In dieser Situation kann der Treiber Adressen verwenden, die der Videospeicher-Manager für die Zuordnung direkt generiert hat, ohne dass eine Übersetzung erforderlich ist.
[out] CpuTranslatedAddress
Die Basisadresse des Segments im Verhältnis zum Bus, mit dem die GPU verbunden ist. Wenn die GPU beispielsweise auf dem PCI-Bus verbunden ist, ist CpuTranslatedAddress die Basisadresse des nutzbaren Bereichs, der durch ein PCI-Basisadressenregister (BAR) angegeben wird. Der Treiber gibt diese Adresse nur an, wenn er ein segment mit CPU-Zugriff angibt, indem das Bitfeldflag CpuVisible im Flags-Element festgelegt wird.
Dieses Element wird für Blendensegmente ignoriert, einschließlich des AGP-Typ-Blendensegments. Die einzige Ausnahme tritt auf, wenn der Benutzermodusanzeigetreiber keine alternative virtuelle Adresse für eine primäre Zuordnung eingerichtet hat (d. a. wenn der Treiber UseAlternateVA im Flags-Member der D3DDDICB_LOCKFLAGS-Struktur während eines Aufrufs der pfnLockCb-Funktion nicht festgelegt hat).
Bevor der Videospeicher-Manager eine virtuelle Adresse dem physischen Bereich zuordnet, übersetzt der Videospeicher-Manager diese physische Adresse basierend auf der CPU-Ansicht des Busses und informiert den Treiber über den Vorgang, damit der Treiber eine Blende einrichten kann, um auf den Inhalt des Segments an der angegebenen Stelle zuzugreifen.
[out] Size
Die Größe des Segments in Bytes. Diese Größe muss ein Vielfaches der nativen Hostseitengröße sein (z. B. 4 KB für die x86-Architektur).
Für AGP-Typ-Blendensegmente (bei denen das AGP-Bitfeldflag im Flags-Element angegeben ist) weist der Videospeicher-Manager so viel Öffnungsraum wie möglich zu, sodass dieser Member ignoriert wird.
[out] NbOfBanks
Die Anzahl der Banken im Segment, wenn Banking verwendet wird (d. a. wenn das UseBanking-Bitfeldflag im Flags-Element festgelegt ist).
[out] pBankRangeTable
Ein Array von Werten, das die Bereiche angibt, die jede Bank im Segment trennen. Der Treiber gibt dieses Array nur an, wenn er auch das UseBanking-Bitfeldflag im Flags-Element festlegt.
Das Array gibt die Endadressen der ersten Bank über die NbOfBanks-th-Bankan (d. a. die Endoffsets in das Segment für jede Bank). Beachten Sie Folgendes:
Banken sind zusammenhängend.
Die erste Bank beginnt bei Offset 0 des Segments.
Die letzte Bank endet am Ende des Segments, sodass der Treiber nicht dazu verpflichtet ist, die Endadresse der letzten Bank anzugeben.
[out] CommitLimit
Die maximale Anzahl von Bytes, die für das Segment gebunden werden können. Für ein Speichersegment ist das Commitlimit immer identisch mit der Größe des Segments, die im Size-Element angegeben wird. Bei einem Blendensegment kann der Treiber die Menge des Arbeitsspeichers begrenzen, der für das Segment auf Systemen mit geringen Mengen physischem Arbeitsspeicher zugewiesen werden kann.
[out] Flags
Eine DXGK_SEGMENTFLAGS-Struktur , die Eigenschaften in Bitfeldflags für das Segment identifiziert.
Beachten Sie, dass für ein Blendensegment vom Typ AGP der Treiber ausschließlich das AGP-Element der Struktur in der Union festlegen muss, die DXGK_SEGMENTFLAGS enthält. Obwohl das AGP-Typ-Blendensegment eine Blende ist und für die CPU zugänglich ist, kann der Adapter nicht initialisiert werden, wenn andere Member festgelegt sind.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Kopfzeile | d3dkmddi.h (einschließlich D3dkmddi.h) |