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

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence