找回密码
 注册
关于网站域名变更的通知
查看: 161|回复: 1
打印 上一主题 下一主题

如何在Linux系统实现屏幕旋转?触觉智能RK3568鸿蒙开发板演示

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2024-11-19 23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本文介绍Linux系统实现屏幕角度旋转的方法,以解决不同产品形态的展现方式,其中Ubuntu、Debian系统可以通过xrandr工具实现屏幕旋转。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568芯片,搭载四核A55处理器,主频2.0Ghz;1T算力NPU;; t/ L& l* [7 U* |$ D
0 `% y' c. c1 H; b, m) W) [
Linux旋转屏幕的方法
/ _2 x' ~* y, g, |" M  J* i

, o" ?" |, s$ h. w3 s
  • 临时旋转-通用各Linux发行版8 O/ P( n8 }2 E  |& I6 ?

    ' y0 H# N$ k! l# Q
执行xrandr -o normal/inverted/left/right,可以实现临时旋转屏幕方向,命令说明:3 a7 S, p  e  y
6 F$ l1 y- T! R( M* x" I8 Q% a% g
normal:表示顺时针旋转0度;
- T$ W# L3 q' y
# B$ f2 i/ L0 Q) s/ _
right:表示顺时针旋转90度;7 ], n- x4 k$ T) e: K! z% N8 w8 q
* n# C* @5 {9 _6 E: j  E
inverted:表示顺时针旋转180度;2 P% i% S  [, \6 [7 G5 B% s# [
) k6 t; M0 @/ p( I3 h4 [' ?. C
left:表示顺时针旋转270度;
* r9 Q9 a6 _2 l; c; W/ {

5 W) U* k6 J/ `以inverted命令为例:6 K; R0 t% K$ I7 v7 a2 y1 u
8 O3 R9 {  x% X
linaro@linaro-alip:~$ xrandr -o inverted
6 ~" w% e/ f( Z, d7 L" w
  • 永久旋转-适用Ubuntu系统$ x4 U8 h  z: _- s3 |
    ' o" k" B3 K! E* \0 N: T& C- P
修改/etc/default/xrandr启动文件,可以实现永久旋转。以旋转180度为例,命令如下:
7 N6 r' C' @* C* a# C  B0 R
) `7 l2 h8 S+ {; m7 N5 @3 \
root@ido:~# vi /etc/default/xrandr#!/bin/sh /usr/bin/xrandr -o invertedroot@ido:~#永久旋转-适用Debian系统
5 f! Q; e; J; x+ v/ M" _  p- ^: k修改启动文件,目录如下:
1 y5 h+ a  B# W0 d/ H0 I

3 l- e) D/ M4 U. D# r/home/linaro/.config/lxsession/LXDE/autostart,将xrandr命令内置,实现永久旋转,主板重启后依旧生效。以旋转180度为例,命令如下:* m8 {/ Y6 c9 X7 l0 D6 d; {- x5 o( f

& L2 {: l' p" B& r; C! rlinaro@linaro-alip:~$ vi /home/linaro/.config/lxsession/LXDE/autostart@lxpanel --profile LXDE@pcmanfm --desktop --profile LXDE@xscreensaver -no-splashxrandr -o invertedlinaro@linaro-alip:~$旋转屏幕可能遇到的问题
" k* c4 ~4 W) w7 S" T  a; h
  • Debian系统旋转90度和270度失败
    / n& e( ~; [1 T6 E* R
    # C  ]0 O* R2 {- t
修改以下目录文件:0 @8 h) A; f' o  l2 a' w
2 b& m& V- Z- q! m; \
/etc/X11/xorg.conf.d/20-modesetting.conf
+ V9 K9 |2 F* M

* I' C) J) Z9 j- J' c/ \! E) D. C具体修改如下:
. }9 a( V  R8 _
7 _7 [9 I5 Q- a
(1)将Option "FlipFB" "always"这段内容改为Option "FlipFB" "none"
3 v1 b3 ~% o1 T8 `; y( O

6 h$ g3 T' ~8 F! \(2)将Option "UseGammaLUT" "true"这段内容改为#Option "UseGammaLUT" "true"
) u/ x9 c9 _  Z8 z' }

  [% `. }; f4 K, ?(3)重启生效
6 f/ }4 U3 T/ k5 S6 k6 g

5 C% W4 P: b: a; l- \9 P  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
) c# _6 G$ n1 h3 n. ^3 L
  • FlipFB选项的作用) u) `3 L% I  Z9 W; G8 U# I, b

    ) O  f) _! W6 k
Option "FlipFB" "always"含义: 这个选项控制帧缓存翻转(Framebuffer flipping)。当设置为 "always" 时,它会强制启用帧缓存翻转。这种翻转有助于减少图像撕裂(tearing),但可能会带来性能损失,特别是在需要频繁更新或大规模绘制屏幕时(如旋转时)。
8 ~' G+ H- L4 O! s( P) v

, b8 t% i( Y7 E. D5 F& Y问题: 在配置中,FlipFB 设置为 "always" 可能会使驱动强制以某种方式处理显示管线,导致旋转操作无法顺利完成。因为旋转会大大增加对显示内存的访问和帧缓存更新需求,而 "always" 可能使得翻转操作与旋转的需求相冲突,从而触发了错误。
# d' F' D. ~) b

6 D  t8 G+ r, {2 |, l; Z9 uOption "FlipFB" "none"含义: 设置为 "none" 会禁用帧缓存翻转。这意味着系统不再尝试以特定的方式来处理翻转,减少了额外的操作,从而让旋转操作变得更加顺畅。虽然可能会导致轻微的屏幕撕裂,但对于屏幕旋转的需求,这样的设置是更合适的。效果: 通过禁用帧缓存翻转,减少了内存访问冲突或资源争用的问题,使得旋转功能可以正常工作。
" e' J$ N2 t# N  T: H' i

( l0 E: z8 }" o% c# R, ?! Y
  • UseGammaLUT选项的作用
    + [) ^! [! |3 r! S
    + e& t9 i! ~7 Q5 f' l' Y
Option "UseGammaLUT" "true"含义: 该选项控制是否使用伽玛查找表(Gamma Look-Up Table,Gamma LUT)。伽玛校正用于调整显示器输出的亮度或对比度,以达到更好的图像效果。开启 UseGammaLUT 会引入额外的图像处理步骤,特别是在颜色校正方面,它会影响 GPU 的负载。问题: 虽然伽玛校正与屏幕旋转本身并无直接联系,但如果开启伽玛校正会使得系统需要对每一帧进行额外的颜色调整,可能会影响旋转时的性能表现。如果显卡驱动或硬件对伽玛校正的支持不够完善,可能会导致与旋转操作冲突,最终影响到屏幕的更新和显示。
" f( q) y, D6 Y6 X0 |) ?& G
4 D9 `. I8 \7 @# u& ^
Option UseGammaLUT  "true" 含义: 注释掉这个选项会禁用伽玛校正,减少系统对每一帧图像的处理负担。这对于需要频繁更新图像的操作(如屏幕旋转)有益,因为系统的图像处理变得更轻量化。效果: 通过禁用伽玛 LUT,图像处理变得更加简单,使得旋转操作不会因为额外的颜色处理而受到阻碍。
6 P# z) a& e) `2 s$ m; O# ^
8 K: P- A2 z3 ~4 e
; B6 W- d) h6 c& ?: Y" A
( N+ b4 m* _5 K7 k; ?& f
, _, i6 Y* {+ I3 q6 j2 `* D

该用户从未签到

2#
发表于 2024-11-22 09:00 | 只看该作者
开发板都有什么资料
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-16 04:48 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表