Compartilhar via


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)

Confira também

D3DDDI_FLIPINTERVAL_TYPE

DXGK_CONTEXTINFO

DXGK_SUBMITCOMMANDFLAGS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiBuildPagingBuffer

DxgkDdiCreateContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender

DxgkDdiSubmitCommand