先日、Netflixで映画をChrome Retina MacBook Proで見ていると、通常の1つのタブでビデオを見ているだけで、ファンがすばやくスピンアップすることに気づきました。ウィンドウ。(つまり、フルスクリーンではありません。)
フルスクリーンモードに切り替えると、1分ほどでファンが停止します。
そこで、バッテリーモニターアプリを使用して、両方のモードで視聴しながらmAhを測定し、ウィンドウモードで約85 mAh、フルスクリーンモードで約50mAhを測定しました。
私はまだ他のブラウザでテストしていません。
アクティビティモニターは、タブでNetflixを開くだけでディスクリートカードが起動することを報告しているので、統合グラフィックスとディスクリートグラフィックスの問題ではないと思います。
より広い表示領域と(理論的には)より高品質のビデオストリームが少ないシステムリソースを使用する理由を判断できないようです。
それはほぼ間違いなくデスクトップウィンドウコンポジターと関係があります。
プラグインで、Webブラウザーのウィンドウ内でビデオを再生している場合、さらに悪いことに、Webブラウザーはそのページを次のようにレンダリングする必要があります。
Flash(またはSilverlight)にビデオをフルスクリーンで再生するように指示すると、FlashはChromeに何かをレンダリングするように指示しなくなります。実際、コンポジットウィンドウマネージャー全体を一時的に無効にすることができます。グラフィックのモニターへのレンダリングを担当する可能性のある他のすべてのプログラムは、一時的にレンダリングを停止するように指示されます(または、描画コマンドの送信は許可されますが、画面には実際には影響しません)。
フルスクリーンではない場合のグラフィックスパイプライン:
ブラウザとFlash/Silverlight->コンポジットウィンドウマネージャ->グラフィックハードウェア
フルスクリーン時のグラフィックスパイプライン:
Flash/Silverlight->グラフィックハードウェア
この簡略化されたパイプラインは、実行中のバッファーの「コピー」が少なくなるため、オーバーヘッドを削減し、ビデオ処理全体は次のようになります。
コンポジットウィンドウマネージャーが常に「OK、今のビデオはどのように見えますか?」と言っているので、ビデオがウィンドウ処理されると、ファンが回転し、より多くの電力が消費されます。そして、合成ウィンドウマネージャーがグラフィックカードに書き戻すことを決定する前に、readをCPUに戻す(そしておそらくRAMにバッファリングする)必要があります。他のすべての合成データ(ブラウザー、タスクバーなど)
コンポジットウィンドウマネージャーは、ビデオコンテンツをCPUに転送するように要求し続ける必要があります。これは、通常の状況では、システム上で直接を書き込むことができる唯一のプロセスビデオフレームバッファへisコンポジットウィンドウマネージャ。ブラウザ、ビデオプレーヤー、およびシステム上の他のすべてのコンポーネントは、ハードウェアとユーザースペースの間にあるゲートキーパーやスポークスパーソンなどのコンポジットウィンドウマネージャーを経由する必要があります。
これは、一部は「効果」を有効にするためであり、一部はセキュリティと安定性の理由からです。これは、プログラムがデスクトップを直接破損することができないためです(悪意を持ってまたは不適切なコーディングによって)。コンポジットウィンドウマネージャーはそれを許可しません。しかし、その後、コンポジットウィンドウマネージャーが無効になると(FlashやSilverlightなどの特権プログラムの要求により)、突然、その余分な「オーバーヘッド」の層がなくなります。
Mac OS Xで使用されるコンポジットウィンドウマネージャーは Quartz Compositor と呼ばれ、長い間OSXの一部でした。Quartz Extremeは、Quartzコンポジターの最新の化身であり、GPU自体で上記のすべてを実行します(ただし、これらの操作は、GPU自体で「無料」ではありません) GPUにオフロードされます。GPUはこれらの合成手順を実行するために電力を消費します。)
プログラム(FlashやSilverlightなど)がフルスクリーン制御を取得してQuartz Compositorを一時的に無効にする方法の開発者の視点については、 this Apple development doc 。
短編小説:Quartz Compositor +非常に頻繁な画面更新(ビデオで1秒間に30〜60回)==高いCPU使用率。 Quartz Compositorコンポーネントをパイプラインから削除すると、CPU使用率が劇的に低下します。特に、FlashとSilverlightにはハードウェアアクセラレーションによるビデオレンダリングとビデオデコードがあるためです。