问题标签 [eglfs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如果它创建的另一个进程仍在运行,EGLFS 应用程序不会释放屏幕
我有一个在 EGLFS 平台上运行的 QML / C++ 应用程序。但是,我发现当应用程序自行终止时,尽管应用程序的进程本身确实死了,但它不会释放屏幕,直到应用程序使用创建的任何进程QProcess::startDetached()
也完成。
这是一个问题,因为应用程序需要在某一时刻重新启动自身,并通过在/etc/init.d/
.
该脚本会停止应用程序,然后再次启动它。但是,由于应用程序再次启动时脚本尚未完成,应用程序的先前实例尚未释放屏幕,等等新实例我收到此错误:
致命错误:EGL 错误:无法创建 egl 表面:错误 = 0x3003
...如果我在应用程序已经运行时尝试运行它,我会遇到同样的错误。
如果说,我会得到类似的效果...
即使sleep 60
确实在后台运行并且stop
脚本立即启动并成功结束了该过程,但屏幕会变成白色,然后在最终(sleep
结束时)关闭之前 60 秒内什么也不做。
我如何让它忽略它创建的正在进行的进程并完全终止?
qt - Qt kmap2qmap 缺少符号
我正在尝试在运行 Qt / QML (eglfs) 应用程序的嵌入式 linux 平台上设置各种键盘布局。我需要向 Qt 提供 .qmap(键盘映射)文件,因为 EGLFS 使用 evdev 进行键盘输入。
为此,我使用qttools 中的 kmap2qmap 将标准 kmap 文件转换为 qmap。但它不能完全转换所有键映射,例如输出以下警告
警告:键盘映射文件'cz.map',第 177 行:符号无法解析:+ecaron
警告:键盘映射文件'cz.map',第 187 行:无法解析符号:+scaron
警告:键盘映射文件'cz.map',第 199 行:无法解析符号:+ccaron
警告:键盘映射文件'cz.map',第 209 行:无法解析符号:+rcaron
警告:键盘映射文件'cz.map',第 219 行:无法解析符号:+zcaron
因此,应用程序(或 Qt)无法解释那些特定键的例如字符Č
如何解决这个问题?有没有通用的方法,最后我需要支持多种这样的语言。
python - 在屏幕旋转时移动鼠标指针
我在没有 X 服务器的情况下以 kiosk 模式运行 PyQt 应用程序。
操作系统和库:Ubuntu 21.04 x86_64
;PyQt 5.15.4
; eglfs
作为后端
信息亭监视器将旋转 90 度。如果我导出变量QT_QPA_EGLFS_ROTATION=90
,那么 GUI 会旋转。但是,鼠标指针并没有在屏幕上旋转(至少看起来它没有旋转)。应用程序正确读取了鼠标的位置,交换了x、y坐标,但是屏幕上“绘制”的光标没有旋转,见下图
如果我向下移动 еру 鼠标,实际光标也会向下移动,但绘制的光标(屏幕上的箭头)会向左移动。
如果在真正的光标位置有一个按钮,我什至可以点击它
那么,如何旋转“绘制的光标”呢?
egl - 无法创建 egl 表面:错误 = 0x300b
我发现很多关于这个错误的问题,但它们与 RPi 或 iMX6 等嵌入式系统有关。相反,我在标准的 Ubuntu Server 20.04 x64 安装上遇到了这个问题。
我安装了台面驱动程序:
我将所有相关组添加到我的用户:
找到了hello word示例(Qt6-widget应用程序)的所有库:
当我运行应用程序时,我得到:
我没有找到关于错误 0x300b 的含义以及如何修复它的准确解释。
c++ - Qt - 在嵌入式 linux 设备 (EGLFS) 中从 /dev/input/event1 捕获 QKeyEvent
我正在尝试在使用自定义键盘 的 linux 嵌入式设备(EGLFS )上的 keypress/keyrelease 上获取QKeyEvents 。/dev/input/event1是关键事件文件。
使用evtest输出与预期一致。但是在 EGLFS 平台上运行的 Qt 应用程序中, 每当在自定义键盘上按下/释放键时,事件过滤器都会将事件类型检测为QEvent::SockAct 。预期的事件类型是我无法获得的QEvent::KeyPress/QEvent::KeyRelease 。
我尝试设置以下环境变量,
QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event1;grab=1 QT_QPA_GENERIC_PLUGINS=evdevmouse,evdevkeyboard
QT_QPA_PLATFORM=eglfs
QT_QPA_EGLFS_DISABLE_INPUT = 1
在设置这些变量之前,我无法在按键/释放时获得任何事件。但是在设置了这些之后,它被检测为 QEvent::SockAct。
请建议在按键/释放时获取 QKeyEvent 需要设置什么。在嵌入式 linux 上运行的Qt 版本 5.14 。
qt5 - Etnaviv 性能 vs Vivante
我正在寻找有关如何使我的 EGLFS qt 应用程序在 etnaviv 驱动程序下的性能与在 IMX6 上的专有 Vivante 驱动程序下一样好的指导。
使用仅绘制 QLabel 小部件的简单 qt 测试应用程序,在 Etnaviv 驱动程序下的性能明显比在 Vivnate 驱动程序下差。渲染时间大约高 5-6 倍(~9mS 到大约 45-55mS),CPU 负载高 3 倍(3% 到 ~9%)。(软件渲染的)鼠标也很慢,鼠标到光标的延迟从大约 100 毫秒到 300 毫秒。
两个系统设置之间存在许多较大的软件差异,但在投入大量时间消除这些差异之前,我想调查一下可能导致这种减速的原因。本质上我是在比较:
- 一个基于 Vivante 的系统,在 Yocto Krogarth(Qt 5.4 和内核 4.1.15)上运行,带有 NXP 的专有驱动程序。该系统使用 EGLFS iMX6 后端。
- 在 Yocto Dunfell 上运行的基于 Etnaviv 的系统(使用 Qt 5.14.2 和 Kernel 5.10.73-RT)。该系统使用 EGLFS KMS 后端 (GBM),引入 MESA/libdrm 等。
渲染的输出在它们之间是相同的,但 Etnaviv 的性能很差。'perf' 表明超过 43% 的应用程序时间花费在对 Etnaviv 的 drm_ioctl 调用上。
我已经在 Qt EGLFS 网站上阅读并尝试了大多数适用的环境变量,但没有一个产生任何有意义的差异。Mesa 和 Qt 配置看起来都很合理(并且是 Yocto Dunfell 和 Etnaviv 的库存配置)。
关于我可以尝试/检查以查看导致性能问题的原因的任何建议?(内核配置、Mesa 配置、Qt 配置、环境变量、DTS 等)。
qt5 - qt5:如何从应用程序级别修改 Qt 内部变量(QKmsOutput.mode)?
我正在研究 Qt eglfs drm/kms 功能,以从 Qt 应用程序更改视频模式刷新率。
我已经准备好Qt代码更改:https ://github.com/qt/qtbase/blob/40143c189b7c1bf3c2058b77d00ea5c4e3be8b28/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp#L220在Qt内部实现模式刷新率切换。
我的 Qt 代码期望 - 对于模式刷新更改 - Qt 应用程序设置:https ://github.com/qt/qtbase/blob/40143c189b7c1bf3c2058b77d00ea5c4e3be8b28/src/platformsupport/kmsconvenience/qkmsdevice.cpp#L435变量为新的 mode_index。
我正在从 Qt 应用程序中寻找最有效的方法来做到这一点。代码级别。
可能我需要使用 nativeResourceFunctionForIntegration - 但我不确定如何使用它来修改 Qt 内部变量(QKmsOutput.mode)
有人可以提示我如何最有效地做到这一点吗?最好是一些示例代码片段:-)
提前谢谢!