Hatena::ブログ(Diary)

NyaRuRuの日記 RSSフィード

archive

2008-07-01

Windows 7 と GDI/GDI+ の GPU アクセラレーションの可能性

PDC 08 アジェンダに対する各地の反応

いやまあ私もその辺の話は全然知らないのですが.

ちなみに DWM や WPF といった技術・製品は DirectX チームの管轄ではないので,MVP Summit 等ではなかなか情報が集まりにくかったりします.まあ落ち着いて考えてみればそんなものでしょうけど.おすすめの情報源については後ほど.

GDI/GDI+ の GPU アクセラレーションは可能か?

んでまあ GDI/GDI+ が Direct3D で有効にアクセラレーション出来るかどうかですが,個人的には「やれば出来るかもしれないけど,それ意味あんの?」という印象です.つまり実装が難しい云々という話ではなくて,そもそも有効な場面があまり思い付かない,という根本的なところが気になります.

現在のメジャーな Web ブラウザや Flash (10 より前) / Silverlight の描画方式を思い出しましょう.近年のブラウザや Flash/Silverlight は,多くのアプリケーションシナリオをこなすのに十分なグラフィックス性能を得たように思うのですが,それが実は CPU 描画であるという点について皆様いかがお考えでしょうか?

Web ブラウザや Flash は,Windows Vista 登場以前から,クライアント領域全体のイメージをソフトウェアで描画していました.描画処理は CPU - メインメモリ間で完結しており,当然ながらグラフィックス性能は CPU クロックに比例します.VRAM 転送が発生するのは,クライアント領域の内容が完成し,実際に画面に表示する最後の部分だけです.

GPU 描画という響きに漠然と期待を持っている人は,『Flash Player 10 の GPU サポート機能について - akihiro kamijo』という記事がおすすめです*1

GPU による GDI/GDI+ のアクセラレーションは,可能だとしても効果があるかよく分からない.そう認識しておいた方が,現物を見たときに変ながっかり感を受けずに済むかもしれません.仮に GPU による GDI/GDI+ の描画支援が導入されたとしても,従来から完全ソフトウェア描画を行っていたソフトウェア (しかしユーザにその見分けはつかないでしょう) には何の影響もありませんし,GDI/GDI+ アプリケーションなら必ず高速化すると約束できるほど世の中甘くもないでしょう.私はそういう認識です.

とはいえ,PDC 2008 で紹介すると言っているので,Microsoft は何らかの活用法は見つけたのでしょう.個人的には,割と枝葉末節なチューニングなんじゃないかなぁと予想しています.例えば ClearType 描画のフォントキャッシュ生成に GPU を活用するとか,投機的なレンダリング (CPU と GPU で同時に描画を行って,描画結果の読み出しが発生したら GPU 描画をキャンセル) とか.もちろん,私が見落としている何かすごい応用方法があるのかもしれません,

(追記: 以下の動画再生支援の可能性についてはコメント欄も参照のこと)

ちなみに,GPU の活用法として真っ先に考慮・評価されるべきは,動画のデコードでしょう.こればっかりは,サーバサイドだけに任せてしまうわけには行きません.通信路のデータ流量を減らす必要があるため,圧縮は不可避であり,クライアントサイドで働く何かが必要です.GPU による動画再生支援はだいぶ一般的になってきたかと思いますが,普及率・効率ともにまだまだ伸びしろはあると思っています.みんなムービー好きですしね.

おすすめの情報源

次世代 Windows のアーキテクチャに関する情報は,WinHEC で集めるのが一番です.と思ったら,今年の WinHEC は PDC 2008 の翌月なんですね.となれば PDC で情報を解禁して,本当にその情報を必要としている開発者向けには WinHEC 2008 で説明,という流れなのかもしれません.

あとは,DWM のときのように Greg Schechter 氏の blog もチェックという感じでしょうか.PDC から WinHEC にかけて何か動きがあるかもしれませんね.

過去の関連記事

hito_hpphito_hpp 2008/07/01 17:45 動画のデコードにGPUというのは、現時点では、まったく現実的ではないんです。
有名なH.264ですが、AMDにしろnVidiaにしろ、GPU支援のデコーダがとても貧弱で、使い物にならないのです。
貧弱というのは、例えばBフレームを何枚以上連続して使ったらデコードできないとか、Bフレームを参照したらデコードできないとか。
方や、もっとも使われているffmpegのH.264デコーダは、最近のCPUであれば、1080pで60fpsのH.264をリアルタイムにデコードできます。
動画のデコードにGPU支援というのは、今後も一般的になるとは思いません。

そもそも、肝心のGPU支援が必要なほど遅いCPUを使っている人は、GPUも貧弱であることが多いですし。

NyaRuRuNyaRuRu 2008/07/01 19:01 >>hito_hppさん

なるほど.動画再生支援に関してはメディアの発表を鵜呑みにしすぎてました.やはり手元に対応ハードウェアを置いてちゃんと実測しないとだめですね.反省.

しかし,となるとますます GPU はいらない子っぽいですねぇ.
CPU が 1080p×60fps のフィルレートを捌くことができるのに,Vista の GDI/GDI+ が遅いのは CPU 描画だからでみんな納得しちゃうという変な時代なんですな.
WDDM 使用時のソフトウェア GDI ドライバのチューニングの方が,効果としては期待できそうな気がします.

kosakikosaki 2008/07/01 19:06 キイハナですが。
MPEG2の時代はデジタルTVがメインターゲットだったのでGPU的なゴリゴリハードでも一定のフレームレートで再生する事が保障されるよう、エンコーディング技法が注意深く取捨選択されましたが、そのご各種フォーマットの軍拡競争が始まり、かつ、パソコンがメインターゲットになったのでビットフレーム保障の概念は忘却のかなたへと消えていきましたとさ。合掌。
ワンセグがどのメーカの携帯でも処理落ちしないのは中の人の涙ぐましい苦労があるのであって(H264はやろうと思えば嫌がらせのようにデコードが困難なエンコードが出来るから)、どこかでエンコーダーとデコーダーとで紳士協定が成立しないと難しいんじゃないかな。とかとか

っきっき 2008/07/01 20:04 >近年のブラウザや Flash/Silverlight は,多くのアプリケーションシナリオをこなすのに十分なグラフィックス性能を得たように思うのですが,それが実は CPU 描画であるという点について皆様いかがお考えでしょうか?

趣味で Silverlight をいじってる素人ですが、上記の件について2つ程疑問を持っています。

1.もし、Silverlight 2 で DRMな動画コンテンツを再生する描画モードが、通常の動画再生と完全に同一のモードであれば、再生中の映像をスクリーンキャプチャし放題になってしまうのですが、コンテンツの権利者はそれで納得できるのでしょうか?

2.現状のSilverlightは、GPUの種類に依存しないレンダリングにこだわってるように見受けられるのですが、Silverlight for Mobile でもその方針を貫いて、描画方面でH/Wアクセラレーションの類を一切使わないつもりなのでしょうか? 全ての環境でレンダリング結果がピクセルレベルで完全に同一である事を目指し続けるのであれば、モバイル環境のパフォーマンスが、Silverlightのリミッターになってしまうのではないか?という考えは杞憂でしょうか?

個人的には、OpenGL ES の範囲内でいいから3DなAPIが追加されて、レンダリング結果がGPU依存でも構わないから文字のぼかし影がつけられたらいいなあと期待しています。

NyaRuRuNyaRuRu 2008/07/01 21:39 >>kosaki さん
ちらっと H.264 の解説読んでみたんですが,確かに破壊力抜群ですなこれ.
「とりあえずブラウザとメールが使えて動画が見られればいい」とのたまう一般消費者が,一番ヘビーなアプリケーションを使っている罠ですか.

>>っき さん
>1
すみません,DRM 関係の話は全然詳しくないのです.ただ,動画再生に関しては通常デコーダに投げているはずで,そのデコーダが内部で保護されたドライバやビデオカードの専用機能を利用するというケースはあるかと思います.今回の話は GDI/GDI+ との対比のつもりだったので,動画の話を出したのは混乱の元でしたね.(GDI/GDI+ に動画を扱う API はありません)
>2
Silverlight が,レンダリング結果の再現性のみを理由に CPU 描画を行っているかというと,そうでもない気がします.私も直接聞いたわけではないですが,セキュリティ,安定性,移植性,開発コスト等々,色々ポイントは思い付きますし,とりあえずそこは単に保守的と思っておけば良いんでないかと.
モバイル環境のパフォーマンスですが,OpenGL ES や Direct3D Mobile を使ったとしても,速くなるケースとそうでないケースがあるように思います.モバイル環境向けの 2D ハードウェアアクセラレーションということであれば,OpenVG というのがありますね.
http://d.hatena.ne.jp/NyaRuRu/20070118/p2
あんまり業界に詳しくないので,OpenVG が流行るかどうかは正直よく分からないのですが,年内に AMD が Z180 というチップを出すとかいう話があるようです.ぼかし影についても,OpenVG にコンボリューションフィルタの機能が入っています.AMD Z180 なら,正直な形でアクセラレートされるかもしれません.
http://www.khronos.org/files/openvg_1_0_1.pdf#Page=145
今後 Flash の下回りが OpenVG に移行する可能性があるとして,Microsoft がどうするつもりかは確かに気になるところですね.

っきっき 2008/07/01 22:57 CPU描画がメインのSilverlightでも、DRMのためにセキュアなパスを使う動画部分と、UI等のそれ以外の部分の合成はGPUの仕事になるのでは?と思ったのですが、元々はGDI/GDI+の話でしたね。ムービー大好きなのでつい暴走してしまいました。すみません。

OpenVGやZ180についてはこれから調べてみます。
ありがとうございました。m(__)m

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証