Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Can I bypass framebuffer with Qt?
QtWS25 Last Chance

Can I bypass framebuffer with Qt?

Scheduled Pinned Locked Moved Mobile and Embedded
14 Posts 3 Posters 6.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    jwilkie
    wrote on last edited by
    #1

    I am developing a simple monochrome UI (basically some text and bitmap icons) using a graphics LCD that has it's own controller. I have an OMAP-L138 and don't want to use the LCD controller. I will write to the LCD memory using OMAP's expansion memory IF. So what I would like to do is simply have QT at the low level use my own routines for writing into the expansion memory, I don't want to use framebuffer. Is that possible? From what I have read so far it seems Qt is closely tied to the linux framebuffer.
    Thanks much.

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi and welcome to DevNet,

      I don't have a ready made answer to give you but did you take a look at "QScreen":http://qt-project.org/doc/qt-4.8/qscreen.html ? It might be a starting point

      Hope it helps

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • J Offline
        J Offline
        jwilkie
        wrote on last edited by
        #3

        Right, I have looked at QScreen and I've found this blurb regarding custom drivers:
        "Custom screen drivers can be implemented by subclassing the QScreen class and creating a screen driver plugin (derived from QScreenDriverPlugin). The default implementation of the QScreenDriverFactory class will automatically detect the plugin, and load the driver into the server application at run-time using Qt's plugin system.
        When rendering, the default behavior is for each client to render its widgets as well as its decorations into memory, while the server copies the memory content to the device's framebuffer using the screen driver. See the Qt for Embedded Linux Architecture overview for details (note that it is possible for the clients to manipulate and control the underlying hardware directly as well)."

        So it sounds promising. But digging around on the web I haven't seen or heard about an example that isn't using the linux framebuffer. That's why I asked.
        Thanks.

        1 Reply Last reply
        0
        • D Offline
          D Offline
          davem
          wrote on last edited by
          #4

          Take a look at the gfxdriver plugins sources. For example, I recall the eglnullws plugin derives a QScreen class for a fullscreen EGL context without referencing the linux framebuffer.

          1 Reply Last reply
          0
          • J Offline
            J Offline
            jwilkie
            wrote on last edited by
            #5

            Hey guys, back at it again after a hiatus.
            So I've built my custom screen class and plugin and made a .so library as a result. My question now is how to go about installing it. I've tried putting this library in:
            targetfs/usr/lib/qt/plugins folder and then running my application with the switch -display -<name> with name being in the keys() routine in the plugin. But it fails with: driver not found. So I'm probably missing some installation instructions. It is a totally custom driver so I'm not using any of the Qt built in ones. Do I need to run a configure script entry such as "./configure -qt-gfx-<name>" ?
            It seems I don't because those commands enable some of the built in drivers.

            Any hints on this I'd appreciate it, thanks!

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #6

              Did you also create a "QScreenDriverPlugin":http://qt-project.org/doc/qt-4.8/qscreendriverplugin.html ?

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              0
              • J Offline
                J Offline
                jwilkie
                wrote on last edited by
                #7

                Yes I did create a class that inherits QScreenDriverPlugin. And it references my custom QScreen. So I built those into a .so file and I installed it in usr/lib/qt/plugins. But still, the driver doesn't seem to be recognized.

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  jwilkie
                  wrote on last edited by
                  #8

                  Another possible hint.. After my failed attempt at running my application, I noticed that a file got created "Trolltech.conf" and in it some info about my custom driver "libpebble.so" that it doesn't seem to like?

                  cat Trolltech.conf

                  [Qt Plugin Cache 4.7.false]
                  usr\lib\qt\plugins\gfxdrivers\libpebble.so=40704, 0, arm linux g++-4 full-config, 2013-04-18T19:55:30

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    I thought there was something more ! Have a look at "this":http://qt-project.org/doc/qt-4.8/deployment-plugins.html#loading-and-verifying-plugins-dynamically there are some advice to deploy the plugins and troubleshoot them.

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • J Offline
                      J Offline
                      jwilkie
                      wrote on last edited by
                      #10

                      Thanks SGaist, this Deploying Plugins page has some helpful trouble shooting tips. I need to make sure I am building my application and Qt libraries in the same mode and version. Going to revisit my build process.

                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #11

                        You're welcome !

                        And don't forget to clear the cache (always worth a try)

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0
                        • J Offline
                          J Offline
                          jwilkie
                          wrote on last edited by
                          #12

                          Ok, how do I clear the cache?

                          1 Reply Last reply
                          0
                          • SGaistS Offline
                            SGaistS Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on last edited by
                            #13

                            IIRC, theres is a config file created in the home directory .config/ something that you can simply remove.

                            Interested in AI ? www.idiap.ch
                            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                            1 Reply Last reply
                            0
                            • J Offline
                              J Offline
                              jwilkie
                              wrote on last edited by
                              #14

                              ok. on my target it was /root/Settings/Trolltech.conf (I'm using Qt 4.7.4).

                              So I got Qt to recognize my driver, what helped me was the env variable QT_DEBUG_PLUGINS. With that set it would show me the errors when it was loading my plugin, and that pointed me to the problems.

                              1 Reply Last reply
                              0

                              • Login

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved