当前位置: 首页 > article >正文

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

本文介绍Linux系统实现屏幕角度旋转的方法,以解决不同产品形态的展现方式,其中Ubuntu、Debian系统可以通过xrandr工具实现屏幕旋转。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568芯片,搭载四核A55处理器,主频2.0Ghz;1T算力NPU;现已发布全新OpenHarmony5.0 Release固件,兴趣的小伙伴可以了解下

Linux旋转屏幕的方法

  • 临时旋转-通用各Linux发行版

执行xrandr -o normal/inverted/left/right,可以实现临时旋转屏幕方向,命令说明:

normal:表示顺时针旋转0度;

right:表示顺时针旋转90度;

inverted:表示顺时针旋转180度;

left:表示顺时针旋转270度;

以inverted命令为例:

linaro@linaro-alip:~$ xrandr -o inverted 
  • 永久旋转-适用Ubuntu系统

修改/etc/default/xrandr启动文件,可以实现永久旋转。以旋转180度为例,命令如下:

root@ido:~# vi /etc/default/xrandr#!/bin/sh /usr/bin/xrandr -o invertedroot@ido:~#
  • 永久旋转-适用Debian系统

修改启动文件,目录如下:

/home/linaro/.config/lxsession/LXDE/autostart,将xrandr命令内置,实现永久旋转,主板重启后依旧生效。以旋转180度为例,命令如下:​​​​​​​

linaro@linaro-alip:~$ vi /home/linaro/.config/lxsession/LXDE/autostart@lxpanel --profile LXDE@pcmanfm --desktop --profile LXDE@xscreensaver -no-splashxrandr -o invertedlinaro@linaro-alip:~$

旋转屏幕可能遇到的问题

  • Debian系统旋转90度和270度失败

修改以下目录文件:

/etc/X11/xorg.conf.d/20-modesetting.conf

具体修改如下:

(1)将Option "FlipFB" "always"这段内容改为Option "FlipFB" "none" 

(2)将Option "UseGammaLUT" "true"这段内容改为#Option "UseGammaLUT" "true" 

(3)重启生效​​​​​​​

 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"EndSection
Section  "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
  • FlipFB选项的作用

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

问题: 在配置中,FlipFB 设置为 "always" 可能会使驱动强制以某种方式处理显示管线,导致旋转操作无法顺利完成。因为旋转会大大增加对显示内存的访问和帧缓存更新需求,而 "always" 可能使得翻转操作与旋转的需求相冲突,从而触发了错误。

Option "FlipFB" "none"含义: 设置为 "none" 会禁用帧缓存翻转。这意味着系统不再尝试以特定的方式来处理翻转,减少了额外的操作,从而让旋转操作变得更加顺畅。虽然可能会导致轻微的屏幕撕裂,但对于屏幕旋转的需求,这样的设置是更合适的。效果: 通过禁用帧缓存翻转,减少了内存访问冲突或资源争用的问题,使得旋转功能可以正常工作。

  • UseGammaLUT选项的作用

Option "UseGammaLUT" "true"含义: 该选项控制是否使用伽玛查找表(Gamma Look-Up Table,Gamma LUT)。伽玛校正用于调整显示器输出的亮度或对比度,以达到更好的图像效果。开启 UseGammaLUT 会引入额外的图像处理步骤,特别是在颜色校正方面,它会影响 GPU 的负载。问题: 虽然伽玛校正与屏幕旋转本身并无直接联系,但如果开启伽玛校正会使得系统需要对每一帧进行额外的颜色调整,可能会影响旋转时的性能表现。如果显卡驱动或硬件对伽玛校正的支持不够完善,可能会导致与旋转操作冲突,最终影响到屏幕的更新和显示。

Option UseGammaLUT  "true" 含义: 注释掉这个选项会禁用伽玛校正,减少系统对每一帧图像的处理负担。这对于需要频繁更新图像的操作(如屏幕旋转)有益,因为系统的图像处理变得更轻量化。效果: 通过禁用伽玛 LUT,图像处理变得更加简单,使得旋转操作不会因为额外的颜色处理而受到阻碍。

产品简介

触觉智能EVB3568鸿蒙开发板是一款基于RK3568开发的鸿蒙开发板/工控主板,适用于各种智慧显示终端、工业自动化终端和边缘计算网关类产品。


http://www.kler.cn/a/401475.html

相关文章:

  • 【微软:多模态基础模型】(5)多模态大模型:通过LLM训练
  • 基于Java Springboot二手书籍交易系统
  • 如何创建一个项目用于研究element-plus的原理
  • MySQL数据库3——函数与约束
  • 机器学习基础04
  • Java——并发工具类库线程安全问题
  • JavaSE(十四)——文件操作和IO
  • Jmeter数据库压测之达梦数据库的配置方法
  • Flutter 生成二维码
  • React中 setState 是同步的还是异步的?调和阶段 setState 干了什么?
  • 【图像处理识别】数据集合集!
  • 11.15 HTML
  • TCP、IP协议中,ARP与TCP之详解(TCP, Detailed Explanation of ARP and TCP in IP Protocol)
  • ISP是什么?
  • 2024年人工智能技术赋能网络安全应用测试:广东盈世在钓鱼邮件识别场景荣获第三名!
  • Centos使用Mysql
  • 力扣 LeetCode 104. 二叉树的最大深度(Day7:二叉树)
  • Linux进阶:常用操作
  • Mac 修改默认jdk版本
  • AI 编程编辑器和工具
  • AWS CLI
  • 25. 架构能力
  • Qt桌面应用开发 第五天(常用控件)
  • 深度学习之目标检测的技巧汇总
  • 提升SPA(单页应用如vue,react)首屏加载速度:全面优化指南
  • 三菱MR-J4旋转型伺服电机选型型号一览