Função D3DKMTCreateNativeFence (d3dkmthk.h)
Dxgkrnl chama 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.
Retornar valor
D3DKMTCreateNativeFence retorna STATUS_SUCCESS na criação bem-sucedida. Caso contrário, ele retornará um código de erro NTSTATUS, como STATUS_INVALID_PARAMETER.
Comentários
O D3DDDI_NATIVEFENCE_TYPE especificado determina o tipo de limite nativo que o sistema operacional cria. Essas limitações 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 | Yes | Yes | ReadOnly | Leitura/Gravação | Leitura/Gravação | Leitura/Gravação | N/D | Gravar | ReadOnly (ou Leitura/Gravação) | Leitura/Gravação | Limitações de aplicativo com interrupções reduzidas da CPU. Garçom de GPU é desbloqueado sem acordar a CPU |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OTIMIZADO) | Sysmem | VRAM | Yes | Yes | ReadOnly | Leitura/Gravação | Leitura/Gravação | Leitura/Gravação | N/D | Gravar | 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 | Yes | No | N/D | N/D | Leitura/Gravação | Leitura/Gravação | N/D | N/D | ReadOnly (ou Leitura/Gravação) | Leitura/Gravação | Sincronização de nível de buffer de comando (não visível para aplicativo) dentro da mesma GPU. O valor de leitura/gravação em limite (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 limite dá suporte a todos os objetos de sincronização D3DKMT existentes Wait/Signal de operações de CPU/GPU.
- O armazenamento CurrentValue e MonitoredValue para esse tipo de limite é alocado no segmento de memória do sistema.
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (Otimizado)
- Atualmente, não há suporte para essa funcionalidade no sistema operacional.
- A versão otimizada do D3DDDI_NATIVEFENCE_TYPE_DEFAULT, na qual o armazenamento MonitoredValue pode ser alocado na VRAM, acelerará as leituras de MonitoredValue do mecanismo de GPU.
- Essa otimização não é exposta ao UMD. Em vez disso, Dxgkrnl e KMD decidirão se o tipo de limite padrão pode ser otimizado alocando o armazenamento MonitoredValue na VRAM.
- O armazenamento MonitoredValue 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 limite, ele definirá SupportOptimizedDefaultFenceType como TRUE na tabela DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 interface de recurso. Espera-se que o KMD consulte a tabela de interface de recurso durante a inicialização do driver para determinar essa funcionalidade do sistema operacional.
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU
- Atualmente, não há suporte para essa funcionalidade no sistema operacional.
- Uma cerca de 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 enfileirar espera e sinalize para esse objeto de isolamento.
- Portanto, esse tipo não pode ser usado para isolamentos de aplicativo DX que devem dar suporte à semântica de sinal e espera da CPU. Esse tipo é usado principalmente para isolamentos UMD internos para sincronização entre mecanismos de GPU. A criação desse tipo como um objeto de cerca nativa D3DKMT fornece visibilidade sobre essas cercas para ferramentas como GpuView e depuração.
- O segmento com suporte para essa cerca deve ser um segmento de memória local não visível da 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 limite, ele definirá SupportIntraGpuFenceType como TRUE na tabela de interface de recurso DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 . Espera-se que o KMD consulte a tabela de interface de 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 |
---|---|
Cliente mínimo com suporte | Windows 11, versão 24H2 |
Cabeçalho | d3dkmthk.h |
Confira também
D3DKMTOpenNativeFenceFromNTHandle