Partilhar via


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

DXGKCB_CREATECONTEXTALLOCATION aloca um contexto de GPU ou um contexto específico do dispositivo.

Sintaxe

DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;

NTSTATUS DxgkcbCreatecontextallocation(
  [in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}

Parâmetros

[in/out] unnamedParam1

Um ponteiro para uma estrutura DXGKARGCB_CREATECONTEXTALLOCATION que especifica os atributos do contexto a ser alocado.

Valor de retorno

DXGKCB_CREATECONTEXTALLOCATION retornará STATUS_SUCCESS se tiver êxito. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h.

Observações

A partir do WDDM 1.2, os drivers de miniporto de exibição podem alocar um contexto específico da GPU (de alocação de contexto de GPU) ou um contexto específico do dispositivo (de alocação de contexto do dispositivo).

Uma alocação de contexto de GPU permite que as GPUs armazenem o estado de contexto de buffers DMA que são preempidos no meio de sua execução. Os drivers criam alocações associadas a um contexto de GPU para salvar seu estado quando necessário. O sistema operacional garante que a alocação de contexto seja residente antes que um comando desse contexto seja colocado na fila de execução de hardware da GPU. O contexto permanecerá residente até que um comando de outro contexto seja colocado na fila de execução de hardware.

Além disso, o sistema operacional dá suporte à alternância de contexto de GPU lenta, supondo que o estado de contexto de hardware seja mantido na GPU depois de concluir um comando que pertence ao contexto. Dessa forma, os contextos só são ligados à GPU quando um comando de um contexto diferente é enviado para a fila de hardware.

DXGKCB_XXX funções são implementadas por Dxgkrnl. Para usar essa função de retorno de chamada, defina os membros do DXGKARGCB_ALLOCATEPAGESFORMDL e chame DxgkCbCreateContextAllocation por meio do DXGKRNL_INTERFACE.

Alocações de contexto de GPU

Alocações de contexto de GPU só podem ser feitas para contextos que não sejam do sistema. O driver de miniporto de exibição cria esses contextos chamando DxgkDdiCreateContext. Para criar um contexto que não seja do sistema, o driver define o membro SystemContext de uma estrutura DXGK_CREATECONTEXTFLAGS como zero e passa um ponteiro para essa estrutura no parâmetro pCreateContext.

Uma alocação de contexto de dispositivo segue um modelo semelhante, exceto que ele permanecerá residente para qualquer contexto que pertença ao dispositivo ao qual está associado. Esse modelo permite que os drivers usem alocações de contexto de GPU para armazenar dados de CSA (área de salvamento de contexto de GPU) e usar alocações de contexto do dispositivo para armazenar dados de tabela de página.

Alocações de contexto do dispositivo

As alocações de contexto do dispositivo só podem ser feitas para dispositivos que não são do sistema. O driver de miniporto de exibição cria esses dispositivos chamando DxgkDdiCreateDevice. Para criar um dispositivo que não seja do sistema, o driver define o Flags.SystemDevice membro de uma estrutura DXGK_CREATEDEVICEFLAGS como zero e passa um ponteiro para essa estrutura no parâmetro pCreateDevice.

O driver de miniporto de exibição chama DXGKCB_DESTROYCONTEXTALLOCATION para liberar os recursos de contexto que foram alocados por meio de DxgkCbCreateContextAllocation.

Endereços virtuais para alocações de contexto de destino

Para garantir que o sistema operacional defina um endereço virtual válido (não NULL) para a alocação de contexto de destino (InitContextResource->Destination->VirtualAddress membro da estrutura DXGKARG_BUILDPAGINGBUFFER), quando o driver de miniporto de exibição chama DxgkCbCreateContextAllocation deve:

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 8 (WDDM 1.2)
servidor com suporte mínimo Windows Server 2012
da Plataforma de Destino Área de trabalho
cabeçalho d3dkmddi.h (inclua D3dkmddi.h)
IRQL PASSIVE_LEVEL

Consulte também

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE