Partager via


structure DXGK_VIDSCHCAPS (d3dkmddi.h)

La structure DXGK_VIDSCHCAPS a des indicateurs de champ de bits qui identifient les fonctionnalités de planification du GPU qu’un pilote miniport d’affichage en mode noyau (KMD) peut prendre en charge.

Syntaxe

typedef struct _DXGK_VIDSCHCAPS {
  union {
    struct {
      UINT MultiEngineAware : 1;
      UINT VSyncPowerSaveAware : 1;
      UINT PreemptionAware : 1;
      UINT NoDmaPatching : 1;
      UINT CancelCommandAware : 1;
      UINT No64BitAtomics : 1;
      UINT LowIrqlPreemptCommand : 1;
      UINT HwQueuePacketCap : 4;
      UINT NativeGpuFence : 1;
      UINT OptimizedNativeFenceSignaledInterrupt : 1;
#if ...
      UINT Reserved : 19;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 25;
#elif
      UINT Reserved : 27;
#else
      UINT Reserved : 30;
#endif
    };
    UINT Value;
  };
} DXGK_VIDSCHCAPS;

Membres

MultiEngineAware

Valeur UINT qui spécifie si le pilote prend en charge la création et la destruction d’un contexte d’appareil (via les fonctions DxgkDdiCreateContext et DxgkDdiDestroyContext ) et l’utilisation d’un contexte d’appareil (via les fonctions DxgkDdiPresent et DxgkDdiRender ). Si le pilote ne prend pas en charge la création de contexte, pour chaque appel au pilote qui passerait un handle à un contexte, le sous-système du noyau graphique Microsoft DirectX remplace le handle dans le contexte par un handle à l’appareil.

VSyncPowerSaveAware

Valeur UINT qui spécifie si le pilote prend en charge la fonctionnalité d’économie d’énergie de synchronisation verticale.

Si VSyncPowerSaveAware a la valeur 1 (TRUE), le système d’exploitation peut économiser de l’énergie en désactivant et en activant l’interruption de synchronisation verticale qui se produit à partir de l’utilisation de certaines applications. Si VSyncPowerSaveAware est défini sur zéro (FALSE), le système d’exploitation ne désactive jamais l’interruption de synchronisation verticale pour les applications qui peuvent provoquer l’interruption de synchronisation verticale. Pris en charge à partir de Windows Server 2008 et Windows Vista avec SP1.

PreemptionAware

Valeur UINT qui spécifie si le pilote prend en charge la stratégie de préemption GPU de Windows 8 et versions ultérieures de Windows. Avec cette stratégie, le système d’exploitation émet toujours des demandes de préemption au GPU avant d’initier le processus **Timeout Detection and Recovery (TDR). Pris en charge à partir de Windows 8.

Si PreemptionAware a la valeur 1 (TRUE), le pilote prend en charge la stratégie de préemption de Windows 8 et versions ultérieures de Windows. Notez que si PreemptionAware a la valeur 1, le membre MultiEngineAware doit également avoir la valeur 1. Si PreemptionAware a la valeur 1, mais que MultiEngineAware a la valeur zéro, le système d’exploitation arrête le processus d’initialisation du pilote et retourne un code d’échec.

Si PreemptionAware est défini sur zéro (FALSE), le pilote prend en charge la stratégie de préemption de Windows 7. Avec cette stratégie, le système d’exploitation peut ne pas émettre de demandes de préemption alors que des opérations potentiellement longues sont exécutées sur le GPU. Par conséquent, ces requêtes GPU ne sont pas préemptées avant le lancement du processus TDR. Cela peut entraîner la réinitialisation répétée du processus TDR, ce qui peut entraîner une erreur d’arrêt du système.

NoDmaPatching

Valeur UINT qui spécifie si le pilote désactive la détection des fuites pour les mémoires tampons DMA qui sont divisées en plusieurs parties. Cette détection est effectuée une fois que la fonction DxgkDdiPatch du pilote est appelée pour affecter ou corriger des adresses physiques à chaque partie de la mémoire tampon DMA. Pris en charge à partir de Windows 8.

Les appareils d’affichage qui prennent en charge les adresses virtuelles peuvent reprogrammer une adresse virtuelle vers un nouvel emplacement de mémoire vidéo sans avoir à corriger la valeur de l’adresse de mémoire tampon DMA. Pour ces types de périphériques d’affichage, le pilote doit définir NoDmaPatching sur 1.

Si NoDmaPatching a la valeur 1 (TRUE), le pilote désactive la détection des fuites et le comportement du fractionnement de la mémoire tampon DMA est le même que dans Windows 7. Notez que lorsque NoDmaPatching a la valeur 1, les membres PreemptionAware et MultiEngineAware doivent également avoir la valeur 1. Si NoDmaPatching a la valeur 1, mais que PreemptionAware ou MultiEngineAware sont définis sur zéro, le système d’exploitation arrête le processus d’initialisation du pilote et retourne un code d’échec.

Si NoDmaPatching a la valeur 0 (FALSE), le pilote active la détection des fuites pour les adresses de mémoire tampon DMA corrigées. Le système d’exploitation effectue la détection des fuites avant d’appeler la fonction DxgkDdiPatch du pilote.

CancelCommandAware

Valeur UINT qui spécifie si le pilote prend en charge le nettoyage des ressources internes (via la fonction DxgkDdiCancelCommand ) après la suppression d’une commande de la file d’attente matérielle. Pris en charge à partir de Windows 8.

Si CancelCommandAware a la valeur 1 (TRUE), le pilote prend en charge le nettoyage des ressources associées à un paquet DMA annulé. Notez que lorsque CancelCommandAware a la valeur 1, le membre MultiEngineAware doit également avoir la valeur 1. Si CancelCommandAware a la valeur 1, mais que MultiEngineAware a la valeur zéro, le système d’exploitation retourne un code d’échec.

Si CancelCommandAware est défini sur zéro (FALSE), le pilote ne prend pas en charge le nettoyage des ressources.

No64BitAtomics

Si No64BitAtomics a la valeur 1 (TRUE), le pilote indique que le GPU est capable de mettre à jour uniquement les valeurs 32 bits de manière atomique. Dans ce cas, le système d’exploitation gère automatiquement le cas wraparound de clôture, mais il impose une restriction selon laquelle les valeurs d’attente et de clôture de signal en attente ne peuvent pas être supérieures à UINT_MAX/2 en dehors de la dernière valeur de clôture signalée. Pris en charge à partir de Windows 10.

Si No64BitAtomics est défini sur zéro (FALSE), le pilote indique que le GPU est capable de mettre à jour les valeurs 64 bits de manière atomique, comme visible par le processeur.

LowIrqlPreemptCommand

HwQueuePacketCap

Nombre maximal de paquets DMA autorisés à être mis en file d’attente vers un nœud.

NativeGpuFence

Si le système d’exploitation a activé la fonctionnalité de DXGK_FEATURE_NATIVE_FENCE , le pilote peut déclarer la prise en charge de la fonctionnalité de clôture GPU native lors de l’initialisation de l’adaptateur en définissant le bit NativeGpuFence sur 1. Cette fonctionnalité est exposée au mode utilisateur via un bit D3DKMT_WDDM_3_1_CAPS ::NativeGpuFenceSupported correspondant. Pour plus d’informations, consultez Objets de clôture GPU natifs. Disponible à partir de Windows 11, version 22H2 (WDDM 3.1).

OptimizedNativeFenceSignaledInterrupt

Le pilote définit cette valeur TRUE si, lors d’une interruption signalée, le GPU peut spécifier dans DXGKARGCB_NOTIFY_INTERRUPT_DATA ::NativeFenceSignaled uniquement le handle KMD du HWQueue en cours d’exécution. Pour plus d’informations, consultez Objets de clôture GPU natifs. Disponible à partir de Windows 11, version 22H2 (WDDM 3.1).

Reserved

Ce membre est réservé et doit être défini sur zéro.

Value

Une autre façon d’accéder aux indicateurs de champ de bits dans l’union.

Configuration requise

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

Voir aussi

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDestroyContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender