Specifying GDI Hardware-Accelerated Rendering Operations
When the DxgkDdiRenderKm function is called, the operating system specifies the type of GDI hardware-accelerated rendering operation to perform through the pRenderKmArgs parameter. The display port driver of the DirectX graphics kernel subsystem (Dxgkrnl.sys) sets the pRenderKmArgs->pCommand member to point to a command buffer that contains an array of variable-size DXGK_RENDERKM_COMMAND structures. It also sets the pRenderKmArgs->pCommandLength member to the size of the command buffer, in bytes.
The driver must translate the input DXGK_RENDERKM_COMMAND command buffer into DMA buffer commands and build the patch location list.
DXGK_RENDERKM_COMMAND contains members that specify characteristics of GDI hardware-accelerated rendering operations, as described in the following table.
Rendering Operation | DXGK_RENDERKM_COMMAND Member | Corresponding DXGK_GDIARG_XXX Structure | Corresponding DXGK_RENDERKM_OPERATION Value |
---|---|---|---|
alpha blend |
AlphaBlend |
DXGK_GDIOP_ALPHABLEND = 3 |
|
bit-block transfer with no stretching |
BitBlt |
DXGK_GDIOP_BITBLT = 1 |
|
ClearType and antialiased text pixel blend |
ClearTypeBlend |
DXGK_GDIOP_CLEARTYPEBLEND = 7 |
|
color fill |
ColorFill |
DXGK_GDIOP_COLORFILL = 2 |
|
stretched bit-block transfer |
StretchBlt |
DXGK_GDIOP_STRETCHBLT = 4 |
|
bit-block transfer with transparency |
TransparentBlt |
DXGK_GDIOP_TRANSPARENTBLT = 6 |
The operating system uses the OpCode member of DXGK_RENDERKM_COMMAND to indicate the specific GDI hardware-accelerated rendering operation that the display miniport driver must process. The OpCode member is of type DXGK_RENDERKM_OPERATION, with values shown in the table.
The operating system will also supply the appropriate value of the DXGK_RENDERKM_COMMAND CommandSize member, which specifies the size of the current rendering command, in bytes, including the value of OpCode and the number of sub-rectangles in the command.
Further information about the capability of the display adapter to perform a bit-block transfer with transparency is provided in the D3DKM_TRANSPARENTBLTFLAGS structure contained in the DXGK_GDIARG_TRANSPARENTBLT->Flags member.