如何在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 inverted
root@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
-splash
xrandr -o inverted
linaro@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開發的鴻蒙開發板/工控主板,適用于各種智慧顯示終端、工業自動化終端和邊緣計算網關類產品。

浙公網安備 33010602011771號