Industio_触觉智能 发表于 2024-11-19 23:36

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

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

<p>Linux旋转屏幕的方法</p>

<ul data-offset-key="40fli-0-0">
        <li data-block="true" data-editor="6c7e7" data-offset-key="40fli-0-0">
        <p>临时旋转-通用各Linux发行版</p>
        </li>
</ul>

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

<p>normal:表示顺时针旋转0度;</p>

<p>right:表示顺时针旋转90度;</p>

<p>inverted:表示顺时针旋转180度;</p>

<p>left:表示顺时针旋转270度;</p>

<p>以inverted命令为例:</p>

<pre data-offset-key="adc79-0-0">

&nbsp;</pre>

<pre data-block="true" data-editor="6c7e7" data-offset-key="adc79-0-0">

&nbsp;</pre>

<p>linaro@linaro-alip:~$ xrandr -o inverted</p>

<ul data-offset-key="521ib-0-0">
        <li data-block="true" data-editor="6c7e7" data-offset-key="521ib-0-0">
        <p>永久旋转-适用Ubuntu系统</p>
        </li>
</ul>

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

<pre data-offset-key="8rigg-0-0">

&nbsp;</pre>

<pre data-block="true" data-editor="6c7e7" data-offset-key="8rigg-0-0">

&nbsp;</pre>

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

<p>修改启动文件,目录如下:</p>

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

<pre data-offset-key="c8icd-0-0">

&nbsp;</pre>

<pre data-block="true" data-editor="6c7e7" data-offset-key="c8icd-0-0">

&nbsp;</pre>

<p>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:~$旋转屏幕可能遇到的问题</p>

<ul data-offset-key="5k6cq-0-0">
        <li data-block="true" data-editor="6c7e7" data-offset-key="5k6cq-0-0">
        <p>Debian系统旋转90度和270度失败</p>
        </li>
</ul>

<p>修改以下目录文件:</p>

<p>/etc/X11/xorg.conf.d/20-modesetting.conf</p>

<p>具体修改如下:</p>

<p>(1)将Option &quot;FlipFB&quot; &quot;always&quot;这段内容改为Option &quot;FlipFB&quot; &quot;none&quot;</p>

<p>(2)将Option &quot;UseGammaLUT&quot; &quot;true&quot;这段内容改为#Option &quot;UseGammaLUT&quot; &quot;true&quot;</p>

<p>(3)重启生效</p>

<pre data-offset-key="3m2a1-0-0">

&nbsp;</pre>

<pre data-block="true" data-editor="6c7e7" data-offset-key="3m2a1-0-0">

&nbsp;</pre>

<p>Section &quot;Device&quot; Identifier &quot;Rockchip Graphics&quot; Driver &quot;modesetting&quot; ### Use Rockchip RGA 2D HW accel # Option &quot;AccelMethod&quot; &quot;exa&quot; ### Use GPU HW accel Option &quot;AccelMethod&quot; &quot;glamor&quot; Option &quot;DRI&quot; &quot;2&quot; ### Set to &quot;always&quot; to avoid tearing, could lead to up 50% performance loss Option &quot;FlipFB&quot; &quot;none&quot; ### Limit flip rate and drop frames for &quot;FlipFB&quot; to reduce performance lost # Option &quot;MaxFlipRate&quot; &quot;60&quot; Option &quot;NoEDID&quot; &quot;true&quot; # Option &quot;UseGammaLUT&quot; &quot;true&quot; EndSection Section &quot;Screen&quot; Identifier &quot;Default Screen&quot; Device &quot;Rockchip Graphics&quot; Monitor &quot;Default Monitor&quot; EndSection ### Valid values for rotation are &quot;normal&quot; , &quot;left&quot; , &quot;right&quot; Section &quot;Monitor&quot; Identifier &quot;Default Monitor&quot; Option &quot;Rotate&quot; &quot;normal&quot; EndSection</p>

<ul data-offset-key="cs1tu-0-0">
        <li data-block="true" data-editor="6c7e7" data-offset-key="cs1tu-0-0">
        <p>FlipFB选项的作用</p>
        </li>
</ul>

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

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

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

<ul data-offset-key="1ouoa-0-0">
        <li data-block="true" data-editor="6c7e7" data-offset-key="1ouoa-0-0">
        <p>UseGammaLUT选项的作用</p>
        </li>
</ul>

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

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

<p>&nbsp;</p>

<p>产品简介</p>

<p>触觉智能EVB3568鸿蒙开发板是一款基于RK3568开发的鸿蒙开发板/工控主板,适用于各种智慧显示终端、工业自动化终端和边缘计算网关类产品。</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2024-11-20 07:26

<p>RK3568鸿蒙开发板演示的在哪里</p>

wangerxian 发表于 2024-11-20 09:19

<p>加上加速度计就可以实现永远正向了。</p>
页: [1]
查看完整版本: 如何在Linux系统实现屏幕旋转?触觉智能RK3568鸿蒙开发板演示