estrutura DXGKARG_SUBMITCOMMAND (d3dkmddi.h)
A estrutura DXGKARG_SUBMITCOMMAND descreve o buffer de DMA (acesso direto à memória) que um driver de miniporto de exibição envia à unidade de execução de comando de hardware durante uma chamada para DxgkDdiSubmitCommand.
Sintaxe
typedef struct _DXGKARG_SUBMITCOMMAND {
union {
HANDLE hDevice;
HANDLE hContext;
};
UINT DmaBufferSegmentId;
PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
UINT DmaBufferSize;
UINT DmaBufferSubmissionStartOffset;
UINT DmaBufferSubmissionEndOffset;
VOID *pDmaBufferPrivateData;
UINT DmaBufferPrivateDataSize;
UINT DmaBufferPrivateDataSubmissionStartOffset;
UINT DmaBufferPrivateDataSubmissionEndOffset;
UINT SubmissionFenceId;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
DXGK_SUBMITCOMMANDFLAGS Flags;
UINT EngineOrdinal;
D3DGPU_VIRTUAL_ADDRESS DmaBufferVirtualAddress;
UINT NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;
Membros
hDevice
[in] Se o driver não estiver ciente de vários mecanismos (ou seja, o driver não dá suporte à criação de contexto), hDevice será um identificador para o dispositivo de exibição (contexto gráfico) do qual a solicitação de envio se originou. Um identificador de dispositivo é fornecido à função DxgkDdiSubmitCommand do driver na união que DXGKARG_SUBMITCOMMAND contém.
Para algumas operações de paginação, hDevice é NULL (por exemplo, operações de paginação que removem o conteúdo de todo o buffer de quadro durante o gerenciamento de energia). As operações de paginação são indicadas pelo sinalizador de campo de bit paginação no membro Flags .
hContext
[in] Se o driver estiver ciente de vários mecanismos (ou seja, o driver dá suporte à criação de contexto), um identificador para o contexto do dispositivo do qual a solicitação de envio se originou. Um identificador de contexto é fornecido à função DxgkDdiSubmitCommand do driver na união que DXGKARG_SUBMITCOMMAND contém.
Para algumas operações de paginação, hContext é NULL (por exemplo, operações de paginação que removem o conteúdo de todo o buffer de quadro durante o gerenciamento de energia). As operações de paginação são indicadas pelo sinalizador de campo de bit paginação no membro Flags .
DmaBufferSegmentId
[in] O identificador do segmento de memória no qual o buffer de DMA foi paginado.
O identificador poderá ser zero se o driver indicado não mapear o buffer de DMA para o segmento definindo o membro DmaBufferSegmentSet da estrutura DXGK_CONTEXTINFO como 0 em uma chamada para a função DxgkDdiCreateContext do driver. Se DmaBufferSegmentId for zero, o buffer de DMA será alocado como um bloco contíguo de memória do sistema.
DmaBufferPhysicalAddress
[in] Um tipo de dados PHYSICAL_ADDRESS (que é definido como LARGE_INTEGER) que indica o endereço físico no qual o buffer de DMA foi paginado.
Se DmaBufferSegmentId for zero, DmaBufferPhysicalAddress será o endereço físico na memória do sistema em que o buffer DMA está localizado.
Se DmaBufferSegmentId não for zero, DmaBufferPhysicalAddress será o endereço físico do segmento para o buffer de DMA; ou seja, o endereço aponta para um endereço físico do segmento de abertura que é um espaço de endereço contíguo definido na memória física (DXGK_SEGMENTDESCRIPTOR. BaseAddress + DmaBuffer.SegmentOffset).
Observe que DmaBufferPhysicalAddress sempre se refere ao início do buffer de DMA, embora o driver possa ser necessário para corrigir ou enviar uma seção do buffer DMA que não inclui o início do buffer DMA (ou seja, se o membro DmaBufferSubmissionStartOffset não for zero).
DmaBufferSize
[in] O tamanho, em bytes, do buffer de DMA.
DmaBufferSize representa todo o comprimento do buffer de DMA; no entanto, a solicitação de patch ou envio pode se referir a apenas uma parte do buffer de DMA.
DmaBufferSubmissionStartOffset
[in] O deslocamento, em bytes, desde o início do buffer de DMA até o início da parte do buffer de DMA que requer aplicação de patch ou envio. O deslocamento recebido no momento do patch corresponde ao deslocamento recebido no momento do envio.
DmaBufferSubmissionEndOffset
[in] O deslocamento, em bytes, desde o início do buffer de DMA até o final da parte do buffer de DMA que requer aplicação de patch ou envio. O deslocamento recebido no momento do patch corresponde ao deslocamento recebido no momento do envio.
pDmaBufferPrivateData
[in] Um ponteiro para os dados privados residentes no driver associados ao buffer DMA que foi preenchido durante a função DxgkDdiRender, DxgkDdiPresent ou DxgkDdiPatch .
Para operações de paginação, um único buffer de paginação é usado para vários envios independentes. Nesse cenário, o driver pode indicar – retornando o ponteiro de dados de driver privado apropriado em uma chamada para sua função DxgkDdiBuildPagingBuffer – para ter um único intervalo de dados privados de driver para todos os envios ou um para cada envio.
DmaBufferPrivateDataSize
[in] O tamanho dos dados do driver privado para os quais pDmaBufferPrivateData aponta, em bytes.
DmaBufferPrivateDataSize representa todo o comprimento do buffer de dados do driver privado; no entanto, a parte associada ao envio atual pode ser menor.
O KMD não deve validar os dados privados quando esse membro for zero.
DmaBufferPrivateDataSubmissionStartOffset
[in] O deslocamento, em bytes, desde o início dos dados privados do buffer de DMA que pDmaBufferPrivateData especifica para o início da parte dos dados privados associados ao envio atual. DmaBufferPrivateDataSubmissionStartOffset é sempre zero para uma solicitação não paga.
DmaBufferPrivateDataSubmissionEndOffset
[in] O deslocamento, em bytes, desde o início dos dados privados do buffer de DMA que pDmaBufferPrivateData especifica até o final da parte dos dados privados associados ao envio atual.
SubmissionFenceId
[in] Um identificador exclusivo que o driver pode gravar no comando fence no buffer de anéis, que é o buffer em que os buffers DMA são enfileirados para que a GPU (unidade de processamento gráfico) seja executada. Para obter mais informações sobre esses tipos de identificadores, consulte Fornecendo identificadores de cerca.
VidPnSourceId
[in] O número de identificação baseado em zero da origem do vídeo presente em um caminho de uma topologia VidPN (rede presente em vídeo) para uma operação de inversão. Esse membro é válido somente quando o sinalizador de campo de bits Flip ou FlipWithNoWait é definido no membro Flags .
FlipInterval
[in] Um valor de tipo D3DDDI_FLIPINTERVAL_TYPE que indica o intervalo de inversão (ou seja, se a inversão ocorrer após zero, uma, duas, três ou quatro sincronizações verticais). FlipInterval só será válido se o sinalizador de campo de bits Flip estiver definido (ou seja, TRUE) no membro Flags .
Flags
[in] Uma estrutura DXGK_SUBMITCOMMANDFLAGS que identifica informações sobre o buffer de DMA a ser enviada.
EngineOrdinal
[in] Reservado para uso futuro.
DmaBufferVirtualAddress
Esse membro é reservado e deve ser definido como zero. Com suporte a partir do Windows 7.
NodeOrdinal
O índice baseado em zero do nó para o qual o contexto é criado. Identifica o nó quando o contexto é NULL. Com suporte começando com Windows 8.
Comentários
A função DxgkDdiSubmitCommand do driver de miniport de exibição deve estar ciente de que vários processos podem acessar o objeto de dispositivo especificado pelo membro hDevice ao mesmo tempo.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista (WDDM 1.0) |
Cabeçalho | d3dkmddi.h (inclua D3dkmddi.h) |