Direct3D Driver Model (2)

前回(id:NyaRuRu:20050820:p1)は DDK のヘルプからみた現在の Direct3D Driver Model の一側面を紹介しました.ここからはいよいよ Direct3D Driver Model の今後について見ていこうと思います.
Longhorn 改め Windows Vista では,新たに2つの3Dグラフィックス標準が登場します.これらは Windows Graphics Foundation (WGF) 1.0 と 2.0 と呼ばれ,次のような特徴を持っています.

  1. DirectX 9.0c に GUI 用の機能を追加した DirectX 9.L こと WGF 1.0
  2. 次世代 3D Graphics 用に API セットを再デザインした DirectX 10 こと WGF 2.0

このうち前者の WGF 1.0 については既にかなりの情報が公開されつつあります.それもそのはずで,Windows Vista の新しい UI エンジンである Aero Glass は WGF 1.0 使用時をターゲットに開発されており,来年とされているリリース時期に向けて既に仕様が fix していなければ間に合わないところまで来ているのです*1
以下に WGF 1.0 についての主な公開資料を示します.

手っ取り早く雰囲気を掴みたい人はGraphics Hardware and Drivers for Windows "Longhorn"の Aero/Aero Glass 必要スペックの項を読んでみると良いでしょう.案外と必要スペックだけからでも Aero/Aero Glass の実装が読めてきます*3
また,WGF 1.0 で開発者としてどのような機能が使えるようになるかについては,DirectX Graphics Reference for Longhorn を見てみるのが一番でしょう.個人的に注目している点について挙げてみると,まずテキスト描画関係から.

//windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/Beta_1_DirectX_Vista_Update.asp?frame=true#One_Bit_Surfaces">One Bit Surfaces:フォントデータ格納用テクスチャのVRAM消費を極限まで削減します.
//windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/idirect3ddevice9ex_composerect.asp">IDirect3DDevice9Ex::ComposeRect:文字描画用 blit が追加.
//windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/IDirect3DDevice9Ex_SetConvolutionMonoKernel.asp?frame=true">IDirect3DDevice9Ex::SetConvolutionMonoKernel:上記 API でのフィルタ用 Convolution Kernel を設定.

ついでに,FPS 制御周りでこの辺りでしょうか.

//windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/IDirect3DDevice9Ex_SetMaximumFrameLatency.asp?frame=true">IDirect3DDevice9Ex::SetMaximumFrameLatency:(id:NyaRuRu:20050329:p1)などでさんざん言及してきた最大3フレーム遅延がいよいよ制御可能に.
//windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/IDirect3DDevice9Ex_WaitForVBlank.asp?frame=true">IDirect3DDevice9Ex::WaitForVBlank:垂直同期を効率的に (低CPU負荷で) 待機.

最後に Windows Driver Kit (WDK) ですが,User-Mode Display Driver や Threading and Synchronization Model についての情報が載っています.これらについては一般のプログラマからはブラックボックスのため,WDK 以外にはほとんど情報がありません.ある意味非常に貴重な情報源と言えます.
次回は WGF 1.0 の個々の改良点について具体的に見ていきましょう.


以下トラックバック先一覧.
http://masafumi.cocolog-nifty.com/masafumis_diary/2005/08/wgf_10_83dd.html
http://www.divakk.co.jp/blog/aoyagi/archive/2005/08/24/6996.aspx
http://www.ailight.jp/blog/sha256/archive/2005/08/28/9430.aspx

*1:実際 NVIDIA は WGF 1.0 対応と言われる GeForce 7800 GT を既にリリースしていますね.

*2:中でも /WinDDK/5112/help/display_r.chm の "Windows Codename Longhorn Display Driver Model Reference" と /WinDDK/5112/help/display_m.chm 内の "Windows Codename Longhorn Display Driver Model"

*3:インサイドMicrosoft Windows (上)を読んだ直後だけに,Fence コマンドと CPU 割り込みあたりはかなり興味深いですね