DXGK_FLIPCAPS structure (d3dkmddi.h)

La structure DXGK_FLIPCAPS identifie les fonctionnalités de retournement du pilote de miniport d’affichage que le pilote fournit par le biais d’un appel à sa fonction DxgkDdiQueryAdapterInfo .

Syntaxe

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;

Membres

FlipOnVSyncWithNoWait

Valeur UINT qui spécifie si le pilote prend en charge la planification d’une commande de retournement qui prendra effet sur la prochaine période de retracement vertical (synchronisation verticale) sans que le pipeline graphique ne se bloque jusqu’à ce que cette synchronisation verticale se produise. Autrement dit, le pipeline graphique doit se poursuivre immédiatement après que le pilote a écrit l’adresse physique de la surface de retournement dans des registres en attente de retournement au niveau du matériel. Bien que la plupart du matériel utilise une profondeur d’un registre en attente inversée, si le matériel utilise plusieurs registres en attente inversée, le pilote doit spécifier le numéro dans le membre MaxQueuedFlipOnVSync de la structure DXGK_DRIVERCAPS .

Si FlipOnVSyncWithNoWait a la valeur 1 (TRUE), le pilote prend en charge ce mécanisme. Si FlipOnVSyncWithNoWait a la valeur 0 (FALSE), le pilote ne prend pas en charge ce mécanisme. Autrement dit, le pipeline graphique doit attendre que la synchronisation verticale suivante se produise après la planification d’une commande de retournement pour prendre effet sur la synchronisation verticale suivante.

Définir ce membre revient à définir le premier bit du membre Value 32 bits (0x00000001).

FlipOnVSyncMmIo

Valeur UINT qui spécifie si le pilote prend en charge un retournement d’E/S mappé en mémoire (MMIO) qui prend effet sur la synchronisation verticale suivante. Pour prendre en charge ce type de retournement, le pilote miniport d’affichage doit prendre en charge les opérations suivantes :

  • Aucune génération de mémoire tampon DMA à passer un appel à sa fonction DxgkDdiPresent (c’est-à-dire que NULL est passé dans le membre pDmaBuffer de la structure DXGKARG_PRESENT ).
  • Un appel à sa fonction DxgkDdiSetVidPnSourceAddress au niveau de la demande d’interruption de l’appareil (DIRQL). Dans l’appel à DxgkDdiSetVidPnSourceAddress, le pilote doit programmer le convertisseur numérique-analogique (DAC) et utiliser la valeur dans le membre PrimaryAddress de la structure DXGKARG_SETVIDPNSOURCEADDRESS pour démarrer l’analyse. Après la synchronisation verticale, le pilote doit avertir le planificateur GPU de signaler l’adresse d’analyse effective en appelant la fonction DxgkCbNotifyInterrupt avec la valeur DXGK_INTERRUPT_CRTC_VSYNC définie dans le membre InterruptType de la structure DXGKARGCB_NOTIFY_INTERRUPT_DATA . Le pilote doit ensuite appeler la fonction DxgkCbNotifyDpc pour effectuer la majeure partie du traitement de l’analyse.

FlipInterval

Valeur UINT qui spécifie si le pilote prend en charge la planification d’une commande flip pour prendre effet après deux, trois ou quatre synchronisations verticales. Que le pilote prenne en charge un intervalle de retournement de deux ou plus, le pilote doit prendre en charge un retournement immédiat et un intervalle de retournement d’un.

Définir ce membre revient à définir le troisième bit du membre value 32 bits (0x00000004).

FlipImmediateMmIo

Valeur UINT qui spécifie si le pilote prend en charge un basculement immédiat d’E/S mappée en mémoire (MMIO). Ce type de retournement prend effet immédiatement après un appel à la fonction DxgkDdiSetVidPnSourceAddress du pilote sans attendre la prochaine synchronisation verticale.

Définir ce membre revient à définir le quatrième bit du membre Value 32 bits (0x00000008).

Pris en charge à partir de Windows 7.

FlipIndependent

Valeur UINT qui spécifie si le pilote prend en charge un basculement indépendant. Les pilotes WDDM 1.3 et ultérieur doivent définir ce membre sur 1.

Dans un retournement indépendant, le système d’exploitation tente de contourner un appel présent en mode utilisateur desktop Window Manager (DWM) et retourne vers la mémoire tampon d’arrière-plan de l’application en appelant DxgkDdiPresent et DxgkDdiSetVidPnSourceAddress dans les modèles de présentation direct Flip et multiplane de superposition.

Notez qu’il existe des cas où un appel présent en mode utilisateur DWM est effectué même lorsque FlipIndependent est défini. Votre pilote doit toujours gérer ces cas.

Définir ce membre revient à définir le cinquième bit du membre Value 32 bits (0x00000010).

Pris en charge à partir de Windows 8.1.

DdiPresentForIFlip

FlipImmediateOnHSync

Reserved

Ce membre est réservé et doit être défini sur zéro. Définir ce membre sur zéro revient à définir les 27 bits restants (0xFFFFFFE0) du membre Value 32 bits sur zéros.

Ce membre est réservé et doit être défini sur zéro. Définir ce membre sur zéro équivaut à définir les 28 bits restants (0xFFFFFFF0) du membre Value 32 bits sur zéros.

Value

Membre de l’union que contient DXGK_FLIPCAPS qui peut contenir une valeur 32 bits qui identifie les fonctionnalités de basculement.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
En-tête d3dkmddi.h (include D3dkmddi.h)

Voir aussi

DXGKARGCB_NOTIFY_INTERRUPT_DATA

DXGKARG_PRESENT

DXGKARG_QUERYADAPTERINFO

DXGKARG_SETVIDPNSOURCEADDRESS

DXGK_DRIVERCAPS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiPresent

DxgkDdiQueryAdapterInfo

DxgkDdiSetVidPnSourceAddress