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:
- Defina os do CpuVisible e membros de Protegidos da estrutura DXGK_ALLOCATIONINFOFLAGS.
- Página na alocação somente para segmentos de abertura definindo o SupportedSegmentSet membro da estrutura DXGKARGCB_CREATECONTEXTALLOCATION.
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
DXGKARGCB_CREATECONTEXTALLOCATION