Compartilhar via


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 MonitoredValue pode 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

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence