Partager via


D3DKMTCreateNativeFence, fonction (d3dkmthk.h)

Le runtime D3D 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

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

Valeur de retour

D3DKMTCreateNativeFence retourne STATUS_SUCCESS lors de la 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 en fonction des fonctionnalités, des caractéristiques de performances et des exigences de stockage pour CurrentValue et MonitorValue. Le tableau suivant présente ces différences, où CVal signifie CurrentValue et MVal signifie MonitorValue.

Type CurrentValue MonitorValue Prend en charge le partage entre processus sur le processeur Prend en charge le partage entre adaptateurs UcVA de messagerie unifiée CVal KM CPUVA CVal GPU VA CVal CMPVA CVal UM MVal KM MVal GPU VA MVal CMPVA MVal Cas d'utilisation
D3DDDI_NATIVEFENCE_TYPE_DEFAULT Sysmem Sysmem Oui Oui ReadOnly Lecture/écriture Lecture/écriture Lecture/écriture N/A Écrire ReadOnly (ou lecture/écriture) Lecture/écriture Clôtures d’application avec interruptions de processeur réduites. Le serveur GPU est déblocé sans réveiller l’UC
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (optimisé) Sysmem VRAM Oui Oui ReadOnly Lecture/écriture Lecture/écriture Lecture/écriture N/A Écrire ReadOnly (ou lecture/écriture) Lecture/écriture Identique à Type 0, mais avec un trafic de bus PCI réduit que les lectures MVal sont locales sur le GPU. La commande de signal GPU se termine 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 lecture/écriture) Lecture/écriture Synchronisation au niveau de la mémoire tampon de commande (non visible par l’application) au sein du même GPU. La valeur de délimitation en lecture/écriture (CVal) est locale, de sorte que 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 des opérations processeur/GPU.
    • Les deux CurrentValue et Storage MonitorValue 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 MonitorValue peut être alloué dans VRAM, accélère les lectures de MonitorValue à partir du moteur GPU.
    • Cette optimisation n’est pas exposée à UMD. Au lieu de cela, Dxgkrnl et KMD déterminent si le type de clôture par défaut peut être optimisé en allouant le stockage MonitorValue dans VRAM.
    • MonitoringValue stockage alloué dans VRAM peut toujours être rétrogradé à la mémoire système si le système est sous pression de mémoire locale.
    • Si le système d’exploitation prend en charge ce type de clôture, il définit SupportOptimizedDefaultFenceType 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é de 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 D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU ne prend pas en charge les opérations de processeur ; autrement dit, le système d’exploitation n’autorise pas le mode utilisateur à 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 les 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 l’UC.
    • Le stockage alloué en mémoire locale peut toujours être rétrogradé à la mémoire système si le système est sous pression de mémoire locale.
    • Si le système d’exploitation prend en charge ce type de clôture, il définit SupportIntraGpuFenceType 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é de système d’exploitation.

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

Exigences

Exigence Valeur
client minimum pris en charge Windows 11, version 24H2
d’en-tête d3dkmthk.h

Voir aussi

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence