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. [Solved] Scrolling Text eating lot of CPU on beagleBone

[Solved] Scrolling Text eating lot of CPU on beagleBone

Scheduled Pinned Locked Moved Solved Mobile and Embedded
25 Posts 4 Posters 8.2k 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.
  • G Offline
    G Offline
    guru007
    wrote on last edited by guru007
    #1

    I am using QTextEdit to show Scrolling text by setting
    ui->textEdit->setvalue(count);
    count ++;

    When I am running on my i5 PC it is running smoothely but When I run it on Beaglebone, There are two scenerios:
    1.With Eglfs platform plugin, It is scrolling very slowly and jerky but less CPU consumption.
    2.With linuxFb plugin, It is scrolling almost like PC but CPU goes over 100 %.

    What Should I Do to solve the problem?

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      Do you need rich text? Consider using QPlainTextEdit otherwise.

      QTextEdit does not have setValue() method. Are you sure you are using it?

      You can try using scrollContentsBy() instead. It is protected, though, so you would have to expose the method in a custom subclass.

      (Z(:^

      1 Reply Last reply
      1
      • G Offline
        G Offline
        guru007
        wrote on last edited by
        #3

        I don't need rich text. I implemented in this way:
        QScrollBar sb;
        sb = ui->message->verticalScrollBar();
        sb.setValue(count);

        1 Reply Last reply
        0
        • sierdzioS Offline
          sierdzioS Offline
          sierdzio
          Moderators
          wrote on last edited by
          #4

          verticalScrollBar() returns a pointer so what you posted will not compile. It may be just that certain platform pluggins work sluggishly here. I would still recommend trying with QPlainTextEdit and scrollContentsBy() (or even QWidget::move() could work). If you compare how these various techniques work, you can pinpoint the fastest one and use it.

          (Z(:^

          1 Reply Last reply
          1
          • G Offline
            G Offline
            guru007
            wrote on last edited by
            #5

            I used pointer like
            QScrollBar *sb;
            sb = ui->message->verticalScrollBar();
            sb->setValue(count);

            But I want to know why it is very slow on Beaglebone device.
            Please suggest me If I use ScrollContentsBy() then Is there any performance gains.
            Can I use hardware acceleration for Text rendering?

            1 Reply Last reply
            0
            • sierdzioS Offline
              sierdzioS Offline
              sierdzio
              Moderators
              wrote on last edited by
              #6

              Please suggest me If I use ScrollContentsBy() then Is there any performance gains.

              I don't know. I've given you options to try out, they may help you or may turn out to be rubbish. I don't have time to check them out myself for you, sorry.

              You can also try other things which could impact performance: set the text edit to read-only mode, for example (at least for the duration of scrolling).

              You can also ask on Qt Interest mailing list - a lot of Qt deveopers (that is, people developing Qt itself) are active there, they could have some more accurate hints for you (possibly related to platform support, too).

              Can I use hardware acceleration for Text rendering?

              As far as I know, no, widgets are painted by Qt raster engine (which on most platforms seems faster than OpenGL).

              (Z(:^

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

                Hi,

                What kind of text are you showing ?

                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
                1
                • G Offline
                  G Offline
                  guru007
                  wrote on last edited by
                  #8

                  Hi SGaist,
                  I am using simple text in english with a .ttf font which I am using from resource file. There is one suggestion I received from my Qt friend that If I create QImage from text using QPainter and then scroll the QImage, Then it will solve my Problem.Any suggestions from ur side Please.

                  1 Reply Last reply
                  0
                  • G Offline
                    G Offline
                    guru007
                    wrote on last edited by
                    #9
                      QFont font1;
                        font1.setBold(true);
                        font1.setFamily("Sans Serif");
                        font1.setPointSize(100);
                        QImage image(1024,768, QImage::Format_ARGB32_Premultiplied);
                        QPainter painter(&image);
                        painter.fillRect(image.rect(), Qt::yellow);
                        painter.setFont(font1);
                        painter.drawText(image.rect(), Qt::AlignCenter | Qt::AlignVCenter, "hello, world");
                        scene = new QGraphicsScene(this);
                        scene->addPixmap(QPixmap::fromImage(image));
                        scene->setSceneRect(image.rect());
                        ui->mainImage->setScene(scene);
                    

                    Now I am experimenting with QGraphicsScene but when I scroll frequently with mouse in QScrollArea, then Cpu reaches 100 %.

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

                      So a fixed text. How big is it ?

                      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
                      1
                      • G Offline
                        G Offline
                        guru007
                        wrote on last edited by
                        #11

                        I am receiving text from Uart. SO it can be of very long length.
                        That is why there is need of scrolling because text size is very large (point size 200)
                        Actually It is passenger information display showing train information to passengers on LCD.

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

                          Looks like you should rather consider a QListView using a QStringListModel.

                          Also, how big is the history that you want to keep available to your passengers ?

                          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
                          1
                          • G Offline
                            G Offline
                            guru007
                            wrote on last edited by
                            #13

                            Thanks for suggestions, But I think problem is graphics performance on Beaglebone black.
                            I think application not using hardware acceleration for rendering of scrolling text because text is refreshed at 100 times per second because I scrolling text by incrementing :
                            QTimer timer;
                            timer.setInterval(5);
                            timer-> connected with Slot()
                            Slot()
                            {
                            static int count = 0;
                            scrollbar->setValue(count);
                            count ++;
                            }

                            Basically When I using other Qt Demo apps like colliding mice CPU usage increases to 100%.
                            BeagleBone black SGX GPU for graphics. Is there anything to do or How can I check whether GPU is used or not By Qt application.
                            Thanks

                            jsulmJ 2 Replies Last reply
                            0
                            • G guru007

                              Thanks for suggestions, But I think problem is graphics performance on Beaglebone black.
                              I think application not using hardware acceleration for rendering of scrolling text because text is refreshed at 100 times per second because I scrolling text by incrementing :
                              QTimer timer;
                              timer.setInterval(5);
                              timer-> connected with Slot()
                              Slot()
                              {
                              static int count = 0;
                              scrollbar->setValue(count);
                              count ++;
                              }

                              Basically When I using other Qt Demo apps like colliding mice CPU usage increases to 100%.
                              BeagleBone black SGX GPU for graphics. Is there anything to do or How can I check whether GPU is used or not By Qt application.
                              Thanks

                              jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on last edited by
                              #14

                              @guru007 said in Scrolling Text eating lot of CPU on beagleBone:

                              text is refreshed at 100 times per second

                              this does not make sense as your display most probably cannot refresh so often (usually it is 60Hz). Actually it would be enough to refresh at 25Hz - this is what a human perceives as smooth.

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              G 1 Reply Last reply
                              1
                              • jsulmJ jsulm

                                @guru007 said in Scrolling Text eating lot of CPU on beagleBone:

                                text is refreshed at 100 times per second

                                this does not make sense as your display most probably cannot refresh so often (usually it is 60Hz). Actually it would be enough to refresh at 25Hz - this is what a human perceives as smooth.

                                G Offline
                                G Offline
                                guru007
                                wrote on last edited by SGaist
                                #15

                                @jsulm
                                But with even 30 fps it consuming whole processing Power.

                                1 Reply Last reply
                                0
                                • G guru007

                                  Thanks for suggestions, But I think problem is graphics performance on Beaglebone black.
                                  I think application not using hardware acceleration for rendering of scrolling text because text is refreshed at 100 times per second because I scrolling text by incrementing :
                                  QTimer timer;
                                  timer.setInterval(5);
                                  timer-> connected with Slot()
                                  Slot()
                                  {
                                  static int count = 0;
                                  scrollbar->setValue(count);
                                  count ++;
                                  }

                                  Basically When I using other Qt Demo apps like colliding mice CPU usage increases to 100%.
                                  BeagleBone black SGX GPU for graphics. Is there anything to do or How can I check whether GPU is used or not By Qt application.
                                  Thanks

                                  jsulmJ Offline
                                  jsulmJ Offline
                                  jsulm
                                  Lifetime Qt Champion
                                  wrote on last edited by SGaist
                                  #16

                                  @guru007 Sorry, something went wrong here and I edited your last post. That wasn't intentionally.

                                  You wrote before that the text can be very long. You should test with not so long text (but still long enough to need a scroll bar). Does it then still consume 100% CPU?
                                  Qt widgets do not use hardware acceleration as far as I know (but QML does). Alternative would be to use http://doc.qt.io/qt-5/graphicsview.html

                                  https://forum.qt.io/topic/113070/qt-code-of-conduct

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

                                    @jsulm Everything is back on track. I still had the email from the thread :)

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

                                    jsulmJ 1 Reply Last reply
                                    2
                                    • SGaistS SGaist

                                      @jsulm Everything is back on track. I still had the email from the thread :)

                                      jsulmJ Offline
                                      jsulmJ Offline
                                      jsulm
                                      Lifetime Qt Champion
                                      wrote on last edited by
                                      #18

                                      @SGaist Thanks!

                                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                                      G 1 Reply Last reply
                                      2
                                      • jsulmJ jsulm

                                        @SGaist Thanks!

                                        G Offline
                                        G Offline
                                        guru007
                                        wrote on last edited by
                                        #19

                                        @jsulm How can I check If my application uses GPU for rendering. I read from stackoverflow:

                                        Qt doesn't magically GPU-accelerate the entire application. Widgets are not accelerated unless they derive from QOpenGLWidget. Qt Quick 2 is accelerated by default; there's an option of using the software renderer on hardware that doesn't support OpenGL ES 2. Qt Quick 1 is accelerated if you set a QOpenGLWidget as a viewport on the QGraphicsView.

                                        Could you suggest some already built app to test gpu? Some Demo app

                                        jsulmJ 1 Reply Last reply
                                        0
                                        • G guru007

                                          @jsulm How can I check If my application uses GPU for rendering. I read from stackoverflow:

                                          Qt doesn't magically GPU-accelerate the entire application. Widgets are not accelerated unless they derive from QOpenGLWidget. Qt Quick 2 is accelerated by default; there's an option of using the software renderer on hardware that doesn't support OpenGL ES 2. Qt Quick 1 is accelerated if you set a QOpenGLWidget as a viewport on the QGraphicsView.

                                          Could you suggest some already built app to test gpu? Some Demo app

                                          jsulmJ Offline
                                          jsulmJ Offline
                                          jsulm
                                          Lifetime Qt Champion
                                          wrote on last edited by
                                          #20

                                          @guru007 If you use widgets there is nothing to check as those do not use GPU.

                                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                                          G 1 Reply Last reply
                                          1

                                          • Login

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