問題タブ [surfaceflinger]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - dumpsys SurfaceFlinger の出力解釈
最近、dumpsys SurfaceFlinger
Android グラフィックスに関する情報を収集するために使い始めました。私は現在、Odroid-XU3 という開発ボードに取り組んでいます。ディスプレイは、HDMI ケーブルを介してボードに接続されている Dell モニターです。
上記のコマンドの出力の最後の数行には、2 つのディスプレイが表示されていますが、1 つしか表示されないはずです。そのうちDisplay[0]
の 1 つは で、もう 1 つはDisplay[1]
です。各表示のtype
列はHWC
またはGLES
です。HWC または GLES の両方である場合もあれば、一方が HWC で他方が GLES である場合もあります。
Display[0] と Display[1] の違いは何ですか? 前述のコマンドの出力を解釈する方法を理解するためのドキュメントを見つけようとしましたが、有用なものは見つかりませんでした。
android - valgrind で surfaceflinger を実行するには?
メモリ破損の問題をデバッグしていて、SF が無効なメモリにアクセスしているかどうかを確認したいのですが、コマンド ラインを使用して SF を起動する方法がわかりません。助けてください。
android - Systrace 出力にグラフィックス/surfaceflinger イベントが表示されない
systrace を実行できますが、SurfaceFlinger のトレースを表示できません。GPU、bufferQueues など。
次のコマンドを実行しました: systrace.py --time=10 -o mynewtrace.html sched gfx view wm hal video workq
CPU0、workqueues、irqs、kworkerなどの出力のみを提供します。
カーネルのコンパイル中に有効にする必要がある特定のトレーサーはありますか? 他に何か不足していますか?
ありがとう!
android - ビデオ再生でのフレーム ドロップの問題
ビデオの再生でフレーム ドロップの問題が発生しています。ICS から KK4.4 に移行しました。ビデオは非常に小さい 320x240 解像度です。物事を簡単にするためのオーディオはありません。
Systrace は次の場所にあります: https://www.dropbox.com/s/bee6xymg3kpn4ft/mytrace2.html?dl=0
トリプル バッファリングを有効にしましたが、hwcomposer が SurfaceFlinger に対して偽の vsync を生成しています。
次の問題が見られます。
videodecoder が 7 つのバッファ キューを割り当てるため、トリプル バッファリングが適切に有効化されていません。TimedEventQueue(OnVideoEvent) からキューに入れられる各フレームに対してトリプル バッファリングが正常に機能していた場合、キューから取り出されるバッファは 2 スロット遅れているはずです。例: buf 4 をキューに入れると、buf 2 をデキューする必要がありますが、デキューされるのは直前のバッファであり、Surfaceflinger は次回実行する機会を得たときにのみ解放されます。したがって、遅延により、ビデオのキャンセルバッファが追いつくことになります。
SurfaceFlinger 自体が完了するまでに時間がかかります。
30 fps ビデオの場合、33 ミリ秒ごとなど、適切なタイミングで Vsync がオンにならない。HWComposer の vsync 生成ロジックに関する問題、または実際のバッファーがキューに入れられていないため、eventControl によって vsync が有効にされていませんか?
私が行った以下のコメントからの更新: 私が指摘したその他のことは、async フラグと mDequeueBufferCannotBlock フラグが両方とも false であるため、getMinUndequeuedBufferCount() が 1 を返すため、2 スロット遅れたバッファーではなく、直前のバッファーがデキューを要求されていることがわかります。 . 上記の理解に穴がある場合はお知らせください。そして、これを回避するために私ができることは何でも
どんな助けでも大歓迎です。
android - Android Surfaceflinger - 機能へのアクセス方法
Android 5.0.1 (Galaxy S4 i9505 Imperium rom): HW レイヤーのサイズを変更するか、各 HW レイヤーにアクセスしてビットマップとして保存するか、別のサーフェス (JAVA から開始) に表示することを目的として、SurfaceFlinger のさまざまな機能にアクセスしようとしています。 )、しかし Android Studio (1.3、gradle 2.5) は **** への「未定義の参照」を報告するだけです。
オンラインで見つけたAndroid.mkに記載されている共有ライブラリをプルしました.pixelflinger、cutils、log、dl、hardware、hardware_legacy、utils、GLESv1、GLESv2、binder、ui、gui、powermanager、c、skiaです。
誰でも助けることができますか?