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