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 Shared for definido como 1 (TRUE), o objeto de sincronização será compartilhado. Se Shared for 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.
Observação
Se NtSecuritySharing estiver definido como 1, Shared 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 entre adaptadores 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 estiver definido como zero (FALSE), o objeto de sincronização não será um objeto de adaptador cruzado compartilhado.
TopOfPipeline
Valor | Significado |
---|---|
TRUE | Especifica se o objeto de sincronização é sinalizado assim que o conteúdo do buffer de comando anterior a ele é 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. |
FALSE | O objeto de sincronização é sinalizado após a conclusão da 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 |
---|---|
TRUE | 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. |
FALSE | 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 |
---|---|
TRUE | 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. |
FALSE | 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 o sinalizador NoSignal .
Com suporte a partir do Windows 10.
NoSignalMaxValueOnTdr
Valor | Significado |
---|---|
TRUE | Instrui o agendador de GPU a ignorar a sinalização mencionada anteriormente da cerca monitorada para o valor máximo em casos de TDR. |
FALSE | O agendador de GPU sinalizará a cerca monitorada para o valor máximo quando um dispositivo que pode potencialmente sinalizar que ele é afetado pela redefinição de GPU (TDR). |
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 de 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 main objeto de sincronização compartilhado 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.
Comentários
Os objetos a serem compartilhados usando a função D3DKMTShareObjects devem primeiro ser criados com o valor do sinalizador NtSecuritySharing definido. Esse valor de sinalizador está disponível nas estruturas D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS e D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .
Os drivers devem seguir estas diretrizes nos sinalizadores de D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS :
Se o objeto de sincronização não for compartilhado, defina Shared e NtSecuritySharing como 0.
Se o objeto de sincronização for compartilhado com um tipo de dados D3DKMT_HANDLE , defina Shared = 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 Shared = 1 e NtSecuritySharing = 1.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 |
Cabeçalho | d3dukmdt.h (inclua D3dumddi.h, D3dkmddi.h) |
Confira também
D3DDDI_SYNCHRONIZATIONOBJECTINFO2