Partager via


D3DKMTCreateNativeFence, fonction (d3dkmthk.h)

Dxgkrnl appelle D3DKMTCreateNativeFence pour créer un objet de clôture GPU natif sur un appareil particulier.

Syntaxe

NTSTATUS D3DKMTCreateNativeFence(
  D3DKMT_CREATENATIVEFENCE *unnamedParam1
);

Paramètres

unnamedParam1

[entrée/sortie] Pointeur vers une structure D3DKMT_CREATENATIVEFENCE qui décrit l’objet de clôture à créer.

Valeur retournée

D3DKMTCreateNativeFence retourne STATUS_SUCCESS en cas de création réussie. Sinon, il retourne un code d’erreur NTSTATUS tel que STATUS_INVALID_PARAMETER.

Remarques

La D3DDDI_NATIVEFENCE_TYPE spécifiée détermine le type de clôture native créée par le système d’exploitation. Ces clôtures diffèrent par les fonctionnalités, les caractéristiques de performances et les exigences de stockage pour CurrentValue et MonitoredValue. Le tableau suivant montre ces différences, où CVal signifie CurrentValue et MVal pour MonitoredValue.

Type CurrentValue MonitoredValue Prend en charge le partage inter-processus sur l’UC Prend en charge le partage entre adaptateurs UM CPUVA CVal KM CPUVA CVal GPU VA CVal CMPVA CVal MVal de messagerie unifiée KM MVal GPU VA MVal CMPVA MVal Cas d’usage
D3DDDI_NATIVEFENCE_TYPE_DEFAULT Sysmem Sysmem Oui Oui ReadOnly Lecture/écriture Lecture/écriture Lecture/écriture N/A Write ReadOnly (ou En lecture/écriture) Lecture/écriture Clôtures d’application avec des interruptions de processeur réduites. Le serveur GPU est débloqué sans le réveil de l’UC
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OPTIMISÉ) Sysmem VRAM Oui Oui ReadOnly Lecture/écriture Lecture/écriture Lecture/écriture N/A Write ReadOnly (ou En lecture/écriture) Lecture/écriture Identique au type 0, mais avec un trafic de bus PCI réduit, car les lectures MVal sont locales sur le GPU. La commande de signal GPU s’exécute plus rapidement en raison de cette latence réduite (débit++).
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU VRAM VRAM Oui Non N/A N/A Lecture/écriture Lecture/écriture N/A N/A ReadOnly (ou En lecture/écriture) Lecture/écriture Synchronisation au niveau de la mémoire tampon de commandes (non visible par l’application) au sein du même GPU. La valeur de lecture/écriture à la clôture (CVal) étant locale, les opérations de signal/déblocage sont rapides.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT

    • Pris en charge dans Windows 11, version 24H2.
    • Ce type de clôture prend en charge tous les objets de synchronisation D3DKMT existants Wait/Signal à partir d’opérations PROCESSEUR/GPU.
    • Les stockages CurrentValue et MonitoredValue pour ce type de clôture sont alloués dans le segment de mémoire système.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT (optimisé)

    • Cette fonctionnalité n’est actuellement pas prise en charge par le système d’exploitation.
    • La version optimisée de D3DDDI_NATIVEFENCE_TYPE_DEFAULT, dans laquelle le stockage MonitoredValue peut être alloué dans VRAM, accélère les lectures de MonitoredValue à partir du moteur GPU.
    • Cette optimisation n’est pas exposée à l’UMD. Au lieu de cela, Dxgkrnl et KMD décident si le type de clôture par défaut peut être optimisé en allouant le stockage MonitoredValue dans VRAM.
    • Le stockage MonitorValue alloué dans VRAM peut toujours être rétrogradé à la mémoire système si le système est soumis à une pression de la mémoire locale.
    • Si le système d’exploitation prend en charge ce type de clôture, il définit SupportOptimizedDefaultFenceType sur TRUE dans la table d’interface de fonctionnalité DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 . KMD est censé interroger la table d’interface de fonctionnalité pendant l’initialisation du pilote pour déterminer cette fonctionnalité du système d’exploitation.
  • D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU

    • Cette fonctionnalité n’est actuellement pas prise en charge par le système d’exploitation.
    • Une clôture de D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU ne prend pas en charge les opérations du processeur ; autrement dit, le système d’exploitation n’autorise pas le mode utilisateur à attendre en file d’attente et signale à cet objet de clôture.
    • Par conséquent, ce type ne peut pas être utilisé pour les clôtures d’application DX qui doivent prendre en charge la sémantique d’attente et de signal du processeur. Ce type est principalement utilisé pour les clôtures UMD internes pour la synchronisation entre les moteurs GPU. La création de ce type en tant qu’objet de clôture natif D3DKMT offre une visibilité sur ces clôtures pour des outils tels que GpuView et le débogage.
    • Le segment pris en charge pour cette clôture doit être un segment de mémoire locale non visible par le processeur.
    • Le stockage alloué dans la mémoire locale peut toujours être rétrogradé à la mémoire système si le système est sous pression de la mémoire locale.
    • Si le système d’exploitation prend en charge ce type de clôture, il définit SupportIntraGpuFenceType sur TRUE dans la table d’interface de fonctionnalité DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 . KMD est censé interroger la table d’interface de fonctionnalité pendant l’initialisation du pilote pour déterminer cette fonctionnalité du système d’exploitation.

Pour plus d’informations sur les clôtures GPU natives, consultez Objets de clôture GPU natifs.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 11, version 24H2
En-tête d3dkmthk.h

Voir aussi

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence