DXGKCB_CREATECONTEXTALLOCATION função de retorno de chamada (d3dkmddi.h)
DXGKCB_CREATECONTEXTALLOCATION aloca um contexto de GPU ou 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.
Retornar valor
DXGKCB_CREATECONTEXTALLOCATIONretornará STATUS_SUCCESS se for bem-sucedido. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h.
Comentários
A partir do WDDM 1.2, os drivers de miniporto de exibição podem alocar um contexto específico da GPU (alocação de contexto de GPU) ou um contexto específico do dispositivo (alocação de contexto do dispositivo).
Uma alocação de contexto de GPU permite que as GPUs armazenem o estado de contexto de buffers de DMA que são preemptados 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 ativados na 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 membro Flags.SystemDevice 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 chamar DxgkCbCreateContextAllocation, ele deverá:
- Defina os membros CpuVisible e Protected da estrutura DXGK_ALLOCATIONINFOFLAGS .
- Página na alocação somente para segmentos de abertura definindo o membro SupportedSegmentSet da estrutura DXGKARGCB_CREATECONTEXTALLOCATION .
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 (WDDM 1.2) |
Servidor mínimo com suporte | Windows Server 2012 |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | d3dkmddi.h (inclua D3dkmddi.h) |
IRQL | PASSIVE_LEVEL |
Confira também
DXGKARGCB_CREATECONTEXTALLOCATION