Função D3DKMTCreateNativeFence (d3dkmthk.h)
As chamadas de runtime D3D D3DKMTCreateNativeFence para criar um objeto de cerca de GPU nativo em um dispositivo específico.
Sintaxe
NTSTATUS D3DKMTCreateNativeFence(
D3DKMT_CREATENATIVEFENCE *unnamedParam1
);
Parâmetros
unnamedParam1
[entrada/saída] Ponteiro para uma estrutura D3DKMT_CREATENATIVEFENCE que descreve o objeto fence a ser criado.
Valor de retorno
D3DKMTCreateNativeFence retorna STATUS_SUCCESS na criação bem-sucedida. Caso contrário, ele retornará um código de erro NTSTATUS, como STATUS_INVALID_PARAMETER.
Observações
O D3DDDI_NATIVEFENCE_TYPE especificado determina o tipo de cerca nativa que o sistema operacional cria. Essas cercas diferem em funcionalidade, características de desempenho e requisitos de armazenamento para CurrentValue e MonitoredValue. A tabela a seguir mostra essas diferenças, em que CVal significa CurrentValue e MVal significa MonitoredValue.
Tipo | CurrentValue | MonitoredValue | Dá suporte ao compartilhamento entre processos na CPU | Dá suporte ao compartilhamento entre adaptadores | UM CPUVA CVal | KM CPUVA CVal | GPU VA CVal | CMPVA CVal | UM MVal | KM MVal | GPU VA MVal | CMPVA MVal | Caso de Uso |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
D3DDDI_NATIVEFENCE_TYPE_DEFAULT | Sysmem | Sysmem | Sim | Sim | ReadOnly | Leitura/gravação | Leitura/gravação | Leitura/gravação | N/A | Escrever | ReadOnly (ou leitura/gravação) | Leitura/gravação | Cercas de aplicativo com interrupções de CPU reduzidas. Garçom de GPU é desbloqueado sem acordar A CPU |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OTIMIZADO ) | Sysmem | VRAM | Sim | Sim | ReadOnly | Leitura/gravação | Leitura/gravação | Leitura/gravação | N/A | Escrever | ReadOnly (ou leitura/gravação) | Leitura/gravação | O mesmo que o Tipo 0, mas com o tráfego de barramento PCI reduzido que as leituras de MVal são locais para a GPU. O comando de sinal de GPU é concluído mais rapidamente devido a essa latência reduzida (taxa de transferência++). |
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU | VRAM | VRAM | Sim | Não | N/A | N/A | Leitura/gravação | Leitura/gravação | N/A | N/A | ReadOnly (ou leitura/gravação) | Leitura/gravação | Sincronização no nível do buffer de comando (não visível pelo aplicativo) dentro da mesma GPU. O valor de leitura/gravação em cerca (CVal) é local, portanto, as operações de sinal/desbloqueio são rápidas. |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT
- Com suporte no Windows 11, versão 24H2.
- Esse tipo de cerca dá suporte a todos os objetos de sincronização D3DKMT existentes Wait/Signal de operações de CPU/GPU.
- Tanto CurrentValue quanto MonitoredValue armazenamento para esse tipo de cerca são alocados no segmento de memória do sistema.
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (Otimizado )
- Atualmente, essa funcionalidade não é compatível com o sistema operacional.
- A versão otimizada do
D3DDDI_NATIVEFENCE_TYPE_DEFAULT , na qual o armazenamento MonitoredValuepode ser alocado na VRAM, acelerará as leituras de MonitoredValue do mecanismo de GPU. - Essa otimização não é exposta à UMD. Em vez disso, Dxgkrnl e KMD decidirão se o tipo de cerca padrão pode ser otimizado alocando o armazenamento MonitoredValue na VRAM.
- MonitoredValue armazenamento alocado na VRAM ainda poderá ser rebaixado para a memória do sistema se o sistema estiver sob pressão de memória local.
- Se o sistema operacional der suporte a esse tipo de vedação, ele definirá SupportOptimizedDefaultFenceType como TRUE na tabela de interface do recurso DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1. Espera-se que o KMD consulte a tabela de interface do recurso durante a inicialização do driver para determinar essa funcionalidade do sistema operacional.
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU
- Atualmente, essa funcionalidade não é compatível com o sistema operacional.
- Uma cerca D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU não dá suporte a nenhuma operação de CPU; ou seja, o sistema operacional não permite que o modo de usuário enfileira a espera e os sinais para esse objeto de cerca.
- Portanto, esse tipo não pode ser usado para cercas de aplicativo DX que devem dar suporte à semântica de sinal e de espera da CPU. Esse tipo é usado principalmente para cercas internas de UMD para sincronização entre mecanismos de GPU. A criação desse tipo como um objeto de cerca nativa D3DKMT fornece visibilidade dessas cercas para ferramentas como gpuView e depuração.
- O segmento com suporte para essa cerca deve ser um segmento de memória local visível não CPU.
- O armazenamento alocado na memória local ainda poderá ser rebaixado para a memória do sistema se o sistema estiver sob pressão de memória local.
- Se o sistema operacional der suporte a esse tipo de vedação, ele definirá supportIntraGpuFenceType como TRUE na tabela de interface do recurso DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1. Espera-se que o KMD consulte a tabela de interface do recurso durante a inicialização do driver para determinar essa funcionalidade do sistema operacional.
Para obter mais informações sobre cercas de GPU nativas, consulte objetos de cerca de GPU nativa.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 11, versão 24H2 |
cabeçalho | d3dkmthk.h |
Consulte também
D3DKMTOpenNativeFenceFromNTHandle