2012-05-09 7 views
0

私はthis approachを使って、私のOpenGLアプリケーションの背景を透明にしました(Compizと共同で)。透過OpenGL FBバックグラウンドでXorgのCPU負荷が増加しますか?

これは完璧に機能しますが、私が認識していた事実が1つあります。アプリケーションが透明なウィンドウを開くと(OpenGLの描画があっても)XorgプロセスのCPU負荷は〜30%まで増加します。

誰でもこの動作を説明できますか?私はこのアプローチでXserverがバイパスされ、すべての処理がグラフィックスカードによって行われると考えていましたか?

+0

コンポジタを無効にすると何か変わりますか? – genpfault

+1

コンポジターを無効にすると、エフェクトがまったく機能しません。組み込みの組み込みサポートでメタデータを使用しようとしていましたが、そのパフォーマンスは恐ろしいものです。しかし、私はこの現象が引き起こされている理由のいくつかの兆候を発見したと思う。私のOpenGLアプリケーションはハドアニメーションで、私はフルスピードで描画していました(タイマーやスリープがなかったので最大fps)。アニメが20msecごとに更新されれば十分ですので、更新速度を制限するためにusleepを追加しました。今、私のアプリケーションを起動すると、XorgのCPU負荷は影響を受けません! – chrisg

答えて

0

誰でもこの動作を説明できますか?私はこのアプローチでXserverがバイパスされ、すべての処理がグラフィックスカードによって行われると考えていましたか?

Xサーバは迂回されず、他の部分だけが使用されます。合成の問題は、ウィンドウの内容がXサーバが管理するX描画可能ファイル(ピックスマップ)として表現されていることです。それを合成するために、Xサーバはコンポジタによって要求されたテクスチャへの転送を実行しなければならない。これにより、管理上のオーバーヘッドが発生し、パフォーマンスが低下する可能性があります。

また、ほとんどのコンポジターのコードは恐ろしいです(Compiz/Metacity/KWinを書いた人のように、OpenGLとGPUの仕組みはまったく分かりません)。これは私がTODOのリストに書いているプロジェクトの1つです。(それはローボトム化されていません。

+0

あなたの応答をありがとう、これは動作の適切な画像を追加します。私はまだmetacityのコードを見ていませんでしたが、OpelGlのスキルに関してあなたが何を述べているのかは本当らしいでしょう。あなたのコンポーザーバージョンに進歩があるなら、あなたが私を更新し続けると、私はとても幸せになれます! mucからの挨拶! [email protected] – chrisg

関連する問題