本文介紹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開發的鴻蒙開發板/工控主板,適用于各種智慧顯示終端、工業自動化終端和邊緣計算網關類產品。
-
開發板
+關注
關注
25文章
5058瀏覽量
97531 -
瑞芯微
+關注
關注
23文章
421瀏覽量
51348 -
Linux開發
+關注
關注
0文章
33瀏覽量
6906 -
RK3568
+關注
關注
4文章
514瀏覽量
5060 -
觸覺智能
+關注
關注
1文章
38瀏覽量
313
發布評論請先 登錄
相關推薦
評論