DXGK_FLIPCAPS Struktur (d3dkmddi.h)
Die DXGK_FLIPCAPS-Struktur identifiziert die Flippingfunktionen des Anzeigeminiporttreibers, den der Treiber über einen Aufruf seiner DxgkDdiQueryAdapterInfo-Funktion bereitstellt.
Syntax
typedef struct _DXGK_FLIPCAPS {
union {
struct {
UINT FlipOnVSyncWithNoWait : 1;
UINT FlipOnVSyncMmIo : 1;
UINT FlipInterval : 1;
UINT FlipImmediateMmIo : 1;
UINT FlipIndependent : 1;
UINT DdiPresentForIFlip : 1;
UINT FlipImmediateOnHSync : 1;
#if ...
UINT Reserved : 25;
#elif
UINT Reserved : 27;
#else
UINT Reserved : 28;
#endif
};
UINT Value;
};
} DXGK_FLIPCAPS;
Member
FlipOnVSyncWithNoWait
Ein UINT-Wert , der angibt, ob der Treiber die Planung eines Flip-Befehls unterstützt, der beim nächsten vertikalen Nachverfolgungszeitraum (vertikale Synchronisierung) wirksam wird, ohne dass die Grafikpipeline zum Stillstand kommt, bis diese vertikale Synchronisierung erfolgt. Das heißt, die Grafikpipeline muss sofort fortgesetzt werden, nachdem der Treiber die physische Adresse der umgeklappten Oberfläche in ausstehende Register an der Hardware geschrieben hat. Obwohl die meisten Hardware eine Tiefe von einem ausstehenden Flip-Pending-Register verwendet, sollte der Treiber die Nummer im MaxQueuedFlipOnVSync-Member der DXGK_DRIVERCAPS-Struktur angeben, wenn die Hardware mehr als ein ausstehendes Flip-Pending-Register verwendet.
Wenn FlipOnVSyncWithNoWait auf 1 (TRUE) festgelegt ist, unterstützt der Treiber diesen Mechanismus. Wenn FlipOnVSyncWithNoWait auf 0 (FALSE) festgelegt ist, unterstützt der Treiber diesen Mechanismus nicht. Das heißt, die Grafikpipeline muss warten, bis die nächste vertikale Synchronisierung nach der Planung eines Flip-Befehls erfolgt, damit die nächste vertikale Synchronisierung wirksam wird.
Das Festlegen dieses Elements entspricht dem Festlegen des ersten Bits des 32-Bit-Wertmembers (0x00000001).
FlipOnVSyncMmIo
Ein UINT-Wert , der angibt, ob der Treiber eine auf dem Arbeitsspeicher zugeordnete E/A(MMIO)-basiertes Flip unterstützt, die bei der nächsten vertikalen Synchronisierung wirksam wird. Um diese Art von Flip zu unterstützen, muss der Anzeigeminiporttreiber die folgenden Vorgänge unterstützen:
- Keine Generierung eines DMA-Puffers, der in einem Aufruf an die DxgkDdiPresent-Funktion übergeben werden soll (das heißt, NULL wird im pDmaBuffer-Element der DXGKARG_PRESENT-Struktur übergeben).
- Ein Durchblättern eines Aufrufs der DxgkDdiSetVidPnSourceAddress-Funktion auf der Geräteunterbrechungsanforderungsebene (Device Interrupt Request Level, DIRQL). Beim Aufruf von DxgkDdiSetVidPnSourceAddress sollte der Treiber den Digital-Analog-Konverter (DAC) programmieren und den Wert im PrimaryAddress-Member der DXGKARG_SETVIDPNSOURCEADDRESS Struktur verwenden, um den Scanvorgang zu starten. Nach der vertikalen Synchronisierung sollte der Treiber den GPU-Planer benachrichtigen, um die effektive Scanadresse zu melden, indem er die DxgkCbNotifyInterrupt-Funktion mit dem DXGK_INTERRUPT_CRTC_VSYNC Wert aufruft, der im InterruptType-Member der DXGKARGCB_NOTIFY_INTERRUPT_DATA-Struktur festgelegt ist. Der Treiber sollte dann die DxgkCbNotifyDpc-Funktion aufrufen, um den Größten Teil der Scan-Out-Verarbeitung auszuführen.
FlipInterval
Ein UINT-Wert , der angibt, ob der Treiber die Planung eines Flip-Befehls unterstützt, um nach zwei, drei oder vier vertikalen Synchronisierungen wirksam zu werden. Unabhängig davon, ob der Treiber ein Flipintervall von zwei oder mehr unterstützt, muss der Treiber ein sofortiges Umdrehen und ein Flipintervall von 1 unterstützen.
Das Festlegen dieses Members entspricht dem Festlegen des dritten Bits des 32-Bit-Wertmembers (0x00000004).
FlipImmediateMmIo
Ein UINT-Wert , der angibt, ob der Treiber eine auf Arbeitsspeicher zugeordnete E/A(MMIO)-basierte soforte Umkehr unterstützt. Diese Art von Flip wird sofort nach einem Aufruf der DxgkDdiSetVidPnSourceAddress-Funktion des Treibers wirksam, ohne auf die nächste vertikale Synchronisierung zu warten.
Das Festlegen dieses Elements entspricht dem Festlegen des vierten Bits des 32-Bit-Wertmembers (0x00000008).
Wird ab Windows 7 unterstützt.
FlipIndependent
Ein UINT-Wert , der angibt, ob der Treiber ein unabhängiges Flip unterstützt. WDDM 1.3 und höhere Treiber müssen diesen Member auf 1 festlegen.
Bei einem unabhängigen Flip versucht das Betriebssystem, einen DWM-Benutzermodus (Desktop Window Manager) zu umgehen, der aufruft und in den Zurückpuffer der Anwendung wechselt, indem dxgkDdiPresent und DxgkDdiSetVidPnSourceAddress in Direct Flip- und Mehrschichtpräsentationsmodellen aufgerufen wird.
Beachten Sie, dass es Fälle gibt, in denen ein DWM-Benutzermodus vorhandener Aufruf erfolgt, auch wenn FlipIndependent festgelegt ist. Ihr Treiber muss diese Fälle weiterhin verarbeiten.
Das Festlegen dieses Members entspricht dem Festlegen des fünften Bits des 32-Bit-Wertmembers (0x00000010).
Wird ab Windows 8.1 unterstützt.
DdiPresentForIFlip
FlipImmediateOnHSync
Reserved
Dieser Member ist reserviert und sollte auf null festgelegt werden. Das Festlegen dieses Elements auf 0 entspricht dem Festlegen der verbleibenden 27 Bits (0xFFFFFFE0) des 32-Bit-Wertelements auf Nullen.
Dieser Member ist reserviert und sollte auf null festgelegt werden. Das Festlegen dieses Elements auf 0 entspricht dem Festlegen der verbleibenden 28 Bits (0xFFFFFFF0) des 32-Bit-Wert-Members auf Nullen.
Value
Ein Element in der Union, das DXGK_FLIPCAPS enthält, das einen 32-Bit-Wert enthalten kann, der Flippingfunktionen identifiziert.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Kopfzeile | d3dkmddi.h (einschließlich D3dkmddi.h) |