linux qt程序崩溃_Qt5.6在嵌入式Linux上的新特性

随着Qt 5.6的接近,是时候看一些运行嵌入式Linux变种的系统的一些新的令人兴奋的功能,就像我们以前Qt 5.5一样。

支持NVIDIA Jetson Pro主板

像Jetson TK1 Pro运行Yocto生成的Vibrante Linux映像板像支持X11,Wayland,甚至运行与纯EGL没有一个完整的窗口系统。后者通过经由公知的DRM / KMS路径进行模式设置并将其与EGL设备扩展组合来完成。这是不同于eglfs平台插件的现有KMS后端,依靠GBM,提供。因此Qt 5.5在这种环境下不起作用。有关详细信息,请查看此演示文稿。

Wayland提出了类似的挑战:虽然Weston工作正常,由于已经修补NVIDIA,基于Qt的合成器构建的Qt组合框架无法开箱即用,因为合成器必须使用EGLStream API,而不是Mesa的传统的基于EGLImage路径。

有了Qt 5.6,这一切都会改变。随着基于EGLDevice + EGLOutput + EGLStream支持的新eglfs的引入,Qt应用程序将只工作,类似于其他嵌入式板:

eglfs在Jetson K1 Pro上

着名的Qt电影体验演示使用Qt 5.6和eglfs在Jetson K1 Pro上运行

新设备makespec linux-jetson-tk1-pro-g ++便于交叉编译。

Wayland也将充分发挥功能,由于补丁支持EGL_KHR_stream,EGL_KHR_stream_cross_process_fd和EGL_KHR_stream_consumer_gltexture在现有的wayland-egl后端的Qt Compositor。

66e176b09f09720b8629857896b03ab7.png

所有这一切都不是故事的结束。今后还有改进的余地,例如支持多输出和直接渲染(即跳过基于GL的合成,并将流直接连接到输出层以提高性能)。这些将在未来的Qt版本中涵盖。

请注意,Wayland对Jetson的支持应该暂时作为技术预览。使用非官方C ++ API的组合器,如上面所示的qwindow-compositor示例,将会正常工作。但是,QML和Qt Quick支持在写作时仍在进行中。

支持Intel NUC

一些英特尔NUC设备也是一个优秀的嵌入式平台,由于meta-intel和包括的meta-nuc层为Yocto。虽然这些是普通的x86-64目标,但它们可以像基于ARM的主板一样进行处理和使用。当配置Qt进行交叉编译时,请使用新的linux-nuc-g ++设备规范。图形方面的一切都希望工作在运行Mesa的基于英特尔GPU的桌面系统上。这包括eglfs(使用在Qt 5.5中引入的DRM / KMS / GBM后端)和Wayland。

Wayland在板上基于i.MX6

基于飞思卡尔i.MX6处理器的系统包括用于Wayland的Vivante GC2000 GPU和驱动程序支持。Qt应用程序传统上在Weston参考合成器上工作正常,例如对于Qt 5.4的上一篇文章,但是由于一些驱动程序的特性不能很好地与QPA和eglfs一起使用基于Qt的合成器启动和运行有点棘手。除了常规的Vivante特定的后端(eglfs_viv),eglfs现在有一个额外的后端(eglfs_viv_wl),当运行使用Qt Compositor框架构建的合成器应用程序时,透明地确保正确的功能。这个后端需要明确的请求,所以例如运行qwindow-compositor示例,做QT_QPA_EGLFS_INTEGRATION = eglfs_viv_wl ./qwindow-compositor -platform eglfs(-platform可能会被省略,因为eglfs通常是默认值)。

OpenGL ES 3.0和3.1

如前所述,Qt 5.6中大大增强了OpenGL ES 3的支持。使用面向具有GLES 3功能的驱动程序的嵌入式设备的新QOpenGLExtraFunctions类应用程序现在可以以跨平台方式使用完整的API。

libinput

当涉及从键盘,鼠标,触摸板和触摸屏获取输入事件时,Qt 5.5引入了对libinput的支持。Qt 5.6更进一步:当libinput在构建时可用时,它将被设置为eglfs和linuxfb中的默认选项,取代Qt自己的evdevkeyboard,鼠标和触摸后端。

在一些罕见的情况下,这是不可取的(例如,当从Qt 4 QWS时间使用evdevkeyboard特定的键盘布局时),因此提供QT_QPA_EGLFS_NO_LIBINPUT环境变量作为禁用此和强制5.6之前行为的手段。

这是现在。希望你会发现新的嵌入式Linux功能很有用。快乐黑客!

P.S。2015年Qt世界峰会有许多关于嵌入式开发的激动人心的演讲,例如设备创建的Qt,为下一个项目选择合适的嵌入式Linux平台等等。在此处浏览完整会话列表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QT_QPA_EGLFS_PHYSICAL_WIDTH是一个环境变量,用于设置Qt在eglfs模式下的物理宽度。\[1\]在使用本机API的显示指标查询操作系统时,或者在eglfs情况下,可以依靠QT_QPA_EGLFS_PHYSICAL_WIDTH来设置显示的物理宽度。\[1\]如果你想手动设置QT_QPA_EGLFS_PHYSICAL_WIDTH的值,可以使用export命令来设置环境变量,例如export QT_QPA_EGLFS_PHYSICAL_WIDTH=1024。\[2\]这样就可以将QT_QPA_EGLFS_PHYSICAL_WIDTH设置为1024。如果你在运行Qt5时遇到了关于QT_QPA_EGLFS_PHYSICAL_WIDTH的错误信息,例如"Unable to query physical screen size, defaulting to 100dpi. To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).",你可以尝试手动设置QT_QPA_EGLFS_PHYSICAL_WIDTH和QT_QPA_EGLFS_PHYSICAL_HEIGHT的值来解决这个问题。\[3\] #### 引用[.reference_title] - *1* [嵌入式跨平台C++3D界面开发框架最新版Qt 5.6 支持高DPI缩放](https://blog.csdn.net/AABBbaby/article/details/50946084)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Linux嵌入式开发板中执行QT程序出现的几个问题](https://blog.csdn.net/qq_43445867/article/details/126529791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值