Compartilhar via


DXGKDDI_SUSPENDCONTEXT função de retorno de chamada (d3dkmddi.h)

DxgkddiSuspendContext instrui a GPU a suspender um contexto. Se a GPU não reconhecer a conclusão da suspensão dentro do tempo limite de TDR (detecção de tempo limite e recuperação), o sistema operacional detectará o tempo limite do mecanismo e executará uma redefinição do mecanismo.

Sintaxe

DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;

NTSTATUS DxgkddiSuspendcontext(
  IN_CONST_HANDLE hAdapter,
  IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}

Parâmetros

hAdapter

[in] O contexto de hardware a ser preempto e marcado como suspenso. Esse tipo de solicitação de preempção não tem um período de carência e deve ser respeitado pela GPU assim que possível.

pSuspendContext

[in] Ponteiro para uma estrutura DXGKARG_SUSPENDCONTEXT que contém argumentos adicionais para essa função.

Retornar valor

DxgkddiSuspendContext retornará STATUS_SUCCESS se o contexto já estiver suspenso no momento dessa chamada. Caso contrário, esse valor será definido como STATUS_PENDING e a operação de suspensão será concluída quando contextSuspendFence for sinalizado por meio de uma interrupção.

Comentários

Registre sua implementação dessa função de retorno de chamada definindo-a em DRIVER_INITIALIZATION_DATA.

Embora a preempção round robin possa ser iniciada pela GPU, o sistema operacional ainda precisa de uma maneira de antecipar o contexto por outros motivos; por exemplo, se precisar mover suas alocações ou executar uma transição de energia de GPU.

O valor de suspensão de contexto é necessário para lidar com casos em que o sistema operacional suspende um contexto, não aguarda a confirmação de suspensão, retoma e suspende um contexto novamente. O valor de suspensão permitirá que o sistema operacional distingue entre a confirmação de suspensão anterior e a mais recente.

Depois que um contexto é suspenso, supõe-se que todas as referências a ele foram retiradas da GPU e o sistema operacional está livre para destruir o contexto ou mover sua memória. Ao contrário do WDDM 2.3 ou anterior, nenhum comando separado de comutador de contexto NULL (indicado anteriormente pelo sinalizador ContextSwitch em DxgkDdiSubmitCommandVirtual) está presente no modo de agendamento do WDDM 2.4, porque DxgkddiSuspendContext deve fazer esse trabalho.

Requisitos

Requisito Valor
Cabeçalho d3dkmddi.h

Confira também

DxgkddiResumeContext

DXGKARG_SUSPENDCONTEXT