estrutura DXGK_GDIARG_BITBLT (d3dkmddi.h)
A estrutura DXGK_GDIARG_BITBLT descreve as características de uma transferência de bloco de bits acelerada por hardware GDI (bitblt) sem alongamento.
Sintaxe
typedef struct _DXGK_GDIARG_BITBLT {
[in] RECT SrcRect;
[in] RECT DstRect;
UINT SrcAllocationIndex;
UINT DstAllocationIndex;
UINT NumSubRects;
RECT *pSubRects;
WORD Rop;
WORD Rop3;
UINT SrcPitch;
UINT DstPitch;
} DXGK_GDIARG_BITBLT;
Membros
[in] SrcRect
Uma estrutura RECT que define a área retangular a ser copiada. Esse retângulo é especificado no sistema de coordenadas da superfície de origem e é definido por dois pontos: superior esquerdo e inferior direito. Os dois pontos que definem o retângulo são sempre bem ordenados.
O retângulo de origem pode exceder os limites da superfície de origem.
Esse retângulo é mapeado para o retângulo de destino definido por DstRect. O SrcRect é usado para transformar sub-retângulos do espaço de origem para o espaço de destino.
Para obter mais informações, consulte a seção Comentários.
[in] DstRect
Uma estrutura RECT que define a área retangular a ser modificada. Esse retângulo é especificado no sistema de coordenadas da superfície de destino e é definido por dois pontos: superior esquerdo e inferior direito. O retângulo é exclusivo para o canto inferior direito; ou seja, suas bordas inferior e direita não fazem parte da transferência de bloco de bits. Os dois pontos que definem o retângulo são sempre bem ordenados.
O retângulo de destino definido por DstRect pode exceder os limites da superfície de destino, mas os sub-retângulos não podem. Além disso, todos os sub-retângulos têm a garantia de caber dentro da superfície de destino. Os sub-retângulos podem ser restringidos ainda mais por um retângulo delimitador menor que o retângulo de destino.
Para obter mais informações, consulte a seção Comentários.
SrcAllocationIndex
[in] Um índice do elemento na lista de alocação que especifica a alocação referenciada pelo retângulo de origem SrcRect .
DstAllocationIndex
[in] Um índice do elemento na lista de alocação que especifica a alocação referenciada pelo retângulo de destino DstRect .
NumSubRects
[in] O número de sub-retângulos no espaço de superfície de destino delimitado pelo retângulo de destino DstRect .
pSubRects
[in] Um ponteiro para os sub-retângulos no espaço de superfície de destino delimitado pelo retângulo de destino DstRect .
Rop
[in] Um valor de 8 bits que especifica uma ROP (operação de raster GDI) definida pelos valores constantes da enumeração DXGK_GDIROP_BITBLT .
Rop3
[in] Um valor de 8 bits que especifica uma operação de raster GDI ternário (ROP3) que combina um pincel, um bitmap de origem e um bitmap de destino em uma das 256 combinações possíveis. Esse tipo de operação de raster será processado somente se o driver tiver definido o membro SupportAllBltRops na estrutura DXGK_PRESENTATIONCAPS .
SrcPitch
[in] O tom da superfície de origem, em bytes. Para obter mais informações sobre como usar o pitch, consulte a seção Comentários.
DstPitch
[in] O tom da superfície de destino, em bytes. Para obter mais informações sobre como usar o pitch, consulte a seção Comentários.
Comentários
Os valores de pitch SrcPitch e DstPitch devem ser usados para determinar os locais de bytes dos retângulos SrcRect e DstRect , respectivamente, para as seguintes alocações do tipo D3DKMDT_GDISURFACETYPE:
D3DKMDT_GDISURFACE_STAGING_CPUVISIBLE
D3DKMDT_GDISURFACE_EXISTINGSYSMEM
O pitch deve ser ignorado para outros tipos de alocação.
É garantido que o pitch esteja alinhado na transferência de bloco de bits de acordo com o membro AlignmentShift da estrutura de DXGK_PRESENTATIONCAPS (ou seja, DXGK_DRIVERCAPS. PresentationCaps.AlignmentShift).
Quando um retângulo é definido por dois pixels nas coordenadas (esquerda, superior) e (direita, inferior), o endereço do primeiro pixel é:
Allocation.BaseAddress + (top * Pitch) + (left * 4)
O endereço do último pixel do retângulo é:
Allocation.BaseAddress + ((bottom - 1) * Pitch) + ((right - 1) * 4)
Quando sub-retângulos são transformados no espaço da superfície de origem, o resultado é garantido estar dentro da superfície de origem. Essa transformação é definida pela seguinte fórmula:
<SrcSubRect.left = SubRect.left - DstRect.left + SrcRect.left;
SrcSubRect.right = SubRect.right - DstRect.left + SrcRect.left;
SrcSubRect.top = SubRect.top - DstRect.top + SrcRect.top;
SrcSubRect.bottom = SubRect.bottom - DstRect.top + SrcRect.top;
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 |
Cabeçalho | d3dkmddi.h (inclua D3dkmddi.h) |