struttura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS (d3dukmdt.h)
La struttura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS identifica gli attributi di un oggetto di sincronizzazione.
Sintassi
typedef struct _D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS {
union {
struct {
UINT Shared : 1;
UINT NtSecuritySharing : 1;
UINT CrossAdapter : 1;
UINT TopOfPipeline : 1;
UINT NoSignal : 1;
UINT NoWait : 1;
UINT NoSignalMaxValueOnTdr : 1;
UINT NoGPUAccess : 1;
UINT SignalByKmd : 1;
UINT Unused : 1;
UINT UnwaitCpuWaitersOnlyOnDestroy : 1;
#if ...
UINT Reserved : 20;
#elif
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#elif
UINT Reserved : 23;
#elif
UINT Reserved : 28;
#else
UINT Reserved : 29;
#endif
UINT D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0 : 1;
};
UINT Value;
};
} D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS;
Membri
Shared
Valore UINT che specifica se l'oggetto di sincronizzazione è condiviso.
Se condiviso è impostato su 1 (TRUE), l'oggetto di sincronizzazione viene condiviso. Se condiviso è impostato su zero (FALSE), l'oggetto di sincronizzazione non viene condiviso. Per altre informazioni, vedere la sezione Osservazioni.
NtSecuritySharing
Valore UINT che specifica se l'oggetto di sincronizzazione viene condiviso con un handle NT, ovvero non dispone di un handle globale D3DKMT_HANDLE modalità kernel per la risorsa.
Se NtSecuritySharing è impostato su 1 (TRUE), l'oggetto di sincronizzazione viene condiviso ma non dispone di un handle D3DKMT_HANDLE globale per la risorsa.
Nota
Se NtSecuritySharing è impostato su 1, condiviso deve essere impostato su 1. Per altre informazioni, vedere la sezione Osservazioni.
Supportato a partire da Windows 8.
CrossAdapter
Valore UINT che specifica se l'oggetto di sincronizzazione è un oggetto risorsa di condiviso tra adattatori in un sistema ibrido.
Se CrossAdapter è impostato su 1 (TRUE), l'oggetto di sincronizzazione è un oggetto cross-adapter condiviso. Se CrossAdapter è impostato su zero (FALSE), l'oggetto di sincronizzazione non è un oggetto cross-adapter condiviso.
TopOfPipeline
Valore | Significato |
---|---|
VERO | Specifica se l'oggetto di sincronizzazione viene segnalato non appena il contenuto del buffer dei comandi precedente viene copiato interamente nella pipeline GPU, ma non necessariamente completata. Questo comportamento consente di riutilizzare i buffer dei comandi il prima possibile. |
FALSO | L'oggetto di sincronizzazione viene segnalato dopo il completamento dell'esecuzione dei buffer dei comandi precedenti. |
Questo valore può essere impostato solo su 1 (TRUE) per gli oggetti di sincronizzazione delle recinzioni monitorati e deve essere impostato su zero (FALSE) per tutti gli altri tipi di oggetto di sincronizzazione.
Supportato a partire da Windows 10.
NoSignal
Valore | Significato |
---|---|
VERO | Specifica che il dispositivo in cui viene creato o aperto questo oggetto di sincronizzazione può inviare solo comandi di attesa. Un tentativo di inviare un'operazione di segnale quando questo flag è impostato restituirà STATUS_ACCESS_DENIED. |
FALSO | È possibile segnalare l'oggetto di sincronizzazione. |
Questo valore può essere impostato solo su 1 (TRUE) per gli oggetti di sincronizzazione delle recinzioni monitorati e deve essere impostato su zero (FALSE) per tutti gli altri tipi di oggetto di sincronizzazione.
Supportato a partire da Windows 10.
NoWait
Valore | Significato |
---|---|
VERO | Specifica che il dispositivo in cui viene creato o aperto questo oggetto di sincronizzazione può inviare solo comandi di segnale. Un tentativo di inviare un'operazione di attesa quando questo flag è impostato restituirà STATUS_ACCESS_DENIED. |
FALSO | L'oggetto di sincronizzazione può essere aspettato. |
Questo valore può essere impostato solo su 1 (TRUE) per gli oggetti di sincronizzazione delle recinzioni monitorati e deve essere impostato su zero (FALSE) per tutti gli altri tipi di oggetto di sincronizzazione.
Questo flag non può essere impostato contemporaneamente con flag NoSignal.
Supportato a partire da Windows 10.
NoSignalMaxValueOnTdr
Valore | Significato |
---|---|
VERO | Indica all'utilità di pianificazione GPU di ignorare la segnalazione precedente del recinto monitorato al valore massimo nei casi TDR. |
FALSO | L'utilità di pianificazione GPU segnalerà il limite monitorato al valore massimo quando un dispositivo in grado di segnalarlo è interessato dalla reimpostazione della GPU (TDR). |
Supportato a partire da Windows 10.
NoGPUAccess
Se impostata, il recinto non verrà mappato nello spazio indirizzi virtuale GPU e verrà sempre archiviato come valore a 64 bit (indipendentemente dai limiti dell'adattatore). Sono supportate solo le operazioni di segnale/attesa basate su pacchetti. Supportato a partire da Windows 10.
SignalByKmd
Se impostata, la recinzione può essere segnalata dal driver in modalità kernel (KMD). Questo flag può essere usato solo con gli oggetti D3DDDI_CPU_NOTIFICATION. Supportato a partire da Windows 11 (WDDM 3.0).
Unused
Questo membro non è usato e deve essere impostato su zero. Disponibile a partire da Windows 11 versione 22H2 (WDDM 3.1).
UnwaitCpuWaitersOnlyOnDestroy
Se impostato, i camerieri per un oggetto di sincronizzazione condiviso nella CPU verranno sbloccati solo quando l'oggetto di sincronizzazione condiviso viene infine eliminato definitivamente. Per impostazione predefinita, i camerieri della CPU vengono sbloccati quando un oggetto di sincronizzazione locale viene eliminato definitivamente, ma l'oggetto di sincronizzazione condiviso principale è ancora aperto da un altro oggetto di sincronizzazione locale. Supportato a partire da Windows 11 versione 24H2 (WDDM 3.2).
Reserved
Questo membro è riservato e deve essere impostato su zero.
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0
Questo membro è riservato e deve essere impostato su zero.
Supportato a partire da Windows 8.
Value
Membro dell'unione contenuto in D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS che può contenere un valore a 32 bit che identifica gli attributi di un oggetto di sincronizzazione.
Osservazioni
Gli oggetti da condividere usando la funzioneD3DKMTShareObjectsdevono prima essere creati con il valore del flag NtSecuritySharing impostato. Questo valore flag è disponibile nelle strutture D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGSe D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS.
I driver devono seguire queste linee guida sui flag D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS:
Se l'oggetto di sincronizzazione non è condiviso, impostare sia Shared che NtSecuritySharing su 0.
Se l'oggetto di sincronizzazione viene condiviso con un tipo di dati D3DKMT_HANDLE, impostare Shared = 1 e NtSecuritySharing = 0.
Se l'oggetto di sincronizzazione viene condiviso con un handle NT per il processo (e senza un handle globale D3DKMT_HANDLE modalità kernel per la risorsa), impostare condiviso = 1 e NtSecuritySharing = 1.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 7 |
intestazione | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |
Vedere anche
D3DDDI_SYNCHRONIZATIONOBJECTINFO2