GDI Hardware Acceleration

公開:2012-02-14 20:27
更新:2020-02-15 04:37
カテゴリ:windows api,windowラッパーライブラリ,gdi,レイヤードウィンドウ,windows,c++

Graphics Guide for Windows 7の91-92ページにGDI Hardware Accelerationというセクションがあり、WDDM1.1ドライバの必須要件が書いてあった。引用しつつ訳してみる。

WDDM v1.1 ドライバは次の2D操作を高速化しなければならない

  • BitBlt
  • ColorFill
  • StretchBlt
  • AlphaBlend
  • Cleartype font support
  • TransparentBlt

WDDM v1.1 ドライバは次のROP操作をサポートしなければならない。

BitBltのためのROP

  • DXGK_GDIROP_SRCCOPY = 1 (Dst = Src)
  • DXGK_GDIROP_SRCINVERT = 2 (Dst = Dst ^ Src)
  • DXGK_GDIROP_SRCAND = 3 (Dst = Dst & Src)
  • DXGK_GDIROP_SRCOR = 4 (Dst = Dst | Src)
  • DXGK_GDIROP_ROP3 = 5 (The high word contains the GDI Rop3 code)

ColorFillのためのROP

  • DXGK_GDIROPCF_PATCOPY = 1 (Dst = Color)
  • DXGK_GDIROPCF_PATINVERT = 2 (Dst = Dst ^ Color)
  • DXGK_GDIROPCF_PDXN = 3 (Dst = ~(Color ^ Dst) )
  • DXGK_GDIROPCF_DSTINVERT = 4 (Dst = ~Dst)
  • DXGK_GDIROPCF_PATAND = 5 (Dst = Dst & Color)
  • DXGK_GDIROPCF_PATOR = 6 (Dst = Dst | Color)
  • DXGK_GDIROPCF_ROP3 = 7 (The high word contains the GDI Rop3 code.)

その他要件

  • 8K x 8K テクスチャサイズのサポート
  • 線形ヒープのサポート

引用はここまで。

Windows7のGDIアクセラレーションは局所的で主に画面転送・カラーフィル関連のみに限られる。だけどVistaに比べるとかなり高速化されたのはなんとなくわかる。

AlphaBlendはHWアクセラレーションが効くとするとレイヤードウィンドウの半透明処理や透過処理はアクセラレーションされそうな感じだね。

Cleartypeもアクセラレーションされるのだな。

ただこのアクセラレーションはWDDM 1.1ドライバの要件なので、Windows7の要件ではないことに注意しないといけない。たとえWindows7でもWDDM1.0ドライバやXDDMドライバでは当然このアクセラレーションは働かない。