Спецификация операций рендеринга с аппаратным ускорением GDI

Когда вызывается функция DxgkDdiRenderKm, операционная система задает тип операции рендеринга с аппаратным ускорением GDI через параметр pRenderKmArgs. Драйвер порта отображения подсистемы графического ядра DirectX (Dxgkrnl.sys) задает элемент pRenderKmArgs-pCommand>, указывающий на буфер команд, содержащий массив структур переменной размера DXGK_RENDERKM_COMMAND. Он также устанавливает поле pRenderKmArgs->pCommandLength в соответствии с размером буфера команд в байтах.

Драйвер должен преобразовать входной командный буфер DXGK_RENDERKM_COMMAND в команды буфера DMA и создать список расположений исправлений.

DXGK_RENDERKM_COMMAND содержит элементы, которые указывают характеристики операций отрисовки с аппаратным ускорением GDI, как описано в следующей таблице.

Операция отрисовки Член DXGK_RENDERKM_COMMAND Соответствующая структура DXGK_GDIARG_XXX Соответствующее значение DXGK_RENDERKM_OPERATION

альфа-смесь

AlphaBlend

DXGK_GDIARG_ALPHABLEND

DXGK_GDIOP_ALPHABLEND = 3

передача бит-блоков без растяжения

BitBlt

DXGK_GDIARG_BITBLT

DXGK_GDIOP_BITBLT = 1

ClearType и антиализасное сочетание пикселей текста

ClearTypeBlend

DXGK_GDIARG_CLEARTYPEBLEND

DXGK_GDIOP_CLEARTYPEBLEND = 7

цветовая заливка

ColorFill

DXGK_GDIARG_COLORFILL

DXGK_GDIOP_COLORFILL = 2

Передача растянутого битового блока

StretchBlt

DXGK_GDIARG_STRETCHBLT

DXGK_GDIOP_STRETCHBLT = 4

Передача бит-блоков с прозрачностью

TransparentBlt

DXGK_GDIARG_TRANSPARENTBLT

DXGK_GDIOP_TRANSPARENTBLT = 6

Операционная система использует элемент OpCode DXGK_RENDERKM_COMMAND, чтобы указать определенную операцию отрисовки с аппаратным ускорением GDI, которую должен обрабатывать драйвер мини-порта отображения. Элемент OpCode имеет тип DXGK_RENDERKM_OPERATION со значениями, отображаемыми в таблице.

Операционная система также предоставит соответствующее значение элемента commandSize DXGK_RENDERKM_COMMAND, указывающего размер текущей команды отрисовки в байтах, включая значение OpCode и количество вложенных прямоугольников в команде.

Дополнительные сведения о возможности адаптера отображения для выполнения передачи битовых блоков с прозрачностью предоставляются в структуре D3DKM_TRANSPARENTBLTFLAGS, содержащейся в элементе DXGK_GDIARG_TRANSPARENTBLT-Flags>.