Partilhar via


estrutura DXGK_VIDSCHCAPS (d3dkmddi.h)

A estrutura de DXGK_VIDSCHCAPS tem sinalizadores de campo de bit que identificam os recursos de agendamento da GPU que um KMD (driver de miniporto no modo kernel) pode dar suporte.

Sintaxe

typedef struct _DXGK_VIDSCHCAPS {
  union {
    struct {
      UINT MultiEngineAware : 1;
      UINT VSyncPowerSaveAware : 1;
      UINT PreemptionAware : 1;
      UINT NoDmaPatching : 1;
      UINT CancelCommandAware : 1;
      UINT No64BitAtomics : 1;
      UINT LowIrqlPreemptCommand : 1;
      UINT HwQueuePacketCap : 4;
      UINT NativeGpuFence : 1;
      UINT OptimizedNativeFenceSignaledInterrupt : 1;
#if ...
      UINT Reserved : 19;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 25;
#elif
      UINT Reserved : 27;
#else
      UINT Reserved : 30;
#endif
    };
    UINT Value;
  };
} DXGK_VIDSCHCAPS;

Membros

MultiEngineAware

Um valor UINT que especifica se o driver dá suporte à criação e destruição de um contexto de dispositivo (por meio das funções DxgkDdiCreateContext e DxgkDdiDestroyContext ) e o uso de um contexto de dispositivo (por meio das funções DxgkDdiPresent e DxgkDdiRender ). Se o driver não der suporte à criação de contexto, para cada chamada para o driver que passaria um identificador para um contexto, o subsistema de kernel de elementos gráficos do Microsoft DirectX substituirá o identificador para o contexto por um identificador para o dispositivo.

VSyncPowerSaveAware

Um valor UINT que especifica se o driver dá suporte à funcionalidade de economia de energia de sincronização vertical.

Se VSyncPowerSaveAware estiver definido como 1 (TRUE), o sistema operacional poderá economizar energia desabilitando e habilitando a interrupção de sincronização vertical que ocorre do uso de alguns aplicativos. Se VSyncPowerSaveAware estiver definido como zero (FALSE), o sistema operacional nunca desabilitará a interrupção de sincronização vertical para aplicativos que possam causar a interrupção da sincronização vertical. Com suporte a partir do Windows Server 2008 e do Windows Vista com SP1.

PreemptionAware

Um valor UINT que especifica se o driver dá suporte à política de preempção de GPU de Windows 8 e versões posteriores do Windows. Com essa política, o sistema operacional sempre emite solicitações de preempção para a GPU antes de iniciar o processo de TDR (Detecção e Recuperação de Tempo Limite). Com suporte começando com Windows 8.

Se PreemptionAware estiver definido como 1 (TRUE), o driver oferecerá suporte à política de preempção de Windows 8 e versões posteriores do Windows. Observe que, se PreemptionAware estiver definido como 1, o membro MultiEngineAware também deverá ser definido como um valor de 1. Se PreemptionAware estiver definido como 1, mas MultiEngineAware estiver definido como zero, o sistema operacional interromperá o processo de inicialização do driver e retornará um código de falha.

Se PreemptionAware estiver definido como zero (FALSE), o driver oferecerá suporte à política de preempção do Windows 7. Com essa política, o sistema operacional pode não emitir solicitações de preempção enquanto operações de execução potencialmente longas estão sendo executadas na GPU. Como resultado, essas solicitações de GPU não são preempcionadas antes que o processo TDR seja iniciado. Isso pode fazer com que o processo TDR redefina repetidamente a GPU, o que pode levar a um erro de parada do sistema.

NoDmaPatching

Um valor UINT que especifica se o driver desabilita a detecção de vazamento para buffers DMA divididos em várias partes. Essa detecção é executada depois que a função DxgkDdiPatch do driver é chamada para atribuir, ou patch, endereços físicos a cada parte do buffer DMA. Com suporte começando com Windows 8.

Os dispositivos de exibição que dão suporte a endereços virtuais podem reprogramar um endereço virtual para um novo local de memória de vídeo sem precisar corrigir o valor do endereço do buffer de DMA. Para esses tipos de dispositivos de exibição, o driver deve definir NoDmaPatching como 1.

Se NoDmaPatching estiver definido como 1 (TRUE), o driver desabilitará a detecção de vazamento e o comportamento da divisão de buffer de DMA será o mesmo que no Windows 7. Observe que quando NoDmaPatching é definido como 1, os membros PreemptionAware e MultiEngineAware também devem ser definidos como 1. Se NoDmaPatching estiver definido como 1, mas PreemptionAware ou MultiEngineAware estiver definido como zero, o sistema operacional interromperá o processo de inicialização do driver e retornará um código de falha.

Se NoDmaPatching estiver definido como 0 (FALSE), o driver habilitará a detecção de vazamento para endereços de buffer de DMA corrigidos. O sistema operacional executa a detecção de vazamento antes de chamar a função DxgkDdiPatch do driver.

CancelCommandAware

Um valor UINT que especifica se o driver dá suporte à limpeza de recursos internos (por meio da função DxgkDdiCancelCommand ) depois que um comando é removido da fila de hardware. Com suporte começando com Windows 8.

Se CancelCommandAware estiver definido como 1 (TRUE), o driver oferecerá suporte à limpeza de recursos associados a um pacote de DMA cancelado. Observe que quando CancelCommandAware é definido como 1, o membro MultiEngineAware também deve ser definido como 1. Se CancelCommandAware estiver definido como 1, mas MultiEngineAware estiver definido como zero, o sistema operacional retornará um código de falha.

Se CancelCommandAware estiver definido como zero (FALSE), o driver não oferecerá suporte à limpeza de recursos.

No64BitAtomics

Se No64BitAtomics estiver definido como 1 (TRUE), o driver indicará que a GPU é capaz de atualizar apenas valores de 32 bits atomicamente. Nesse caso, o sistema operacional manipulará automaticamente o caso de quebra de cerca, mas colocará uma restrição de que os valores pendentes de espera e cerca de sinal não podem ser mais do que UINT_MAX/2, além do último valor de cerca sinalizado. Com suporte começando com Windows 10.

Se No64BitAtomics estiver definido como zero (FALSE), o driver indicará que a GPU é capaz de atualizar valores de 64 bits atomicamente, conforme visível pela CPU.

LowIrqlPreemptCommand

HwQueuePacketCap

Número máximo de pacotes DMA permitidos para serem enfileirados em um nó.

NativeGpuFence

Se o sistema operacional tiver habilitado o recurso DXGK_FEATURE_NATIVE_FENCE , o driver poderá declarar suporte para a funcionalidade de cerca de GPU nativa durante a inicialização do adaptador definindo o bit NativeGpuFence como 1. Essa funcionalidade é exposta ao modo de usuário por meio de um bit correspondente D3DKMT_WDDM_3_1_CAPS::NativeGpuFenceSupported . Para obter mais informações, consulte Objetos de cerca de GPU nativos. Disponível a partir do Windows 11, versão 22H2 (WDDM 3.1).

OptimizedNativeFenceSignaledInterrupt

O driver define esse TRUE se, em uma interrupção sinalizada, a GPU puder especificar em DXGKARGCB_NOTIFY_INTERRUPT_DATA::NativeFenceSignaled apenas o identificador KMD do HWQueue que estava em execução. Para obter mais informações, consulte Objetos de cerca de GPU nativos. Disponível a partir do Windows 11, versão 22H2 (WDDM 3.1).

Reserved

Esse membro é reservado e deve ser definido como zero.

Value

Uma maneira alternativa de acessar os sinalizadores de campo de bits na união.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Cabeçalho d3dkmddi.h (inclua D3dkmddi.h)

Confira também

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDestroyContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender