Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-95263

Rendering with latency depending on different HDMI port

    XMLWordPrintable

Details

    • Bug
    • Resolution: Invalid
    • P5: Not important
    • None
    • 6.1.2
    • Quick: 2D Renderer
    • None
    • Linux/X11, Windows

    Description

      On my Lenovo ThinkPad T470p I have a different behavior, depending on whether I use the HDMI port of the docking station or the HDMI port of the laptop.

      I have a simple example, where a rectangle can be dragged by the mouse:

      import QtQuick 2.15
      import QtQuick.Window 2.15
      
      Window {
        width: 640
        height: 480
        visible: true
        title: qsTr("Hello World")
        Rectangle {
          width:  100
          height: 100
          color:  "orange"
          DragHandler { }
        }
      }
      

       
      When the HDMI cable is connected to the laptop directly, there is an annoying latency, when moving a rectangle with the mouse (at takes a few moments until the rectangle moved to the mouse). When the HDMI cable is connected via the docking station, the latency is much lower.

      Fast configuration:

      > QSG_INFO=1 qmlscene main.qml
      qt.scenegraph.general: Using QRhi with backend OpenGL
        Graphics API debug/validation layers: 0
        QRhi profiling and debug markers: 0
        Shader/pipeline cache collection: 0
      qt.scenegraph.general: threaded render loop
      qt.scenegraph.general: Using sg animation driver
      qt.scenegraph.general: Animation Driver: using vsync: 16.67 ms
      qt.scenegraph.general: Using sg animation driver
      qt.scenegraph.general: Animation Driver: using vsync: 16.67 ms
      qt.rhi.general: Created OpenGL context QSurfaceFormat(version 4.6, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 1, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
      qt.rhi.general: OpenGL VENDOR: Intel RENDERER: Mesa Intel(R) HD Graphics 630 (KBL GT2) VERSION: 4.6 (Compatibility Profile) Mesa 20.2.6
      qt.scenegraph.general: MSAA sample count for the swapchain is 1. Alpha channel requested = no.
      qt.scenegraph.general: rhi texture atlas dimensions: 1024x512
      
      > QSG_RENDER_TIMING=1 qmlscene main.qml
      ...
      qt.scenegraph.time.renderloop: [window 0x1055000][gui thread] Frame prepared, polish=0 ms, lock=0 ms, blockedForSync=4 ms, animations=0 ms qt.scenegraph.time.renderloop: [window 0x1055000][gui thread] polishAndSync: start, elapsed since last call: 10 ms qt.scenegraph.time.renderloop: [window 0x1055000][render thread 0x7eff08006c60] syncAndRender: frame rendered in 16ms, sync=0, render=0, swap=16 qt.scenegraph.time.renderloop: [window 0x1055000][render thread 0x7eff08006c60] syncAndRender: start, elapsed since last call: 16 ms qt.scenegraph.time.renderloop: [window 0x1055000][gui thread] Frame prepared, polish=0 ms, lock=0 ms, blockedForSync=11 ms, animations=0 ms qt.scenegraph.time.renderer: time in renderer: total=0ms, preprocess=0, updates=0, rendering=0
      

      Slow configuration:

      > QSG_INFO=1 qmlscene main.qml
      qt.scenegraph.general: Using QRhi with backend OpenGL
        Graphics API debug/validation layers: 0
        QRhi profiling and debug markers: 0
        Shader/pipeline cache collection: 0
      qt.scenegraph.general: threaded render loop
      qt.scenegraph.general: Using sg animation driver
      qt.scenegraph.general: Animation Driver: using vsync: 33.34 ms
      qt.scenegraph.general: Using sg animation driver
      qt.scenegraph.general: Animation Driver: using vsync: 33.34 ms
      qt.rhi.general: Created OpenGL context QSurfaceFormat(version 4.6, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 1, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
      qt.rhi.general: OpenGL VENDOR: Intel RENDERER: Mesa Intel(R) HD Graphics 630 (KBL GT2) VERSION: 4.6 (Compatibility Profile) Mesa 20.2.6
      qt.scenegraph.general: MSAA sample count for the swapchain is 1. Alpha channel requested = no.
      qt.scenegraph.general: rhi texture atlas dimensions: 1024x512
      
      
      > QSG_RENDER_TIMING=1 qmlscene main.qml
       ...
      qt.scenegraph.time.renderloop: [window 0x1b81eb0][gui thread] polishAndSync: start, elapsed since last call: 32 ms qt.scenegraph.time.renderloop: [window 0x1b81eb0][render thread 0x1b74eb0] syncAndRender: frame rendered in 33ms, sync=0, render=0, swap=33 qt.scenegraph.time.renderloop: [window 0x1b81eb0][render thread 0x1b74eb0] syncAndRender: start, elapsed since last call: 33 ms qt.scenegraph.time.renderloop: [window 0x1b81eb0][gui thread] Frame prepared, polish=0 ms, lock=0 ms, blockedForSync=27 ms, animations=0 ms qt.scenegraph.time.renderer: time in renderer: total=0ms, preprocess=0, updates=0, rendering=0
      

      This could be observed with 5.15.2 on Windows and Linux and on 6.1.2.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            janichol Andy Nichols
            florianrichter Florian Richter
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes