Hi,
新しいLCDをimx7d DIY開発ボードに移植しています。
kernel: 4.14
android: 9
画面サイズは320x240、物理形式はRGB565です。そして、私は非常に奇妙な問題を抱えています。メイン画面と一部のAndroidアプリケーションは正しく表示できます。ただし、一部のAndroidアプリケーションは更新されません。
さらにデバッグを行うと、FbDisplay.cppで見つけることができます。updateScreen() 関数のレポートバッファ形式はRGBA8888ですが、設定形式は RGB565 であるため、更新操作は停止します。
私が強制すると
getBE().mRenderEngine =
RE::impl::RenderEngine::create(HAL_PIXEL_FORMAT_RGBA_8888
される
getBE().mRenderEngine =
RE::impl::RenderEngine::create(HAL_PIXEL_FORMAT_RGB_565
これらのAndroidアプリケーションは画面に表示できますが、赤と青のピクセルは反対です。この方法を使用すると、PCの画面を監視できなくなります。
この形式が一致しない問題の原因と、それを完全に修正する方法を知りたいです。
こんにちはZhiming、
ご提案ありがとうございます。私はすでにその問題を解決するための解決策を見つけています。kotlinプロジェクトで画面の向きを回転させます。おそらく、レイアウトの高さが長すぎてAndroidフレームワークのサイズを変更できないでしょう。レイアウトのwidth:heightを変更する必要があります。
敬具
PatrickZ
こんにちは
surfaceflingerについての私の理解として、surfaceflingerはレンダリングエンジンであり、アプリケーションレイヤーから操作を受け取り、fbdisplayを呼び出して表示します。したがって、問題はアプリケーションレイヤーから発生する可能性があり、アプリはレンダリングエンジンにフレームのレンダリング方法を指示します。レンダリングエンジンは1つのピクセル形式用に設計されているとは思わず、ピクセル形式はアプリレイヤーから設定する必要があります。
よろしくお願いいたします
志明
こんにちはZhiming、
あなたはそれがAndroid Kotlinアプリケーションで何か問題があるかもしれないということですか?Fbdisplayのconfig.formatは大丈夫です、そして私は問題がsurfaceflingerから来ていると思います。buffer.format は 1 RGBA8888 のままです。
敬具
パトリック・チャン
Hello,
これは、問題が発生しているアプリケーションのコードと関係がある可能性があり、アプリケーションは 32 ビット データを使用しているため、HAL レイヤー コードでは RGB888 が返されます。問題を解決するには、アプリケーションのコードをもう一度見る必要があります。
https://github.com/nxp-imx-android/android-imx_platform_hardware_imx/blob/p9.0.0_2.3.4/display/displ...
よろしくお願いいたします
志明