Compartilhar via


estrutura DXGKARG_PRESENT (d3dkmddi.h)

A estrutura DXGKARG_PRESENT descreve uma operação de cópia de origem para primária.

Sintaxe

typedef struct _DXGKARG_PRESENT {
  [out]    VOID                     *pDmaBuffer;
  [in]     UINT                     DmaSize;
  [in]     VOID                     *pDmaBufferPrivateData;
  [in]     UINT                     DmaBufferPrivateDataSize;
  union {
    [in]     DXGK_ALLOCATIONLIST               *pAllocationList;
    [in]     DXGK_PRESENTALLOCATIONINFO        *pAllocationInfo;
    [in]     DXGK_PRESENTMULTIPLANEOVERLAYINFO *pPresentMultiPlaneOverlayInfo;
  };
#if ...
  [in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#if ...
  [in]     UINT                     PatchLocationListOutSize;
  [in]     DXGK_ALLOCATIONLIST      *pAllocationList;
#else
  [in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#endif
#else
  [in]     UINT                     PatchLocationListOutSize;
#endif
  [in/out] UINT                     MultipassOffset;
  [in]     UINT                     Color;
  [in]     RECT                     DstRect;
  [in]     RECT                     SrcRect;
  [in]     UINT                     SubRectCnt;
  [in]     const RECT               *pDstSubRects;
  [in]     D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
  [in]     DXGK_PRESENTFLAGS        Flags;
  [in]     UINT                     DmaBufferSegmentId;
  [in]     PHYSICAL_ADDRESS         DmaBufferPhysicalAddress;
  [in]     UINT                     Reserved;
           D3DGPU_VIRTUAL_ADDRESS   DmaBufferGpuVirtualAddress;
           UINT                     NumSrcAllocations;
           UINT                     NumDstAllocations;
           UINT                     PrivateDriverDataSize;
           PVOID                    pPrivateDriverData;
} DXGKARG_PRESENT;

Membros

[out] pDmaBuffer

Um ponteiro para o início do buffer de DMA, que está alinhado em 4 KB. Esse buffer pode ser enviado por meio de DMA para o hardware gráfico. Antes que o driver de miniporto de exibição retorne da função DxgkDdiPresent , o driver deve definir pDmaBuffer para o próximo byte vazio que segue o último byte no qual o driver escreveu ou o driver deve apontar para o local (um byte além do espaço em buffer) se não houver mais espaço disponível. Esse local estaria correto se o buffer fosse grande o suficiente.

[in] DmaSize

O tamanho, em bytes, do buffer de DMA para o qual pDmaBuffer aponta.

[in] pDmaBufferPrivateData

Um ponteiro para uma estrutura de dados privados residente no driver associada ao buffer de DMA para o qual pDmaBuffer aponta.

[in] DmaBufferPrivateDataSize

O número de bytes que permanecem na estrutura de dados privados para a qual pDmaBufferPrivateData aponta para para a operação atual.

[in] pAllocationList

Uma matriz de estruturas DXGK_ALLOCATIONLIST que descrevem a origem, o destino ou ambos para a operação de cópia. O driver acessa o identificador de alocação de origem por meio do membro hDeviceSpecificAllocation do elemento pAllocationList[DXGK_PRESENT_SOURCE_INDEX] (ou seja, o elemento 1). O driver acessa o identificador de alocação de destino por meio do membro hDeviceSpecificAllocation do elemento pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] (ou seja, o elemento 2).

Os identificadores especificados nos elementos da lista de alocação são os identificadores específicos do dispositivo que a função DxgkDdiOpenAllocation do driver retornou quando as alocações foram abertas. Se uma origem ou destino não estiver presente para a operação, o membro hDeviceSpecificAllocation do respectivo elemento será NULL. Esse membro está disponível a partir do Windows 7.

Observação

O membro hDeviceSpecificAllocation do primeiro elemento na lista de alocação (elemento 0) é sempre NULL.

[in] pAllocationInfo

Reservado para uso do sistema. O driver de miniporte de exibição deve ignorar esse membro. Esse membro está disponível a partir do Windows 7.

[in] pPresentMultiPlaneOverlayInfo

Um ponteiro para uma estrutura do tipo DXGK_PRESENTMULTIPLANEOVERLAYINFO que especifica informações sobre uma entrada VidPN e um plano de sobreposição a ser exibido.

Com suporte começando com Windows 8.

[in/out] pPatchLocationListOut

Uma matriz de estruturas de D3DDDI_PATCHLOCATIONLIST para a lista de locais de patch que o driver de miniporto de exibição preenche. Antes que o driver retorne de uma chamada para sua função DxgkDdiPresent , o driver deve definir pPatchLocationListOut como o próximo elemento D3DDDI_PATCHLOCATIONLIST que segue o último elemento D3DDDI_PATCHLOCATIONLIST que o driver atualizou.

[in] PatchLocationListOutSize

O número de elementos na lista de localização de patch que pPatchLocationListOut especifica. O driver de miniporto de exibição não é necessário para preencher todos os elementos na lista inteira; o driver deve usar apenas os elementos necessários para descrever o local do patch dentro do buffer de DMA.

[in/out] MultipassOffset

Um valor UINT que especifica o progresso da operação de cópia se a função DxgkDdiPresent do driver de miniporto de exibição precisar retornar STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER para obter um novo buffer de DMA. Quando a função DxgkDdiPresent do driver é chamada pela primeira vez com uma nova lista RECT , MultipassOffset é inicializado como zero. Antes que o driver retorne da chamada DxgkDdiPresent , o driver define MultipassOffset para mostrar o progresso da cópia para chamadas DxgkDdiPresent subsequentes com o mesmo buffer de comando. O subsistema de kernel de elementos gráficos do Microsoft DirectX não altera ainda mais o valor.

[in] Color

O A8R8G8B8 cor em uma operação de preenchimento de cores, que é especificada pelo sinalizador de campo de bits ColorFill definido no membro Flags ou uma operação de chave de cor, que é especificada pelo sinalizador de campo de bits SrcColorKey ou DstColorKey . Observe que apenas um dos sinalizadores de campo de bit ColorFill, SrcColorKey e DstColorKey está definido a qualquer momento.

Se o formato primário for RGB palettizado, Color conterá o índice de paleta em vez do valor D3DDDIFMT_A8R8G8B8 do tipo de enumeração D3DDDIFORMAT .

[in] DstRect

Uma estrutura RECT para o retângulo de destino usado para calcular o fator stretch.

[in] SrcRect

Uma estrutura RECT para o retângulo de origem usado para calcular o fator stretch.

[in] SubRectCnt

O número de sub-retângulos de destino na matriz especificada por pDstSubRects .

[in] pDstSubRects

Uma matriz de estruturas RECT para a lista de sub-retângulos de destino para os quais a função DxgkDdiPresent copia.

[in] FlipInterval

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).

[in] Flags

Uma estrutura DXGK_PRESENTFLAGS que identifica, em sinalizadores de campo de bit, o tipo de operação presente a ser executada. Observe que os sinalizadores de campo de bit ColorFill, SrcColorKey e DstColorKey em Flags são mutuamente exclusivos.

[in] DmaBufferSegmentId

O identificador do segmento de memória no qual o buffer de DMA foi paginado. Se o identificador for zero, o buffer de DMA não será paginado corretamente.

[in] DmaBufferPhysicalAddress

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 o endereço físico for zero, o buffer de DMA não será paginado corretamente.

[in] Reserved

Reservado para uso do sistema. O driver deve ignorar esse membro.

DmaBufferGpuVirtualAddress

Um tipo de dados D3DGPU_VIRTUAL_ADDRESS que indica o endereço virtual no qual o buffer de DMA foi paginado. Se o endereço físico for zero, o buffer de DMA não será paginado corretamente.

NumSrcAllocations

O número de alocações de contexto na origem.

NumDstAllocations

O número de alocações de contexto no destino.

PrivateDriverDataSize

O tamanho de pPrivateDriverData.

pPrivateDriverData

Ponteiro para um buffer que contém dados opcionais do driver privado.

Comentários

A proporção das áreas retangulares de origem e destino especificadas pelos membros SrcRect e DstRect é usada para calcular um fator de alongamento. O driver pode considerar o cálculo de fator elástico ao executar a operação de cópia.

O driver não é necessário para executar nenhum recorte. O subsistema de kernel de elementos gráficos do Microsoft DirectX prepara a lista de sub-retângulos de destino que o membro pDstSubRects especifica para as coordenadas do retângulo de destino que o membro DstRect especifica e para a tela (primária). Observe que, se uma lista de sub-retângulos de destino for fornecida em pDstSubRects, o driver deverá usar apenas SrcRect e DstRect para calcular o fator stretch e deve usar as coordenadas dos sub-retângulos de destino para a operação de cópia real.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Cabeçalho d3dkmddi.h (inclua D3dkmddi.h)

Confira também

D3DDDI_FLIPINTERVAL_TYPE

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DXGK_PRESENTFLAGS

DXGK_PRESENTMULTIPLANEOVERLAYINFO

DxgkDdiPresent

RECT