【问题标题】:what is qt framebuffer work mechanism?什么是qt framebuffer工作机制?
【发布时间】:2014-05-31 14:00:57
【问题描述】:

Qt 嵌入式如何与 Linux 帧缓冲驱动程序一起工作?

我认为直接写入 /dev/fb0 会导致图像闪烁。使用双缓冲区可以解决闪烁问题,但是,将数据从 Qt 缓冲区复制到帧缓冲区内存的策略是什么?按时间间隔然后将整个缓冲区复制到 /dev/fb0 或其他什么?而且,由于数据量很大,如何复制?通过启用 DMA 的 copy_from_user 或其他方式?

【问题讨论】:

    标签: c++ linux qt framebuffer qtembedded


    【解决方案1】:

    您应该避免使用 Qt 4 及其有缺陷的 QWS 设计。我会推荐使用 Qt 5,并对此感兴趣。

    至于 Qt 5,它依赖于平台集成插件。我假设您的意思是这种情况下的“linuxfb”插件是与您描述的最接近的选项。

    在这种特殊情况下,实际上没有应用乒乓缓冲区。它使用直接复制的 QImage 。该插件本质上是使用默认的QBackingStore

    【讨论】:

    • 谢谢你的回复,我不是Qt程序员,但是写了一个用于Qt应用程序在ARM板上最常用的帧缓冲驱动程序,我想知道Qte 4.8.x或其他更高版本的行为,以便我可以更详细地了解性能。正如你上面提到的,Qt 5 开始使用 QImage 直接写入帧缓冲内存? Qt 4的机制你知道吗?
    • @Leslie Li:正如我所写:Qt4 及其 QWS 设计有几个缺陷。它也很老,而且 Qt 5 在几乎所有可能的方面都更胜一筹。如果缺少改进,包括性能,Qt 4 会更慢。
    • @LeslieLi:您为什么不接受我的回复作为答案?我还能为您做什么?
    • 抱歉耽搁了,我是这个论坛的新手;我仍然不知道数据传输,对于Qt5,你提到它直接'复制',我猜这意味着Qt5在用户模式下有一个内部mem并将所有gui数据放入其中,然后在某个时候,Qt5会将此用户模式内存中的数据复制到帧缓冲区驱动程序的映射内存,对吗?如果是这样,我有两个问题: 1. 数据复制什么时候开始?由固定的时间间隔还是由 GUI“绘制”某些东西触发? 2.如何复制?使用 dma?如果分辨率是1920x1080x4bytes,数据量很大
    • @LeslieLi:是的,你是对的。请不要开始新的问题。这是一个问答网站,而不是一个开放式论坛。如果您有新问题,请为这些问题打开新主题,我们将很乐意提供帮助。此外,您可以在这里自己找到代码以进行进一步检查:qt.gitorious.org/qt/qtbase/source/…
    猜你喜欢
    • 2014-04-21
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2011-07-07
    • 2015-12-12
    相关资源
    最近更新 更多