structure DXGK_VIDMMCAPS (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 (KMD) en mode noyau.
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 qu’un thread d’application avait précédemment verrouillé et ignoré.
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 sauvegardées par une section. Prise en charge à partir de Windows 8.
CrossAdapterResource
Spécifie si le pilote fournit une prise en charge de niveau 1 de la copie vers et depuis des ressources inter-adaptateurs dans un système hybride . Prise 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ù que le rendu soit 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 des ressources 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 partage.
- La ressource doit être marquée comme étant visible par le processeur.
- L’allocation sera créée par le système d’exploitation en tant que combinaison d’écriture.
- 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 l’emplacement. 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). La D3DKMT_CROSS_ADAPTER_RESOURCE_HEIGHT_ALIGNMENT est ajoutée. 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 une limite de 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 entre adaptateurs peut être utilisée comme principal, mais le pilote n’obtient pas d’informations, qui est généralement fournie lors de la création du réplica principal
VirtualAddressingSupported
Spécifie si le pilote prend en charge l’adressage de la mémoire virtuelle. Pour exprimer la prise en charge de l’adressage de mémoire virtuelle GPU, le pilote doit définir la limite de VirtualAddressingSupported et GpuMmuSupported ou Limite de IoMmuSupported. GpuMmuSupported et IoMmuSupported ne peuvent pas être définis en même temps. Prise en charge à partir de Windows 10 (WDDM 2.0).
GpuMmuSupported
Spécifie si l’adaptateur prend en charge le modèle GpuMmu. Un adaptateur ne peut pas prendre en charge les GpuMmu et les modèles IoMmu sur différents moteurs en même temps. Pour plus d’informations, consultez modèle GpuMmu. Prise en charge à partir de Windows 10 (WDDM 2.0).
IoMmuSupported
Spécifie si l’adaptateur prend en charge le modèle IoMmu. Un adaptateur ne peut pas prendre en charge les GpuMmu et les modèles IoMmu sur différents moteurs en même temps. Pour plus d’informations, consultez modèle IoMmu. Prise en charge à partir de Windows 10 (WDDM 2.0).
ReplicateGdiContent
Spécifie si l’adaptateur prend en charge la réplication du contenu GDI. Prise en charge à partir de Windows 10 (WDDM 2.0).
NonCpuVisiblePrimary
Indique que les allocations GDI ne sont pas requises pour être visibles par le processeur. Prise en charge à partir de Windows 10 (WDDM 2.0).
ParavirtualizationSupported
Indique que le KMD prend en charge la paravirtualisation GPU. Le KMD hôte doit définir la limite si toutes les DDIS sont implémentées. Introduit dans Windows 10 version 1703 (WDDM 2.2).
IoMmuSecureModeSupported
Indique que le pilote prend en charge isolation GPU basée sur IOMMU. Prise 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. Prise 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. Prise 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 requise pour de remapping IOMMU DMA. Prise en charge à partir de WDDM version 2.9.
CrossAdapterResourceTexture
Spécifie si le pilote fournit la prise en charge du 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. Prise 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 des CrossAdapterResource et CrossAdapterResourceTexture. Prise en charge à partir de WDDM version 2.9.
La prise en charge du niveau 3 nécessite que le pilote puisse effectuer les fonctionnalités de découpage 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 inter-adaptateur de 1920 x 1080 ou plus petite
- Format de pixels tampons 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 interroge les CrossAdapterResourceScanout du pilote prise en charge et, si elle est prise en charge, la pile de présentation descendra le chemin d’accès de copie 1. Par conséquent, les pilotes qui déclarent la prise en charge de CrossAdapterResourceScanout sont également requis pour :
- Prise en charge DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3.
- Prendre en charge toutes les DDIS relatives à la présentation pertinentes pour les primaires inter-adaptateurs des spécifications minimales ci-dessus. 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 DU MPO et les spécifications hybrides. Reportez-vous à la section ci-dessous pour plus d’informations sur la chute de l’authentification unique.
AlwaysPoweredVRAM
Reserved
Ce membre est réservé et doit être défini sur zéro. La définition de ce membre sur zéro équivaut à définir les 31 bits restants (après avoir défini OutOfOrderLock) du membre Valeur sur zéros. Notez que réservée n’est disponible que si DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WIN7.
Value
Cette valeur est utilisée pour fonctionner 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 MultiEngineAware membre de champ binaire du membre SchedulingCaps membre 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.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Vista (WDDM 1.0) |
d’en-tête | d3dkmddi.h (include D3dkmddi.h) |