estrutura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS (d3dukmdt.h)
A estrutura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS identifica atributos de um objeto de sincronização.
Sintaxe
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;
Membros
Shared
Um valor UINT que especifica se o objeto de sincronização é compartilhado.
Se compartilhado estiver definido como 1 (TRUE), o objeto de sincronização será compartilhado. Se compartilhado estiver definido como zero (FALSE), o objeto de sincronização não será compartilhado. Para obter mais informações, consulte a seção Comentários.
NtSecuritySharing
Um valor UINT que especifica se o objeto de sincronização é compartilhado com um identificador NT, o que significa que ele não tem um identificador global D3DKMT_HANDLE modo kernel para o recurso.
Se NtSecuritySharing estiver definido como 1 (TRUE), o objeto de sincronização será compartilhado, mas não terá um identificador de D3DKMT_HANDLE global para o recurso.
Nota
Se do NtSecuritySharing estiver definido como 1, Compartilhado deverá ser definido como 1. Para obter mais informações, consulte a seção Comentários.
Com suporte a partir do Windows 8.
CrossAdapter
Um valor UINT que especifica se o objeto de sincronização é um objeto de recurso compartilhado adaptador cruzado em um sistema híbrido.
Se CrossAdapter for definido como 1 (TRUE), o objeto de sincronização será um objeto de adaptador cruzado compartilhado. Se crossAdapter for definido como zero (FALSE), o objeto de sincronização não será um objeto de adaptador cruzado compartilhado.
TopOfPipeline
Valor | Significado |
---|---|
VERDADEIRO | Especifica se o objeto de sincronização é sinalizado assim que o conteúdo do buffer de comando que o precede é totalmente copiado para o pipeline de GPU, mas não necessariamente a execução concluída. Esse comportamento permite reutilização de buffers de comando o mais rápido possível. |
FALSO | O objeto de sincronização é sinalizado após a execução dos buffers de comando anteriores. |
Esse valor só pode ser definido como 1 (TRUE) para objetos de sincronização de cerca monitorados e deve ser definido como zero (FALSE) para todos os outros tipos de objeto de sincronização.
Com suporte a partir do Windows 10.
NoSignal
Valor | Significado |
---|---|
VERDADEIRO | Especifica que o dispositivo no qual esse objeto de sincronização é criado ou aberto só pode enviar comandos de espera para ele. Uma tentativa de enviar uma operação de sinal quando esse sinalizador for definido retornará STATUS_ACCESS_DENIED. |
FALSO | O objeto de sincronização pode ser sinalizado. |
Esse valor só pode ser definido como 1 (TRUE) para objetos de sincronização de cerca monitorados e deve ser definido como zero (FALSE) para todos os outros tipos de objeto de sincronização.
Com suporte a partir do Windows 10.
NoWait
Valor | Significado |
---|---|
VERDADEIRO | Especifica que o dispositivo no qual esse objeto de sincronização é criado ou aberto só pode enviar comandos de sinal para ele. Uma tentativa de enviar uma operação de espera quando esse sinalizador for definido retornará STATUS_ACCESS_DENIED. |
FALSO | O objeto de sincronização pode ser aguardado. |
Esse valor só pode ser definido como 1 (TRUE) para objetos de sincronização de cerca monitorados e deve ser definido como zero (FALSE) para todos os outros tipos de objeto de sincronização.
Esse sinalizador não pode ser definido simultaneamente com sinalizador de NoSignal.
Com suporte a partir do Windows 10.
NoSignalMaxValueOnTdr
Valor | Significado |
---|---|
VERDADEIRO | Instrui o agendador de GPU a ignorar a sinalização acima mencionada da cerca monitorada para o valor máximo em casos de TDR. |
FALSO | O agendador de GPU sinalizará a cerca monitorada para o valor máximo quando um dispositivo que pode potencialmente sinalizar que ele é afetado pelo TDR (redefinição de GPU). |
Com suporte a partir do Windows 10.
NoGPUAccess
Quando definido, a cerca não será mapeada para o espaço de endereço virtual da GPU e sempre será armazenada como um valor de 64 bits (independentemente das tampas do adaptador). Há suporte apenas para operações de sinal/espera baseadas em pacotes. Com suporte a partir do Windows 10.
SignalByKmd
Quando definido, a cerca pode ser sinalizada pelo KMD (driver do modo kernel). Esse sinalizador só pode ser usado com objetos D3DDDI_CPU_NOTIFICATION. Com suporte a partir do Windows 11 (WDDM 3.0).
Unused
Esse membro não é utilizado e deve ser definido como zero. Disponível a partir do Windows 11, versão 22H2 (WDDM 3.1).
UnwaitCpuWaitersOnlyOnDestroy
Quando definido, os garçons de um objeto de sincronização compartilhado na CPU serão desbloqueados somente quando o objeto de sincronização compartilhado for finalmente destruído. Por padrão, os garçons da CPU são desbloqueados quando um objeto de sincronização local é destruído, mas o principal objeto de sincronização compartilhada ainda é aberto por outro objeto de sincronização local. Com suporte a partir do Windows 11, versão 24H2 (WDDM 3.2).
Reserved
Esse membro é reservado e deve ser definido como zero.
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0
Esse membro é reservado e deve ser definido como zero.
Com suporte a partir do Windows 8.
Value
Um membro na união contido em D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS que pode conter um valor de 32 bits que identifica atributos de um objeto de sincronização.
Observações
Os objetos a serem compartilhados usando a funçãoD3DKMTShareObjects devem primeiro ser criados com o conjunto de valores do sinalizador NtSecuritySharing. Esse valor de sinalizador está disponível nas estruturas D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGSe D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS.
Os drivers devem seguir estas diretrizes sobre sinalizadores de D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS:
Se o objeto de sincronização não for compartilhado, defina Compartilhados e NtSecuritySharing como 0.
Se o objeto de sincronização for compartilhado com um tipo de dados D3DKMT_HANDLE, defina Compartilhado = 1 e NtSecuritySharing = 0.
Se o objeto de sincronização for compartilhado com um identificador NT para o processo (e sem um identificador global D3DKMT_HANDLE modo kernel para o recurso), defina Compartilhado = 1 e NtSecuritySharing = 1.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 7 |
cabeçalho | d3dukmdt.h (inclua D3dumddi.h, D3dkmddi.h) |
Consulte também
D3DDDI_SYNCHRONIZATIONOBJECTINFO2