|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本文介绍Linux系统实现屏幕角度旋转的方法,以解决不同产品形态的展现方式,其中Ubuntu、Debian系统可以通过xrandr工具实现屏幕旋转。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568芯片,搭载四核A55处理器,主频2.0Ghz;1T算力NPU;4 S3 z& \' ~/ c$ Q; I; U& w- c
6 Z, O8 ]& x0 D
Linux旋转屏幕的方法3 Q4 s( d6 Q9 s. i+ M3 g
) ?: Q9 o5 q1 U+ Y- z
- 临时旋转-通用各Linux发行版
) O+ t" T& u# M- O- E
; B2 _4 z8 E1 S* x% B! x, e 执行xrandr -o normal/inverted/left/right,可以实现临时旋转屏幕方向,命令说明:9 G) g/ _2 P h4 H! F3 A8 V
8 c/ B9 _# R' ]7 S. |1 f" n0 G
normal:表示顺时针旋转0度;
" E2 Q# y2 i& a7 Z! l: e, P& R6 @# B
right:表示顺时针旋转90度;; m6 \" S9 D* |2 X. n( [+ B
! k2 ?0 v4 p3 ?7 l+ u& g( ^
inverted:表示顺时针旋转180度;; }( `' u, k* Y& X, b: {
3 ~* J; N E- y9 j& ^2 a
left:表示顺时针旋转270度;0 h3 }+ v4 }0 [2 a$ ]
% j1 D4 Q8 I+ R/ |& H4 v以inverted命令为例:6 }3 O- s& S5 }0 r" c8 ~8 x
5 B( [, [9 _) y7 Q- s7 b( y9 plinaro@linaro-alip:~$ xrandr -o inverted 7 H6 |1 R% i+ e) y# Y# T; z, j
- 永久旋转-适用Ubuntu系统
5 J- \% U" [' |6 p6 x6 X# j' s8 j" u- x4 o
修改/etc/default/xrandr启动文件,可以实现永久旋转。以旋转180度为例,命令如下:
; Z s7 E) D2 L( ?# f3 R5 |4 e( k0 L w( P& E/ A% f
root@ido:~# vi /etc/default/xrandr#!/bin/sh /usr/bin/xrandr -o invertedroot@ido:~#永久旋转-适用Debian系统2 p+ ^' R( {( I* L0 h# p" t
修改启动文件,目录如下:
, ^ V- n$ U2 m; E( M
" y3 x0 t# _& R/home/linaro/.config/lxsession/LXDE/autostart,将xrandr命令内置,实现永久旋转,主板重启后依旧生效。以旋转180度为例,命令如下:
. t9 H( S0 z3 {/ ?6 _: N# G6 i% ]2 a, L/ ~& ?; L6 E- k( [5 B9 k
linaro@linaro-alip:~$ vi /home/linaro/.config/lxsession/LXDE/autostart@lxpanel --profile LXDE@pcmanfm --desktop --profile LXDE@xscreensaver -no-splashxrandr -o invertedlinaro@linaro-alip:~$旋转屏幕可能遇到的问题6 z B; L: O, n) N8 U. p! [3 B: O
- Debian系统旋转90度和270度失败
@1 l2 A! I6 P, i/ _. ]% f! ~- C. I% G6 U3 i; m
修改以下目录文件:+ m/ C/ {' c' T0 ~
' d* z4 z7 B. r5 r0 N. \% p9 e/etc/X11/xorg.conf.d/20-modesetting.conf; H" ]7 b. D3 j. _/ [4 |
( h. v* D0 C+ `" H具体修改如下:
7 g) o2 j7 f/ D4 q# {
) d. \0 _! h' p* c0 V; X( P: I(1)将Option "FlipFB" "always"这段内容改为Option "FlipFB" "none"
. Y" V% S6 \/ D, i. \6 i9 f+ u* }4 o( O
(2)将Option "UseGammaLUT" "true"这段内容改为#Option "UseGammaLUT" "true" 3 A4 v+ K& \0 R) q
3 a& b0 A) i3 v m! [
(3)重启生效
* e0 r- h" P$ Q
, b1 v" s( W3 E! b; U+ K, S Section "Device" Identifier "Rockchip Graphics" Driver "modesetting"### Use Rockchip RGA 2D HW accel# Option "AccelMethod" "exa"### Use GPU HW accel Option "AccelMethod" "glamor" Option "DRI" "2"### Set to "always" to avoid tearing, could lead to up 50% peRFormance loss Option "FlipFB" "none"### Limit flip rate and drop frames for "FlipFB" to reduce performance lost# Option "MaxFlipRate" "60" Option "NoEDID" "true"# Option "UseGammaLUT" "true"EndSectionSection "Screen" Identifier "Default Screen" Device "Rockchip Graphics" Monitor "Default Monitor"EndSection### Valid values for rotation are "normal", "left", "right"Section "Monitor" Identifier "Default Monitor" Option "Rotate" "normal"EndSection
H0 m6 m( x* J# N Y7 P+ K$ F/ w6 l- FlipFB选项的作用7 q* q+ O2 |" P3 ]
; w- ?/ X7 u' r+ E6 e: O Option "FlipFB" "always"含义: 这个选项控制帧缓存翻转(Framebuffer flipping)。当设置为 "always" 时,它会强制启用帧缓存翻转。这种翻转有助于减少图像撕裂(tearing),但可能会带来性能损失,特别是在需要频繁更新或大规模绘制屏幕时(如旋转时)。 D1 i. K. ]" p3 [, ?
+ W& I: `" }+ w$ K' ]6 P% H( o
问题: 在配置中,FlipFB 设置为 "always" 可能会使驱动强制以某种方式处理显示管线,导致旋转操作无法顺利完成。因为旋转会大大增加对显示内存的访问和帧缓存更新需求,而 "always" 可能使得翻转操作与旋转的需求相冲突,从而触发了错误。
# u" c/ P+ @8 s2 P! v; ?. g4 m! s
5 A0 [: H; j) v# @$ j6 Y7 cOption "FlipFB" "none"含义: 设置为 "none" 会禁用帧缓存翻转。这意味着系统不再尝试以特定的方式来处理翻转,减少了额外的操作,从而让旋转操作变得更加顺畅。虽然可能会导致轻微的屏幕撕裂,但对于屏幕旋转的需求,这样的设置是更合适的。效果: 通过禁用帧缓存翻转,减少了内存访问冲突或资源争用的问题,使得旋转功能可以正常工作。
$ {7 e8 b5 r( n! q' R
! h% O% R- {* q2 [# d: f) g. U- UseGammaLUT选项的作用$ W% K1 ~7 f2 H
6 v% x4 _5 F( {: W& l; b6 J Option "UseGammaLUT" "true"含义: 该选项控制是否使用伽玛查找表(Gamma Look-Up Table,Gamma LUT)。伽玛校正用于调整显示器输出的亮度或对比度,以达到更好的图像效果。开启 UseGammaLUT 会引入额外的图像处理步骤,特别是在颜色校正方面,它会影响 GPU 的负载。问题: 虽然伽玛校正与屏幕旋转本身并无直接联系,但如果开启伽玛校正会使得系统需要对每一帧进行额外的颜色调整,可能会影响旋转时的性能表现。如果显卡驱动或硬件对伽玛校正的支持不够完善,可能会导致与旋转操作冲突,最终影响到屏幕的更新和显示。
/ `& Y% }0 ~! y; B# X& W% \2 m( L$ Q ^% d, E" m
Option UseGammaLUT "true" 含义: 注释掉这个选项会禁用伽玛校正,减少系统对每一帧图像的处理负担。这对于需要频繁更新图像的操作(如屏幕旋转)有益,因为系统的图像处理变得更轻量化。效果: 通过禁用伽玛 LUT,图像处理变得更加简单,使得旋转操作不会因为额外的颜色处理而受到阻碍。! D5 ~7 W: a1 H2 l2 [/ Z
, f9 C0 W: m+ G g0 ?7 o r D% @7 t- R& a5 C3 e! ^; y) u+ r3 l
- ~. H8 s* N) ^# @( E
8 X1 H% m; T* r! P
|
|