Linux: tvservice -o、次にtvservice -pは、電源がオンになっているディップスレイで結果を出しますが、何も表示されません。

作成日 2015年03月17日  ·  9コメント  ·  ソース: raspberrypi/linux

私はこれを2つの異なるディスプレイと3.12と3.18 ....でB +とrev2Bで試しました。

最も参考になるコメント

sdlアプリは独自のフレームバッファーを作成し、フレームバッファーメモリへのポインターを持っているため、これを自分で処理する必要があります。
アプリが画面を使用しているときは、HDMIの電源を切るべきではないと思います。
次を使用できます。

vcgencmd display_power 0

vcgencmd display_power 1

これは、HDMI出力信号を削除するための邪魔にならない方法ですが、オーバーレイはそのまま残します。

全てのコメント9件

それは正常です。 電源をオフにすると、オーバーレイ(フレームバッファが1つ)が破棄されます。
「fbset-depth8 && fbset-depth16」で再現できます

私が持っているアプリはsdlベースであり、まだ画面に出力されているので、
3月17日14:33:46raspberrypi user.err fbcp [3318]:-1のスナップショットを作成できません。 (60)
3月17日14:34:00raspberrypi user.infoカーネル:[326.704707] bcm2708_fb_ioctl 40044620,0 returns = 0 p [1] = 0x80000001
3月17日14:34:00raspberrypi user.errカーネル:[326.704940] bcm2708_fb_pan_display(0,0)returns = 16
3月17日14:34:46raspberrypi user.err fbcp [3318]:-1のスナップショットを作成できません。 (120)
3月17日14:35:00raspberrypi user.infoカーネル:[386.693696] bcm2708_fb_ioctl 40044620,0 returns = 0 p [1] = 0x80000001
3月17日14:35:00raspberrypi user.errカーネル:[386.693907] bcm2708_fb_pan_display(0,720)returns = 16

で復元しようとしました
(tvservice -p && sleep 2 && fbset -depth 8 && fbset -depth 16)2>&1
画面出力なし
3月17日14:43:26raspberrypi user.warnカーネル:[268.637255] fb_set_parエラーを検出、エラーコード:16
3月17日14:43:26raspberrypi user.errカーネル:[268.649473] bcm2708_fb_blank(0)は= 0 p [1] = 0x80000001を返します
3月17日14:43:26raspberrypi user.infoカーネル:[268.821121] bcm2708_fb_ioctl 40044620,0 returns = 0 p [1] = 0x80000001
3月17日14:43:26raspberrypi user.errカーネル:[268.821395] bcm2708_fb_pan_display(0,0)returns = 16
3月17日14:43:26raspberrypi user.infoカーネル:[268.972086] bcm2708_fb_ioctl 40044620,0 returns = 0 p [1] = 0x80000001
3月17日14:43:26raspberrypi user.errカーネル:[268.972286] bcm2708_fb_pan_display(0,720)returns = 16
3月17日14:43:26raspberrypi user.infoカーネル:[269.105637] bcm2708_fb_ioctl 40044620,0 returns = 0 p [1] = 0x80000001
3月17日14:43:26raspberrypi user.errカーネル:[269.105901] bcm2708_fb_pan_display(0,0)returns = 16

この時点でVTを変更すると、円周率がくさびになります。

sdlアプリは独自のフレームバッファーを作成し、フレームバッファーメモリへのポインターを持っているため、これを自分で処理する必要があります。
アプリが画面を使用しているときは、HDMIの電源を切るべきではないと思います。
次を使用できます。

vcgencmd display_power 0

vcgencmd display_power 1

これは、HDMI出力信号を削除するための邪魔にならない方法ですが、オーバーレイはそのまま残します。

はい、SDLアプリはカーネルfbデバイスを介して割り当てられたHWダブルバッファーを使用し、2つのバッファー間をパンしました。復元コマンドセットを発行した後、バッファーを再描画しています。 fbset -iの出力によると、電源を入れ直してもfbアドレスは変更されませんが、それは信じられないことであり、おそらく同期がとれていないため、vtのクラッシュが変更されます。 その時点でモード変更を強制してfbを再割り当てし、ポインターを更新しますか?

vcgencmd display_power(ディスプレイのsを除く)はすべて、私が望むこと(ソフトオフの実装)を実行しているように見えます。ありがとうございます。

このフォーラムの投稿(http://www.raspberrypi.org/forums/viewtopic.php?f=38&t=99822&p=692525&hilit=sdl#p692525)から参照されているSDLライブラリのパッチバージョンがあり、のベースアドレスに対応しています。解像度の変更に応じてFBが変更されます。 そのバージョンを試して、動作が改善されるかどうかを確認する価値があるかもしれません。

@pelwell lolはい、それは私でした、そのページから;-)

-あなたがここでの問題について読むことができますhttps://github.com/raspberrypi/firmware/issues/354幸いにも誰かと呼ばPSSCがすでにsqueezeplay作業の一環として、主要な問題を修正していた、と私は、更新に修正を組み込んだので- SDLパッケージ。

確かに笑。 私の弁護では、それは少し前のことであり、発音できないハンドルの1つは別のハンドルのように見えます...

割り当てられたフレームバッファメモリは、電源がオフになっても解放されませんが、dispmanx要素はすべて削除されます。 sdlのdispmanxバックエンドを使用している場合、通常のdispmanx_element_addシーケンスは、フレームバッファーをディスプレイに戻します。
デフォルトのフレームバッファバックエンドを使用している場合は、それを変更して削除/追加する必要があります。 SDL内から「fbset-depth8 && fbset -depth 16」と同じことを効果的に行います(サイズや深さの変更など)。
ただし、「vcgencmddisplay_power」ソリューションはおそらく最も簡単です。

vcgencmd display_powerコード化ソリューションは、私が必要なことを実行するので、問題を解決します。

このページは役に立ちましたか?
0 / 5 - 0 評価