DXGK_SEGMENTFLAGS-Struktur (d3dkmddi.h)

Die DXGK_SEGMENTFLAGS-Struktur identifiziert Eigenschaften für ein Segment, das der Treiber über einen Aufruf seiner DxgkDdiQueryAdapterInfo-Funktion bereitstellt.

Syntax

typedef struct _DXGK_SEGMENTFLAGS {
  union {
    struct {
      UINT Aperture : 1;
      UINT Agp : 1;
      UINT CpuVisible : 1;
      UINT UseBanking : 1;
      UINT CacheCoherent : 1;
      UINT PitchAlignment : 1;
      UINT PopulatedFromSystemMemory : 1;
      UINT PreservedDuringStandby : 1;
      UINT PreservedDuringHibernate : 1;
      UINT PartiallyPreservedDuringHibernate : 1;
      UINT DirectFlip : 1;
      UINT Use64KBPages : 1;
      UINT ReservedSysMem : 1;
      UINT SupportsCpuHostAperture : 1;
      UINT SupportsCachedCpuHostAperture : 1;
      UINT ApplicationTarget : 1;
      UINT VprSupported : 1;
      UINT VprPreservedDuringStandby : 1;
      UINT EncryptedPagingSupported : 1;
      UINT LocalBudgetGroup : 1;
      UINT NonLocalBudgetGroup : 1;
      UINT PopulatedByReservedDDRByFirmware : 1;
#if ...
      UINT Reserved : 10;
#elif
      UINT Reserved : 11;
#elif
      UINT Reserved : 21;
#else
      UINT Reserved : 22;
#endif
    };
    UINT Value;
  };
} DXGK_SEGMENTFLAGS;

Member

Aperture

[out] Ein UINT-Wert, der angibt, ob das Segment ein Blendensegment anstelle eines Speichersegments ist. Ein Blendensegment verfügt nicht über physische Seiten, die Inhalte für eine Zuordnung enthalten können. Wenn der Videospeicher-Manager eine Zuordnung in ein Speichersegment ausgibt, überträgt der Speicher-Manager den Inhalt der Zuordnung vom Speicher für die Systemspeichersicherung an den Segmentspeicherort. Wenn der Videospeicher-Manager eine Zuordnung in ein Blendensegment ausgibt, ordnet der Speicher-Manager dem Segment die physischen Seiten des Speichers für die Zuordnung zu.

Wenn der Treiber dieses Element angibt, muss er auch die Vorgangstypen map-aperture-segment und unmap-aperture-segment für seine DxgkDdiBuildPagingBuffer-Funktion implementieren.

Das Festlegen dieses Elements entspricht dem Festlegen des ersten Bits des 32-Bit-Elements Wert (0x00000001).

Agp

[out] Ein UINT-Wert, der angibt, ob das Segment ein AGP**-Typ-Blendensegment ist, das einen Teil der AGP-Blende verwendet, den der Chipsatz verfügbar macht. Der Videospeicher-Manager ordnet die Seite der zugrunde liegenden Blende zu und kommuniziert mit dem GART-Treiber (Graphic Address Remapping Table), um den Speicher für die Blende zuzuordnen und die Zuordnung aufzuheben. Da nur ein AGP-Segment vorhanden ist, sollte der Treiber das Agp-Bitfeldflag nicht mit anderen DXGK_SEGMENTFLAGS Bitfeldflags angeben.

Das Festlegen dieses Elements entspricht dem Festlegen des zweiten Bits des 32-Bit-Wertmembers (0x00000002).

CpuVisible

[out] Ein UINT-Wert, der angibt, ob die CPU auf das Arbeitsspeichersegment unter der Adresse zugreifen kann, die vom CpuTranslatedAddress-Member der DXGK_SEGMENTDESCRIPTOR Struktur angegeben wird, die das Speichersegment beschreibt.

Dieser Member hat keine Bedeutung für ein Blendensegment, einschließlich des AGP-Typ-Blendensegments. Die einzige Ausnahme tritt auf, wenn der Anzeigetreiber im Benutzermodus 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).

Weitere Informationen finden Sie unter Hinweise.

Das Festlegen dieses Elements entspricht dem Festlegen des dritten Bits des 32-Bit-Elements Wert (0x00000004).

UseBanking

[out] Ein UINT-Wert, der angibt, ob das Segment in Banken unterteilt ist, die der Treiber verwendet, um dem Videospeicher-Manager Hinweise zur Platzierung von Zuordnungen innerhalb des Segments zu geben. Der Treiber sollte auch gültige Bankinformationen in den NbOfBanks - und pBankRangeTable-Membern der DXGK_SEGMENTDESCRIPTOR Struktur angeben, die das Segment beschreibt.

Das Festlegen dieses Elements entspricht dem Festlegen des vierten Bits des 32-Bit-Wertmembers (0x00000008).

CacheCoherent

[out] Ein UINT-Wert, der angibt, ob das Blendensegment die Cachekohärenz mit zwischenspeicherbaren Seiten beibehalten kann, die der Blende zugeordnet sind. Dieser Member kann nur durch Festlegen des Aperture-Elements festgelegt werden (d. h. CacheCoherent hat keine Bedeutung für ein Speichersegment).

Das Festlegen dieses Elements entspricht dem Festlegen des fünften Bits des 32-Bit-Elements Wert (0x00000010).

PitchAlignment

[out] Ein UINT-Wert, der angibt, ob eine Zuordnung, die dem Segment zugeordnet ist, ausgerichtet sein muss. Für diesen Segmenttyp verwendet der Videospeicher-Manager das Element Größe der DXGK_ALLOCATIONINFO-Struktur für die Zuordnung, um einen Sicherungsspeicher für die Zuordnung zuzuweisen. Der Videospeicher-Manager verwendet jedoch den PitchAlignedSize-Member von DXGK_ALLOCATIONINFO, um Ressourcen für das Segment zuzuweisen. Eine Zuordnung, die für diesen Segmenttyp vorgesehen ist, weist in der Regel eine andere Größe für den Sicherungsspeicher und das Segment auf. Wenn die Größe des Sicherungsspeichers nicht mit der Segmentgröße übereinstimmt, muss der Treiber bestimmen, wie die Daten in der Zuordnung korrekt verschoben werden. Diese Art von Segment kann nicht für die Entfernung verwendet werden.

Das Festlegen dieses Elements entspricht dem Festlegen des sechsten Bits des 32-Bit-Wertelements (0x00000020).

PopulatedFromSystemMemory

[out] Ein UINT-Wert, der angibt, ob das Speichersegment tatsächlich aus dem Systemspeicher aufgefüllt wird, den der Treiber während der Initialisierung zugewiesen hat. Wenn das Speichersegment aus dem Systemspeicher aufgefüllt wird, den das BIOS reserviert hat und für das Betriebssystem nicht zugänglich ist (d. h., das Betriebssystem zählt diesen Systemspeicher nicht, wenn das Betriebssystem die Gesamtmenge des Systemspeichers meldet), sollte der Treiber dieses Flag nicht festlegen. Dieses Flag ist ungültig und wird in Blendensegmenten ignoriert.

Das Festlegen dieses Elements entspricht dem Festlegen des siebten Bits des 32-Bit-Elements Wert (0x00000040).

PreservedDuringStandby

[out] Ein UINT-Wert, der angibt, ob das Segment bei einem Übergang zu einem Standbysystemstromzustand beibehalten wird.

Weitere Informationen zu Power Transition-Optionen finden Sie unter Hinweise.

Das Festlegen dieses Elements entspricht dem Festlegen des achten Bits des 32-Bit-Elements Wert (0x00000080).

Unterstützt ab Windows 8.

PreservedDuringHibernate

[out] Ein UINT-Wert, der angibt, ob das Segment in einem Übergang zu einem Ruhezustand des Systems beibehalten wird. Legen Sie dieses Flag nur fest, wenn das PreservedDuringStandby-Element ebenfalls festgelegt ist. Weitere Informationen zu Power Transition-Optionen finden Sie unter Hinweise.

Das Festlegen dieses Elements entspricht dem Festlegen des neunten Bits des 32-Bit-Elements Wert (0x00000100).

Unterstützt ab Windows 8.

PartiallyPreservedDuringHibernate

[out] Ein UINT-Wert, der angibt, ob das Segment teilweise in einem Übergang zu einem Ruhezustand des Systems beibehalten wird. Legen Sie dieses Flag nur fest, wenn das PreservedDuringStandby-Element ebenfalls festgelegt ist. Weitere Informationen zu Power Transition-Optionen finden Sie unter Hinweise.

Das Festlegen dieses Elements entspricht dem Festlegen des zehnten Bits des 32-Bit-Elements Wert (0x00000200).

Unterstützt ab Windows 8.

DirectFlip

[out] Ein UINT-Wert, der angibt, ob ein Segment Direct Flip-Zuordnungen unterstützt. In diesem Fall muss der Treiber sicherstellen, dass Direct Flip-Zuordnungen aus diesem Segment angeheftet und gescannt werden können.

Das Festlegen dieses Elements entspricht dem Festlegen des elften Bits des 32-Bit-Elements Wert (0x00000400).

Unterstützt ab Windows 8.

Use64KBPages

[out] Wenn festgelegt, unterstützt das GPU-Speichersegment Seiten mit 64 KB. Andernfalls werden Seiten mit 4 KB unterstützt. Wenn der Treiber die Obergrenze festlegt und eine Zuordnung in das Segment eingelagert werden kann, muss die Zuordnungsausrichtung, die vom Kernelmodustreiber von DXGK_ALLOCATIONINFO zurückgegeben wird, mehrere von 64 KB betragen.

Unterstützt ab Windows 10.

ReservedSysMem

[out] Reserviert für die Systemverwendung und sollte nicht vom Kernelmodustreiber festgelegt werden.

Unterstützt ab Windows 10.

SupportsCpuHostAperture

[out] Wenn festgelegt, kann das Segment über die CPU-Hostpertur zugeordnet werden. Dieses Flag kann nicht in Kombination mit dem Flag "CpuVisible " verwendet werden.

Unterstützt ab Windows 10.

SupportsCachedCpuHostAperture

[out] Wenn festgelegt, gibt dies an, dass die Hardware eine kohärente CPU-Hostpertur des CPU-Caches unterstützt. Darüber hinaus muss das Flag SupportsCpuHostAperture festgelegt werden. Das Flag wird in der Regel von den Software-GPU-Emulationstreibern festgelegt.

Unterstützt ab Windows 10.

ApplicationTarget

[out] Wenn festgelegt, gibt es an, dass dieses Segment von Anwendungsbudgets bestimmt werden soll.

Unterstützt ab Windows 10.

VprSupported

[out] Gibt bei Festlegung an, dass video protected Region (VPR) unterstützt wird.

VprPreservedDuringStandby

[out] Gibt bei Festlegung an, dass der Inhalt von VPRs während des Standbymodus beibehalten wird.

EncryptedPagingSupported

[out] Gibt bei Festlegung an, dass hardwaregeschützte Zuordnungen während des Pagings verschlüsselt werden.

LocalBudgetGroup

[out] Gibt bei Festlegung an, dass dieses Segment mit der Budgetgruppe des lokalen Speichersegments gerechnet wird.

NonLocalBudgetGroup

[out] Gibt bei Festlegung an, dass dieses Segment für die Budgetgruppe des nicht lokalen Speichersegments zählt.

PopulatedByReservedDDRByFirmware

[out] Wenn festgelegt, gibt an, dass dieses Segment aus reserviertem DDR-Systemspeicher nach Firmware aufgefüllt wird. Verfügbar ab Windows Server 2022 (WDDM 2.9).

Reserved

[out] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden.

Value

[out] Ein Element in der Union, das DXGK_SEGMENTFLAGS enthält, das einen 32-Bit-Wert enthalten kann, der Eigenschaften des Segments identifiziert.

Hinweise

Der Treiber kann Eigenschaften des Segments angeben, indem Bits im 32-Bit-Element Wert festgelegt werden oder indem einzelne Member der Struktur in der Union festgelegt werden, die DXGK_SEGMENTFLAGS enthält.

Beachten Sie, dass der Treiber für ein AGP-Blendensegment ausschließlich den Agp-Member 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 sichtbar ist, kann der Adapter nicht initialisiert werden, wenn andere Member festgelegt sind.

In dem speziellen Fall, in dem die Zuordnung ein Blendensegment für eine gemeinsam genutzte primäre Zuordnung (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationType ist D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) und DXGK_ALLOCATIONINFOFLAGS. UseAlternateVA ist nicht festgelegt, der Treiber sollte eine abschnittsgestützte primäre Zuordnung (DXGK_VIDMMCAPS.SectionBackedPrimary ist festgelegt, wenn die DxgkDdiQueryAdapterInfo-Funktion des Treibers aufgerufen wird. Mit einem abschnittsgestützten primären Element können Sie die Einschränkungen von CpuVisible für das Blendensegment vermeiden.

Sie können die Einschränkungen von CpuVisible für ein Blendensegment vermeiden, indem Sie eine freigegebene, abschnittsgestützte primäre Zuordnung verwenden. Verwenden Sie in diesem Fall ein Blendensegment für eine freigegebene primäre Zuordnung (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationType ist D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE), DXGK_ALLOCATIONINFOFLAGS nicht festlegen.Verwenden SieAlternateVA, und verwenden Sie eine abschnittsgestützte primäre Zuordnung ( festgelegt DXGK_VIDMMCAPS.SectionBackedPrimary), wenn die DxgkDdiQueryAdapterInfo-Funktion des Treibers aufgerufen wird.

Optimierte Standbyeinstellungen

Die Kombination von Werten für die Member PreservedDuringStandby, PreservedDuringHibernate und PartiallyPreservedDuringHibernate bestimmt, ob ein Segment von seinem Inhalt gelöscht wird, wenn das System wie folgt in einen Systemzustand mit niedrigem Stromverbrauchndern Systemen (Standby) wechselt.

Während des Standbymodus beibehalten Während des Ruhezustands beibehalten Teilweise während des Ruhezustands erhalten Standbyzustand Ruhezustand
1 1 1 ungültig ungültig
1 1 0 nicht gelöscht nicht gelöscht
1 0 1 nicht gelöscht Teilweise gelöscht
1 0 0 nicht gelöscht Gelöscht
0 1 1 ungültig ungültig
0 1 0 ungültig ungültig
0 0 1 ungültig ungültig
0 0 0 Gelöscht Gelöscht

Das Betriebssystem erkennt keine Kombinationen in dieser Tabelle, die als "ungültig" gekennzeichnet sind.

Wenn der hybride Standbymodus aktiviert ist, verhält sich das System so, als befinde es sich im Ruhezustand: Segmente, die während des Ruhezustands nicht erhalten bleiben, werden gelöscht, auch wenn es in einen Energiesparzustand wechselt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows Vista.
Kopfzeile d3dkmddi.h (einschließlich D3dkmddi.h)

Weitere Informationen

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTDESCRIPTOR3

DxgkDdiBuildPagingBuffer

DxgkDdiQueryAdapterInfo