D3DDDI_SYNCHRONIZATIONOBJECTINFO2 structure (d3dukmdt.h)
La structure D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient des informations sur un objet de synchronisation de deuxième génération.
Syntaxe
typedef struct _D3DDDI_SYNCHRONIZATIONOBJECTINFO2 {
D3DDDI_SYNCHRONIZATIONOBJECT_TYPE Type;
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
union {
struct {
BOOL InitialState;
} SynchronizationMutex;
struct {
UINT MaxCount;
UINT InitialCount;
} Semaphore;
struct {
D3DKMT_ALIGN64 UINT64 FenceValue;
} Fence;
struct {
void D3DKMT_PTR(
HANDLE unnamedParam1,
Event unnamedParam2
);
} CPUNotification;
struct {
D3DKMT_ALIGN64 UINT64 InitialFenceValue;
void D3DKMT_PTR(
VOID *unnamedParam1,
FenceValueCPUVirtualAddress unnamedParam2
);
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
UINT EngineAffinity;
UINT Padding;
} MonitoredFence;
struct {
D3DKMT_HANDLE hAdapter;
D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId;
D3DKMT_ALIGN64 UINT64 Time;
void D3DKMT_PTR(
VOID *unnamedParam1,
FenceValueCPUVirtualAddress unnamedParam2
);
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
UINT EngineAffinity;
UINT Padding;
} PeriodicMonitoredFence;
struct {
D3DKMT_ALIGN64 UINT64 Reserved[8];
} Reserved;
};
D3DKMT_HANDLE SharedHandle;
} D3DDDI_SYNCHRONIZATIONOBJECTINFO2;
Membres
Type
[in] Valeur de type D3DDDI_SYNCHRONIZATIONOBJECT_TYPE qui indique le type d’objet de synchronisation.
Flags
[in] Structure D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS qui spécifie, dans les indicateurs de champ binaire, les attributs de l’objet de synchronisation.
SynchronizationMutex
Structure qui contient des informations sur un mutex de synchronisation. Si le membre Type est égal à D3DDDI_SYNCHRONIZATION_MUTEX, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure SynchronizationMutex .
SynchronizationMutex.InitialState
Valeur booléenne qui indique si le mutex de synchronisation appartient initialement à un objet . La valeur TRUE indique que le mutex est détenu ; FALSE indique que le mutex n’est pas détenu.
Semaphore
Structure qui contient des informations sur un sémaphore. Si le membre Type est égal à D3DDDI_SEMAPHORE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure sémaphore .
Semaphore.MaxCount
Nombre maximal d’événements qu’un objet peut attendre.
Semaphore.InitialCount
Nombre initial d’événements qu’un objet attend.
Fence
Structure qui contient des informations sur une clôture. Si le membre Type est égal à D3DDDI_FENCE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure Fence .
Fence.FenceValue
Valeur 64 bits qui spécifie la valeur de clôture initiale.
CPUNotification
Structure qui contient des informations sur une notification d’UC. Si le membre Type est égal à D3DDDI_CPU_NOTIFICATION, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure CPUNotification .
void D3DKMT_PTR( HANDLE unnamedParam1, Event unnamedParam2)
MonitoredFence
Structure qui contient des informations sur une clôture surveillée. Si le membre Type est égal à D3DDDI_MONITORED_FENCE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure MonitoredFence .
Les clôtures surveillées ne peuvent être partagées qu’à l’aide de handles NT pour des raisons de sécurité. L’indicateur NtSecuritySharing doit donc être défini lors de l’utilisation d’une clôture surveillée.
Pris en charge à partir de Windows 10.
MonitoredFence.InitialFenceValue
[in] Valeur 64 bits qui spécifie la valeur de clôture initiale.
Pris en charge à partir de Windows 10.
void D3DKMT_PTR( VOID *unnamedParam1, FenceValueCPUVirtualAddress unnamedParam2)
MonitoredFence.FenceValueGPUVirtualAddress
[out] Mappage en lecture-écriture de la valeur de clôture pour le GPU. Un pilote peut signaler une nouvelle valeur de clôture en insérant une commande d’écriture GPU pour cette adresse dans une mémoire tampon de commande, et Dxgkrnl débloquera les serveurs pour cette valeur d’objet de clôture. Selon la valeur de la limite No64BitAtomics , cette adresse pointe vers une valeur sous-jacente de 32 bits ou de 64 bits. Si l’appareil ne prend pas en charge la cohérence du cache avec le processeur, il ne doit pas écrire dans la valeur de clôture à l’aide de l’adresse virtuelle GPU. L’accès à la valeur de clôture doit être effectué uniquement par le processeur.
Pris en charge à partir de Windows 10.
MonitoredFence.EngineAffinity
[in] Champ bit, où chaque position de bit (à partir de zéro) définit un index de carte physique dans un lien de carte graphique (LDA) où l’adresse virtuelle GPU sera validée. Zéro signifie que l’adresse virtuelle GPU est validée sur toutes les cartes physiques.
Pris en charge à partir de Windows 10.
MonitoredFence.Padding
PeriodicMonitoredFence
Structure qui contient des informations sur une clôture surveillée périodiquement. Si le membre Type est égal à D3DDDI_PERIODIC_MONITORED_FENCE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure MonitoredFence .
Pris en charge à partir de Windows 10.
VidPnTargetID
[out] ID de sortie pour lequel le compositeur souhaite recevoir des notifications.
PeriodicMonitoredFence.hAdapter
[in] Handle de l’adaptateur associé à VidPnSourceID
PeriodicMonitoredFence.VidPnTargetId
PeriodicMonitoredFence.Time
[out] Représente un décalage avant le VSync (heure de VSync – paramètre Heure). La valeur Time ne peut pas être supérieure à un intervalle VSync (1 / DisplayModeRefresh). L’heure est spécifiée en unités de 100n.
PeriodicMonitoredFence.FenceValueGPUVirtualAddress
[in] Mappage en lecture seule de la valeur de clôture pour le GPU
PeriodicMonitoredFence.EngineAffinity
[in] Définit les cartes physiques dans lesquelles l’appliance d’évaluation gpu sera mappée
PeriodicMonitoredFence.Padding
Reserved
Structure réservée à une utilisation ultérieure. Cette structure contient le membre suivant :
Reserved.Reserved[8]
SharedHandle
[out] Handle de l’objet de synchronisation partagé s’il existe actuellement un handle partagé. Le pilote doit partager des objets de synchronisation à l’aide de handles NT. Il doit définir le D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS ::NtSecuritySharing pour indiquer que l’objet sera partagé à l’aide de handles NT et appeler D3DKMTShareObjects pour obtenir un handle NT. L’utilisation de handles globaux n’est pas sécurisée. N’importe quel processus peut deviner un handle global et ouvrir des objets partagés. Les handles globaux sont pris en charge uniquement pour des raisons de compatibilité avec les anciens runtimes D3D.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 |
En-tête | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |
Voir aussi
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS
D3DDDI_SYNCHRONIZATIONOBJECT_TYPE
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour