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)

Weitere Informationen

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_QUERYSEGMENTOUT

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo

pfnLockCb