問題タブ [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.

0 投票する
0 に答える
499 参照

android - SDLでfb1の内容を画面に描画する

私は、2 つのコンポジターを 2 つの異なるフレーム バッファーに描画する Android アプリの互換性プロジェクトに取り組んでいます。メイン コンポジター (リップスティック、ウェイランド コンポジター) は fb0 に描画されます。/dev/graphics/fb0 が fb1 を指している fb スワップの後、Surfaceflinger は fb1 に描画します。おそらくSDLを使用して、fb1のコンテンツを取得して画面に描画するアプリケーションを作成したいと思います。しかし、これがどのように行われるのかわかりません。

0 投票する
2 に答える
2010 参照

android - デバイスが静止しているときに触れたときの Android アニメーションのパフォーマンス低下

私のアプリは、フレームごとにいくつかの非常に単純なビュー (回転、平行移動) のプロパティを変更します。Android のパフォーマンスに関する記事でアドバイスされているように、systrace を使用して、フレームがドロップしているかどうかを確認しました。

本当に予想外のことが起きました。デバイスが静止しているとき (画面に触れていても)、CPU 使用率が高くなり、systrace でアラートが発生し、GPU レンダリング プロファイラーの赤い部分が長くなりました。デバイスを非常に速く回転させたり振ったりすると、すべて問題ありませんでした。

以下、結果のリンクです。Shakeデバイスを非常に速く回転させたno_shakeとき、机の上に置いたままにしたときです。

ソース コードという 1 つの翻訳アニメーションを使用する、非常に単純なテスト アプリを作成しました。

Systrace:揺れない揺れる

CPU使用率: ここに画像の説明を入力

GPU プロファイラー: ここに画像の説明を入力

フレームレートがスムーズなシェイク systrace を見ると、HW_VSYNC_0 および HW_VSYNC_ON_0 ラインにデータがないのはなぜですか? CPU 周波数を読み取るにはどうすればよいですか (トレースをキャプチャするときにオプションを有効にしました)。

この問題に関して、私の理論では、デバイスが CPU 周波数を下げている可能性があります。systrace でこれを読み取るにはどうすればよいですか? この仮説をテストするためにサードパーティのアプリを使用しましたが、以下に示すように真実です。では、この問題を回避するにはどうすればよいでしょうか。

ここに画像の説明を入力

デバイスがこれを行う理由は何ですか? 最初は、デバイスが加速度計のデータを使用して使用されていないかどうかを理解し、CPU 周波数を下げたと思いました。しかし、CPU 周波数を上げるには、デバイスを激しく振る必要があります。通常の人のようにそれを保持しても、CPU 周波数は増加しません。

たくさんの質問があることは承知していますが、Android グラフィックス パイプラインに関する関連記事をすべて読んだので、アイデアがありません。

この問題は、Android 5.1 を実行している Sony Xperia Z3 で発生しました。この問題は、Android 6 を実行している Nexus 5 では再現できませんでした。

アップデート

パフォーマンスの問題は、CPU/GPU スロットリングが原因のようです。同じデバイスの Xperia Z3 で Android 4.4 を実行すると、クロック速度は低下しますが、Systrace によるとパフォーマンスが向上します。また、振っても速度が上がりません。

CPU 速度を上げるために必要なシェイク ジェスチャに関しては、デバイスを縦向きから横向きに、またはその逆に回転させようとすると、(アプリの向きが変わらなくても) CPU クロックが増加することに気付きました。したがって、このジェスチャーが監視される理由は、考えられる向きの変更を高速化するためだと思います。

0 投票する
0 に答える
319 参照

android - surfaceflinger の gid を変更するための Android init.rc のステートメント

Android ファイルシステムでは、init.rc スクリプトに、以下のように surfaceflinger のユーザーとグループを変更または追加するステートメントがあります。

ところで興味深いのは、ユーザーはシステムですが、グループにはシステムがないということです。上記のスクリプトのように、グループにはグラフィックスと drmrpc しかありません。

システムグループが設定されていないのはなぜですか?

何らかの理由でシステムグループを設定した場合。それは何かを妥協しますか?

0 投票する
1 に答える
458 参照

android - ビデオがAndroidプラットフォームで再生されているかどうかを検出する方法は?

一部のビデオが Android プラットフォームで再生されているかどうかを知るための API またはメソッドはありますか?

ビデオがフォアグラウンドで再生されているときに、バックグラウンド ジョブを停止したいと考えています。

API またはメソッドは、surfaceflinger、ウィンドウ マネージャー サービスなどのフレームワーク モジュールから取得したほうがよいでしょう。

ありがとう。

0 投票する
0 に答える
808 参照

android - Android Surface Flinger テスト プログラム: サイズ変更

aosp(marshmallow - 6.0.1) フォルダー "frameworks/native/services/surfaceflinger/tests/resize" で SurfaceFlinger テスト プログラムをコンパイル (mm) すると "resize" になります。

次のエラーが表示されます。

助けて。

0 投票する
1 に答える
132 参照

android - Layer::drawWithOpenGL が呼び出されないのはなぜですか?

Android レンダリング コードをもう少し理解しようとしています。そこで、SurfaceFlinger の一部である Layer::drawWithOpenGL() 関数にログを追加します。しかし、それは決して呼び出されないようです。なぜこれが当てはまるのか、誰かが光を当てることができますか?

ありがとう。

0 投票する
0 に答える
1740 参照

android - Android x86 Nougat の仮想フレーム バッファで使用するバッファ メモリを割り当てると、SurfaceFlinger/gralloc メモリ不足エラーが発生する

Android x86 Nougat (Android v7.1) プロジェクトのフォークをカスタマイズしています。私たちのシステムにはビデオ ディスプレイ ハードウェアがないため、仮想フレーム バッファ (VFB) をセットアップして、カスタムの方法でビデオ ディスプレイを処理できるようにします (たとえば、VNC サーバーを介してビデオ ディスプレイをルーティングするなど)。

システムが起動すると、SurfaceError が初期化を試み、graloc を使用してメモリを割り当てようとすると失敗します。以下は、logcat の抜粋です。

完全なログへのリンクは次のとおりです。

初期化ログ (dmesg): http://pastebin.com/sr1rAK43

Logcat: http://pastebin.com/SVYhvgu5

物事を実行するために行ったこと:

  1. kernel/arch/x86/configs/android-x86_defconfig でオプションを設定します: CONFIG_FB_VIRTUAL を VFB モジュール モードの M に設定します</p>

  2. kernel/drivers/video/fbdev/vfb.c で、フレーム バッファ サイズを最大 64MB に更新: #define VIDEOMEMSIZE (64*1024*1024) </p>

  3. device/generic/common/init.sh で、VFB を開始し、UVESA フレーム バッファリングを無効にします。

関数 do_init()

# init_hal_gralloc

modprobe vfb vfb_enable=1 </p>

そして、「return 0」の前のファイルの終わりにある同じ init.sh で:

/system/bin/fbset 360 480 20 </p>

知りたい:

1) メモリ不足エラーを解決するにはどうすればよいですか?


2) カーネル コマンド ラインから vfb を有効にする方法を教えてください。</p>

3) Android 7.x のカーネル 4.4 で VFB を動作させるために見逃した可能性のある構成/セットアップ