我有一个直接呈现到框架缓冲区的OpenGL应用程序。
如果我从终端启动应用程序,有时我会看到光标在我的应用程序后面闪烁。同样,如果我从X中的终端仿真器中启动它,如果我移动鼠标,就会看到鼠标在后面移动。
我的应用程序目前呈现为45 the,所以低帧速率不应该是问题。
我注意到,当X启动时,它似乎在开始呈现之前清除了shell,但是当您稍后关闭X服务器时,发送给stdout的诊断信息又回来了,所以我怀疑它是否发出了一个清晰的命令。
我想要做的事是怎样完成的?您可以简单地向fb1呈现并告诉视频输出从fb1显示,而不是为了fb0而斗争吗?那么,当应用程序死亡时,您可以将显示返回到fb0吗?
编辑:
为了澄清这一点,该应用程序正在为ARM SoC (飞思卡尔i.MX6)上的嵌入式系统开发,Vivante和ArchLinux ARM都在运行。
发布于 2015-09-17 17:05:40
我有一个直接呈现到框架缓冲区的OpenGL应用程序。
为了澄清这一点:你使用KMS + DRI/DRM + GBM来做这件事,对吗?
如果我从shell启动应用程序,有时我会看到光标在我的应用程序后面闪烁。
你搞混了几个术语。shell是为您提供命令的程序,如作业控制、stdio重定向、脚本支持等等。您可能指的是Linux内核虚拟终端控制台(Linux )。
当启动直接使用框架缓冲设备的程序时,必须将进程使用的虚拟终端放入图形模式 (KDSETMODE)。
同样,如果我从X中的终端仿真器中启动它,如果我移动鼠标,就会看到鼠标在后面移动。
在从X11环境启动时,X11服务器是VT和图形模式的独占所有者。所有图形操作必须通过X11服务器。就系统设计而言,任何试图触摸它不拥有的fbdev的程序都应该被击中(立即发送一个SIGSEGV)。不要这样做。就这样,没有讨论。X11服务器拥有VT,而当VT处于活动状态时,fbdev。
相反,您可以为您的程序分配一个自己的VT,并让它使用它。但是,只有当X11服务器没有运行并且控制台切换到程序的VT时,您才能获得图形输出。
https://stackoverflow.com/questions/32620019
复制相似问题