DXGK_SEGMENTDESCRIPTOR3 Struktur (d3dkmddi.h)

Die DXGK_SEGMENTDESCRIPTOR3-Struktur enthält Informationen zu einem vom Treiber unterstützten Segment, das sowohl aus BIOS-reserviertem Speicher (der während eines Übergangs zu einem Energiesparzustand gelöscht wird) als auch aus dem vom Treiber reservierten Speicher besteht.

Syntax

typedef struct _DXGK_SEGMENTDESCRIPTOR3 {
  [out] DXGK_SEGMENTFLAGS Flags;
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
        SIZE_T            SystemMemoryEndAddress;
        SIZE_T            Reserved;
} DXGK_SEGMENTDESCRIPTOR3;

Member

[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.

[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 Position 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.

SystemMemoryEndAddress

Bei Segmenten, die teilweise aus Systemspeicher bestehen, werden alle Zuordnungen, die nach dieser Adresse beginnen, in einem Übergang in den Ruhezustand gelöscht. Zuordnungen, die vollständig im Systemspeicher vorhanden sind, wobei die Segmentadresse kleiner oder gleich SystemMemoryEndAddress ist, werden bei diesem Übergang nicht entfernt.

Der Anzeigeminiporttreiber sollte diesen Member auf einen Wert ohne NULL festlegen, wenn das Segment in einem Übergang in einen Ruhezustand teilweise beibehalten wird. In diesem Fall sollte das Element PartiallyPreservedDuringHibernate in der DXGK_SEGMENTFLAGS-Struktur festgelegt werden.

Der vom Treiber reservierte Arbeitsspeicher wird von der Segmentadresse 0 bis einschließlich SystemMemoryEndAddress ausgeführt. Bios-reservierter Arbeitsspeicher wird von (SystemMemoryEndAddress+1) bis zum Ende des Segments ausgeführt.

Reserved

Dieser Member ist reserviert und sollte auf null festgelegt werden.

Hinweise

Diese Struktur wird von einem WDDM 1.2- oder höher-Kernelmodus-Anzeige-Miniporttreiber verwendet, um Informationen zu Speichersegmenten als Reaktion auf einen DxgkDdiQueryAdapterInfo-Funktionsaufruf zurückzugeben, in dem das Grafiksubsystem den DXGKQAITYPE_QUERYSEGMENT3 Wert im Type-Member der DXGKARG_QUERYADAPTERINFO-Struktur angibt.

Auf diese Struktur verweist das pSegmentDescriptor-Element der DXGK_QUERYSEGMENTOUT3-Struktur .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Unterstützte Mindestversion (Server) Windows Server 2012
Kopfzeile d3dkmddi.h

Weitere Informationen

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_QUERYSEGMENTOUT3

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo