Partager via


DXGK_VIDMMCAPS structure (d3dkmddi.h)

La structure DXGK_VIDMMCAPS identifie les fonctionnalités de gestion de la mémoire vidéo prises en charge par un pilote de miniport d’affichage.

Syntaxe

typedef struct _DXGK_VIDMMCAPS {
  union {
    struct {
      UINT OutOfOrderLock : 1;
      UINT DedicatedPagingEngine : 1;
      UINT PagingEngineCanSwizzle : 1;
      UINT SectionBackedPrimary : 1;
      UINT CrossAdapterResource : 1;
      UINT VirtualAddressingSupported : 1;
      UINT GpuMmuSupported : 1;
      UINT IoMmuSupported : 1;
      UINT ReplicateGdiContent : 1;
      UINT NonCpuVisiblePrimary : 1;
      UINT ParavirtualizationSupported : 1;
      UINT IoMmuSecureModeSupported : 1;
      UINT DisableSelfRefreshVRAMInS3 : 1;
      UINT IoMmuSecureModeRequired : 1;
      UINT MapAperture2Supported : 1;
      UINT CrossAdapterResourceTexture : 1;
      UINT CrossAdapterResourceScanout : 1;
      UINT AlwaysPoweredVRAM : 1;
#if ...
      UINT Reserved : 14;
#elif
      UINT Reserved : 15;
#elif
      UINT Reserved : 18;
#elif
      UINT Reserved : 19;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 22;
#elif
      UINT Reserved : 27;
#elif
      UINT Reserved : 28;
#else
      UINT Reserved : 31;
#endif
    };
    UINT Value;
  };
  UINT  PagingNode;
} DXGK_VIDMMCAPS;

Membres

OutOfOrderLock

Spécifie si le pilote peut verrouiller des instances d’allocation autres que la dernière instance. Le pilote définit généralement cette valeur pour le thread DDI et l’équilibrage de charge si un thread DDI doit verrouiller une mémoire tampon de vertex précédemment verrouillée et ignorée par un thread d’application. Définir ce membre revient à définir le premier bit du membre Value 32 bits (0x00000001).

DedicatedPagingEngine

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

PagingEngineCanSwizzle

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

SectionBackedPrimary

Spécifie si le pilote prend en charge les allocations primaires soutenues par section. Pris en charge à partir de Windows 8.

CrossAdapterResource

Spécifie si le pilote fournit la prise en charge de niveau 1 de la copie vers et depuis des ressources inter-adaptateurs dans un système< hybride. Pris en charge à partir de Windows 8.1.

À compter de WDDM 2.4, DXGI active les optimisations de présentation hybride actuelles pour le scénario plus large où le rendu est sur un GPU et la présentation sur le moniteur d’un autre GPU. Cela n’est possible que si les deux GPU prennent en charge les ressources inter-adaptateurs.

Les propriétés de ressource inter-adaptateurs sont répertoriées ci-dessous.

  • La ressource peut être paginée uniquement sur le segment de mémoire GPU d’ouverture
  • La ressource est allouée en tant que partagée.
  • La ressource doit être marquée Comme processeur visible.
  • L’allocation sera créée par le système d’exploitation en tant qu’écriture combinée.
  • La ressource n’a qu’une seule allocation et a le format linéaire.
  • La ressource a un alignement de tangage standard (128 octets). La définition D3DKMT_CROSS_ADAPTER_RESOURCE_PITCH_ALIGNMENT est ajoutée pour l’alignement de la hauteur. La ressource doit être créée au plus petit multiple de cet alignement qui contiendra le contenu de la ressource.
  • La ressource a un alignement de hauteur standard (4 lignes). Le D3DKMT_CROSS_ADAPTER_RESOURCE_HEIGHT_ALIGNMENT est ajouté. La ressource doit être créée au plus petit multiple de cet alignement qui contiendra le contenu de la ressource.
#define D3DKMT_CROSS_ADAPTER_RESOURCE_PITCH_ALIGNMENT 128

#define D3DKMT_CROSS_ADAPTER_RESOURCE_HEIGHT_ALIGNMENT 4
  • L’adresse de début de la mémoire de ressource est alignée sur la limite d’une page.
  • La ressource peut être créée en tant qu’allocation standard à partir du mode noyau et ouverte ultérieurement par l’UMD.
  • La ressource peut être créée par l’UMD.

L’allocation d’adaptateurs croisés peut être utilisée comme principal, mais le pilote n’obtient pas d’informations, qui sont généralement fournies lors de la création du principal

VirtualAddressingSupported

Spécifie si le pilote prend en charge l’adressage de mémoire virtuelle. Pour exprimer la prise en charge de l’adressage de mémoire virtuelle GPU, le pilote doit définir la limite VirtualAddressingSupported et les limites GpuMmuSupported ou IoMmuSupported . GpuMmuSupported et IoMmuSupported ne peuvent pas être définis en même temps. Pris en charge à partir de Windows 10.

GpuMmuSupported

Spécifie si l’adaptateur prend en charge le modèle GpuMmu . Un adaptateur ne peut pas prendre en charge les modèles GpuMmu et IoMmu sur différents moteurs en même temps. Pour plus d’informations, consultez Modèle GpuMmu . Pris en charge à partir de Windows 10.

IoMmuSupported

Spécifie si l’adaptateur prend en charge le modèle IoMmu . Un adaptateur ne peut pas prendre en charge les modèles GpuMmu et IoMmu sur différents moteurs en même temps. Pour plus d’informations, consultez Modèle IoMmu . Pris en charge à partir de Windows 10 (WDDM 2.0).

ReplicateGdiContent

Spécifie si l’adaptateur prend en charge la réplication du contenu GDI. Pris en charge à partir de Windows 10.

NonCpuVisiblePrimary

Indique que les allocations GDI ne doivent pas nécessairement être visibles par le processeur. Pris en charge à partir de Windows 10.

ParavirtualizationSupported

Le KMD hôte doit définir la limite si toutes les DDIs sont implémentées. Pris en charge à partir de Windows 10 version 1703 (WDDM 2.2).

IoMmuSecureModeSupported

Indique que le pilote prend en charge l’isolation GPU basée sur IOMMU. Pris en charge à partir de Windows 10 version 1803 (WDDM 2.4).

DisableSelfRefreshVRAMInS3

Désactivez la prise en charge de l’actualisation automatique de VRAM dans S3. Pris en charge à partir de Windows 10 version 1803.

IoMmuSecureModeRequired

Indique que la prise en charge du matériel et de l’isolation IOMMU (référencée par l’indicateur IommuSecureModeSupported ) est requise ou que le système d’exploitation ne démarre pas l’adaptateur. Pris en charge à partir de Windows 10 version 2004 (WDDM 2.7).

MapAperture2Supported

Indique que le pilote prend en charge l’opération de mémoire tampon de pagination DXGK_OPERATION_MAP_APERTURE_SEGMENT2 , qui est nécessaire pour le remapping DMA IOMMU. Pris en charge à partir de WDDM version 2.9.

CrossAdapterResourceTexture

Spécifie si le pilote fournit la prise en charge de niveau 2 de la texturation à partir de ressources inter-adaptateurs. Un pilote qui indique la prise en charge de CrossAdapterResourceTexture doit également indiquer la prise en charge de CrossAdapterResource. Pris en charge à partir de WDDM version 2.9.

CrossAdapterResourceScanout

Spécifie si le pilote fournit la prise en charge du niveau 3 de l’analyse des ressources inter-adaptateurs. Un pilote qui indique la prise en charge de CrossAdapterResourceScanout doit également indiquer la prise en charge de CrossAdapterResource et CrossAdapterResourceTexture. Pris en charge à partir de WDDM version 2.9.

La prise en charge du niveau 3 nécessite que le pilote soit en mesure d’effectuer les fonctionnalités de basculement prises en charge, déclarées par le pilote dans DXGK_FLIPCAPS, pour les ressources inter-adaptateurs des spécifications minimales suivantes :

  • Taille de mémoire tampon principale entre adaptateurs de 1920 x 1080 ou moins
  • Format de pixels de mémoire tampon de l’un des formats DisplayScanOut pris en charge suivants :
    • DXGI_FORMAT_R16G16B16A16_FLOAT
    • DXGI_FORMAT_R10G10B10A2_UNORM
    • DXGI_FORMAT_R8G8B8A8_UNORM
    • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
    • DXGI_FORMAT_B8G8R8A8_UNORM
    • DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
    • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB

Le runtime DXGI interrogera la prise en charge de CrossAdapterResourceScanout du pilote et, si elle est prise en charge, la pile de présentation descendra du chemin d’accès 1 copie. Par conséquent, les pilotes qui déclarent la prise en charge de CrossAdapterResourceScanout sont également requis pour :

  • Support DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3.
  • Prise en charge de tous les DDIS pertinents liés à la présentation pour les primaires inter-adaptateurs des spécifications minimales ci-dessus. En voici quelques exemples : pfnCreateResource, pfnCheckMultiplaneOverlaySupport et pfnPresentMultiplaneOverlay/pfnPresent1. Reportez-vous aux spécifications existantes pour obtenir les détails nécessaires, tels que les spécifications MPO et hybrides. Reportez-vous à la section ci-dessous pour plus d’informations sur l’abandon de CASO.

AlwaysPoweredVRAM

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 31 bits restants (après avoir défini OutOfOrderLock) du membre Value sur zéros. Notez que Reserved est disponible uniquement si DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WIN7.

Value

Cette valeur est utilisée pour opérer sur les membres collectivement.

PagingNode

Index de base zéro du nœud à utiliser pour les opérations de pagination. Si le pilote ne définit pas le membre de champ binaire MultiEngineAware du membre SchedulingCaps de la structure DXGK_DRIVERCAPS , le sous-système du noyau graphique DirectX ignore le paramètre de PagingNode. Ce membre s’applique uniquement à WDDM 1.x. Dans WDDM 2.x, PagingNode a été déplacé vers DXGK_PHYSICALADAPTERCAPS.

Configuration requise

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

Voir aussi

DXGK_DRIVERCAPS

DXGK_PHYSICALADAPTERCAPS