Windows Vista Rules for Enabling Windows Aero With Guidelines for Troubleshooting

『Windows Vista Rules for Enabling Windows Aero With Guidelines for Troubleshooting』の流し読みメモ.

Desktop Composition の基本条件

  • プライマリ・グラフィックス・アダプタが DirectX 9 をサポート
  • プライマリ・グラフィックス・アダプタがハードウェアで Pixel Shader 2.0 をサポート
  • Windows Vista Display Driver Model (WDDM) グラフィックス・ドライバで動作している
  • 色深度 32 bpp
  • プライマリ・モニタのリフレッシュレートが 10 Hz 以上
  • グループ・ポリシでコンポジションが有効になっている

自動適用条件

DWMは上記の 6 つの条件に加え,以下の条件が満たされていると自動的にコンポジションと透明感を有効にする.

  • OS が 512 MB 以上のシステムメモリを使用できる
  • モニタ設定に対して十分なグラフィックス・メモリ (後述)
  • モニタ設定に対して十分なパフォーマンス (後述)
      Opaque window borders Transparent window borders
  Total pixels Equivalent resolution Graphics memory threshold (MB) Performance threshold (MB/s) Graphics memory threshold (MB) Performance threshold (MB/s)
Single monitor 480,000 800×600 32 55 32 269
786,432 1024×768 32 89 32 363
1,310,720 1280×1024 32 146 64 500
1,764,000 1680×1050 64 196 128 60
1,920,000 1600×1200 64 213 128 641
2,280,000 1920×1200 64 255 128 724
Dual monitors 960,000 800×600 32 83 32 351
1,572,864 1024×768 64 135 64 477
2,621,440 1280×1024 64 223 128 665
1,764,000 1680×1050 128 299 128 812
3,840,000 1600×1200 128 325 128 860
4,608,000 1920×1200 128 390 256 976

表は内部計算式から求まる閾値を代表的な条件について示したもの.内部では計算式に基づいて判定するため,DWM 内に上記のようなテーブルがあるわけではない.
訳注) 不透明設定だと若干条件が緩和される.つまり,Windows Vista Standard UI は若干条件が緩い.特にバンド幅の条件緩和が大きい.

Aero Over Remote Desktop の条件

  • 両方のシステムで Windows Vista が動いている
  • ローカルシステムで Aero が有効 (訳注: ここで言う Aero が,DWM のことか Aero テーマのことかは不明)
  • リモートシステムが DWM の最小メモリ要求を満たしている.(訳注: システムメモリ,VRAM のand/or は不明.GDI Redirection を考えると,システムメモリのみか?)
  • リモートシステムが Enterprise または Ultimate SKU
  • 接続は一対一である必要がある.Desktop Composition は "multi-hop” シナリオをサポートしない.(訳注: 途中に中継 PC が入るとダメ?)

ユーザー設定

3 つの自動適用条件が満たされないが,6つの基本条件は満たされているとき,ユーザは明示的に Aero を有効化できる.

パフォーマンス測定

  • インストール後の初回起動で "Please wait while Windows checks your computer’s performance” と出ている間に WinSAT (Windows System Assessment Tool) が VRAM のバンド幅を測定している.
  • 測定されたバンド幅と VRAM サイズはレジストリに記録されている
    • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winsat\VideoMemoryBandwidth
      • 単位は MB / sec × 1000 ã‚’ DWORD で記録
      • 0 は測定時のエラー
    • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winsat\VideoMemorySize
      • 単位は byte.WDDM が返した VRAM 量 (いわゆるハードウェア VRAM と,システムメモリからグラフィックス専用に提供されているメモリ量の合計).WDDM の返すメモリの定義については『WDDM を通じたグラフィックス メモリの報告』参照のこと.
    • 6 つの基本条件が満たされている場合,ユーザーの手動設定が望めば必ず有効化される.
    • WinSAT のレジストリを変更して,DWM の振る舞いをテストできる.レジストリ変更後に DWM の再起動が必要.
    • コントロールパネルから WinSAT の全テスト (formal test) を再実行できる
      • 以下のコマンドで DWM 用のパフォーマンステストのみを実行できる "winsat dwm"

Composition が動的に抑制されるその他の条件

アプリケーションの振る舞いやユーザ設定がコンポジションの状態とユーザ・エクスペリエンス(訳注 : いわゆるテーマのこと)に影響を与えうる.

Event Effect on composition
アプリケーションが DirectX のプライマリサーフェイスをロックする サーフェイスがアンロックされるまで Compositionがオフになる.
アプリケーションが DirectX の排他モードに入る アプリケーションが排他モードから抜けるまで,Compositionはポーズされる.Compsotion がポーズしているとき,DWM はステートを失わない.
アプリケーションがミラーリング・ドライバを使用する (訳注 : 別のデバイスへのミラーリングなのか,左右の反転なのかは不明 ) アプリケーションが閉じられるまで Compositionがオフになる.
アプリケーションが意図的に DwmEnableComposition() Windows API を呼ぶ アプリケーションが再び Composition を有効化するか,アプリケーションが閉じられるまで,Composition がオフになる.このときユーザはアプリケーションが原因で Composition がオフになったという通知を受ける.
プロパティ(訳注 : の「互換性」タブ で Disable desktop composition オプションが有効化されたアプリケーションを実行する アプリケーションが閉じられるまで,Composition がオフになる.このときユーザはアプリケーションが原因で Composition がオフになったという通知を受ける.
ユーザがコンポジションを使用しないテーマや Appearance を選ぶ ユーザがコンポジションを使用するテーマや Appearance を再び選ぶまで Composition がオフになる.
ユーザがデスクトップの色深度を 32 bpp 以下に変更する ユーザが 32 bpp に戻すまで Compositionがオフになる.

(訳注 : 他にももっとある気がする.プライマリサーフェイスの Clipper を設定せずに BitBlt した場合や,プライマリサーフェイスからオフスクリーンサーフェイスへの拡大縮小転送でも Composition が無効化されることを確認している.あとはオーバーレイ周りか.)

Performance Issues That Cause the DWM to Scale Back

主要パフォーマンス値とシステム設定によって動的にユーザ・エクスペリエンスが変化.

Event Effect on user experience
解像度変更,より広いモニタ,追加モニタによって,先ほどのビデオメモリのバンド幅かグラフィックスメモリの閾値が満たされなくなった. 満たされなくなったパラメータに基づき,ウィンドウ合成または透明感が無効化される.システム設定が変更され,条件満たされるようになると,ウィンドウ合成または透明感は復元される.
ウィンドウを大量に開いて,DWM がウィンドウサーフェイスに利用可能なシステムメモリの 25% 以上が消費された. 「コンピュータのパフォーマンスが遅くなっていることを Windows が検知しました」という通知を受ける.ユーザが通知バルーンをクリックすると,ダイアログボックスが表示されより詳細な解決策が示される.内容は,今の配色を維持する (つまりウィンドウ合成はそのまま) か,Windows Vista Basic 配色に変更することができるというもの.
ウィンドウを大量に開いて,DWM がウィンドウサーフェイスに利用可能なシステムメモリの 30% 以上が消費された. ウィンドウ合成は自動的に無効化される.「配色が Windows Vista Basic に変更された」というバルーン通知が表示される.通知バルーンをクリックすると,詳細ヘルプが表示される.
ウィンドウ合成のフレームレートが一定期間フレーム落ちし続ける ウィンドウ合成をオフにするダイアログボックスが表示される.
バッテリ電源に切り替わり,かつ電源ポリシーが「省電力」である. ウィンドウ枠が不透明になる.バッテリ電源かつ電源ポリシーが「省電力」,という条件のどちらかが満たされなくなれば元の半透明表示に戻る.

以下は互換性タブや DwmEnableComposition API でデスクトップ合成をオフにしたときの通知.

以下は DWM のメモリ使用量がシステムメモリの 25% に到達したとき.

さらにこの通知バルーンをクリックしたとき.

以下は DWM のメモリ使用量がシステムメモリの 30% に到達し,自動的にデスクトップ合成がオフになったとき.

コンポジションと DirectX 排他モード.
DirectX の排他モード (フルスクリーンモード) はウィンドウシステムを停止することでスクリーンに直接描画する DirectX の機能である.排他モードでは 1 つのアプリケーションがモニタ全体の描画の責任を負う.排他モードはモニタごとに起きる.例として Windows Vista Media Center.パフォーマンスは排他モードの方がよい.
アプリケーションが 1 つ以上のモニタを排他モードに変更すると,DWM は休眠するが停止するわけではない.休眠状態でも,DWM はトップレベルウィンドウのサムネイルイメージといった状態をを維持している.
デュアルモニタ以上だと,占有されなかったモニタにウィンドウが表示されたままなので,ウィンドウ合成が行われないテーマに変化するところを見ることができる.言い換えれば,デスクトップ合成はすべてのモニタで同時に行われるか,一切行われないかの二択.

Troubleshooting Aero

(訳注 : 面倒なのでここはパス)
イベントログに DWM がログを残すことがあるのは知っておくといいかも?

Glossary

Aero
Aero とは,Windows Vista のネイティブ・カラースキームの名前で,以下の機能を含むもの.
  • Desktop composition
  • Transparent window borders
  • Flip 3D
  • Windows Flip
  • Task bar thumbnails

訳注) つまり Aero ⊃ Desktop Composition であって Aero = Desktop Compositionではない!