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

ANGLE D3D11 errors when scrolling ListView containing TextField

    XMLWordPrintable

    Details

      Description

      The following code will produce errors like this when the ListView is scrolled:

      D3D11 ERROR: ID3D11DeviceContext::RSSetScissorRects: ScissorRect at slot 0 is invalid. Valid Rects have left (value = 20) <= right (value = 390) and top (value = 0) <= bottom (value = -2). [ STATE_SETTING ERROR #260: DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR]
      
      import QtQuick 2.10
      import QtQuick.Layouts 1.2
      import QtQuick.Controls 2.3
      
      ApplicationWindow {
          id: window
          visible: true
          width: 400
          height: 400
      
          ListView {
              anchors.fill: parent
              model: 10
              delegate: ColumnLayout {
                  width: parent.width
      
                  Label {
                      text: "Test"
                  }
      
                  TextField {
                      text: "Test123"
                  }
              }
          }
      }
      

      Similar code using only Qt Quick has no issues:

      import QtQuick 2.10
      import QtQuick.Window 2.3
      import QtQuick.Layouts 1.2
      
      Window {
          id: window
          visible: true
          width: 400
          height: 400
      
          ListView {
              anchors.fill: parent
              model: 10
              delegate: ColumnLayout {
                  width: parent.width
      
                  Text {
                      text: "Test"
                  }
      
                  TextInput {
                      text: "Test123"
                  }
              }
          }
      }
      

      If I set QT_LOGGING_RULES=qt.*=true, it shows that the errors are printed in the scenegraph's render loop:

      qt.scenegraph.time.renderloop: animations ticked in 0ms
      qt.scenegraph.renderloop:  - posting event
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2206,1216)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(343,283) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(343,283) id:1000000 timeHeld:2.713) false -> true
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2206,1206)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(343,278) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(343,278) id:1000000 timeHeld:2.716) false -> true
      qt.scenegraph.renderloop: event : update
      qt.scenegraph.renderloop: render
      qt.scenegraph.renderloop: renderWindow
      qt.scenegraph.renderloop:  - polishing
      qt.scenegraph.renderloop:  - syncing
      qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
      qt.quick.dirty:    QSGNode: QQuickColumnLayout(0x11cf45f4990, parent=0x11ceca92ab0, geometry=0,432 400x54, z=1) HideReference
      qt.quick.dirty:    QSGNode: QQuickItem(0x11ceca92ab0, parent=0x11ceca6ec70, geometry=0,-41.5 400x540) Position
      qt.scenegraph.renderloop:  - rendering
      D3D11 ERROR: ID3D11DeviceContext::RSSetScissorRects: ScissorRect at slot 0 is invalid. Valid Rects have left (value = 20) <= right (value = 390) and top (value = 0) <= bottom (value = -21). [ STATE_SETTING ERROR #260: DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR]
      qt.scenegraph.time.renderer: time in renderer: total=5ms, preprocess=0, updates=0, binding=0, rendering=4
      qt.scenegraph.renderloop:  - swapping
      qt.scenegraph.renderloop:  - frameDone
      qt.scenegraph.time.renderloop: Frame rendered with 'windows' renderloop in: 11ms, polish=0, sync=0, render=5, swap=5 - QQuickApplicationWindow(0x11ce9ea9bb0 active exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=760,325 400x400)
      qt.scenegraph.renderloop: advancing animations
      qt.scenegraph.renderloop: animations advanced
      qt.scenegraph.time.renderloop: animations ticked in 0ms
      qt.scenegraph.renderloop:  - posting event
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2207,1197)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(343.5,273.5) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(343.5,273.5) id:1000000 timeHeld:2.73) false -> true
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2209,1172)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(344.5,261) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(344.5,261) id:1000000 timeHeld:2.732) false -> true
      qt.scenegraph.renderloop: event : update
      qt.scenegraph.renderloop: render
      qt.scenegraph.renderloop: renderWindow
      qt.scenegraph.renderloop:  - polishing
      qt.scenegraph.renderloop:  - syncing
      qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
      qt.quick.dirty:    QSGNode: QQuickColumnLayout(0x11ceca39280, parent=0x11ceca92ab0, geometry=0,0 400x54, z=1) HideReference
      qt.quick.dirty:    QSGNode: QQuickItem(0x11ceca92ab0, parent=0x11ceca6ec70, geometry=0,-58.5 400x540) Position
      qt.scenegraph.renderloop:  - rendering
      qt.scenegraph.time.renderer: time in renderer: total=4ms, preprocess=0, updates=0, binding=0, rendering=3
      qt.scenegraph.renderloop:  - swapping
      qt.scenegraph.renderloop:  - frameDone
      qt.scenegraph.time.renderloop: Frame rendered with 'windows' renderloop in: 10ms, polish=0, sync=0, render=4, swap=6 - QQuickApplicationWindow(0x11ce9ea9bb0 active exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=760,325 400x400)
      qt.scenegraph.renderloop: advancing animations
      qt.scenegraph.renderloop: animations advanced
      qt.scenegraph.time.renderloop: animations ticked in 0ms
      qt.scenegraph.renderloop:  - posting event
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2210,1164)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(345,257) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(345,257) id:1000000 timeHeld:2.747) false -> true
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2213,1153)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(346.5,251.5) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(346.5,251.5) id:1000000 timeHeld:2.748) false -> true
      qt.scenegraph.renderloop: event : update
      qt.scenegraph.renderloop: render
      qt.scenegraph.renderloop: renderWindow
      qt.scenegraph.renderloop:  - polishing
      qt.scenegraph.renderloop:  - syncing
      qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
      qt.quick.dirty:    QSGNode: QQuickItem(0x11ceca92ab0, parent=0x11ceca6ec70, geometry=0,-68 400x540) Position
      qt.scenegraph.renderloop:  - rendering
      qt.scenegraph.time.renderer: time in renderer: total=4ms, preprocess=0, updates=0, binding=0, rendering=4
      qt.scenegraph.renderloop:  - swapping
      qt.scenegraph.renderloop:  - frameDone
      qt.scenegraph.time.renderloop: Frame rendered with 'windows' renderloop in: 10ms, polish=0, sync=0, render=4, swap=6 - QQuickApplicationWindow(0x11ce9ea9bb0 active exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=760,325 400x400)
      qt.scenegraph.renderloop: advancing animations
      qt.scenegraph.renderloop: animations advanced
      qt.scenegraph.time.renderloop: animations ticked in 0ms
      qt.scenegraph.renderloop:  - posting event
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2217,1131)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(348.5,240.5) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(348.5,240.5) id:1000000 timeHeld:2.763) false -> true
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2217,1123)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(348.5,236.5) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(348.5,236.5) id:1000000 timeHeld:2.764) false -> true
      qt.scenegraph.renderloop: event : update
      qt.scenegraph.renderloop: render
      qt.scenegraph.renderloop: renderWindow
      qt.scenegraph.renderloop:  - polishing
      qt.scenegraph.renderloop:  - syncing
      qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
      qt.quick.dirty:    QSGNode: QQuickItem(0x11ceca92ab0, parent=0x11ceca6ec70, geometry=0,-83 400x540) Position
      qt.scenegraph.renderloop:  - rendering
      qt.scenegraph.time.renderer: time in renderer: total=3ms, preprocess=0, updates=0, binding=0, rendering=3
      qt.scenegraph.renderloop:  - swapping
      qt.scenegraph.renderloop:  - frameDone
      qt.scenegraph.time.renderloop: Frame rendered with 'windows' renderloop in: 10ms, polish=0, sync=0, render=3, swap=6 - QQuickApplicationWindow(0x11ce9ea9bb0 active exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=760,325 400x400)
      qt.scenegraph.renderloop: advancing animations
      qt.scenegraph.renderloop: animations advanced
      qt.scenegraph.time.renderloop: animations ticked in 0ms
      qt.scenegraph.renderloop:  - posting event
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2217,1113)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(348.5,231.5) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.scenegraph.renderloop: maybeUpdate
      qt.quick.pointer.events: QQuickEventPoint(accepted:false state:Updated scenePos:QPointF(348.5,231.5) id:1000000 timeHeld:2.78) false -> true
      qt.scenegraph.renderloop: event : update
      qt.scenegraph.renderloop: render
      qt.scenegraph.renderloop: renderWindow
      qt.scenegraph.renderloop:  - polishing
      qt.scenegraph.renderloop:  - syncing
      qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
      qt.quick.dirty:    QSGNode: QQuickColumnLayout(0x11cf4e59010, parent=0x11ceca92ab0, geometry=0,486 400x54, z=1) HideReference
      qt.quick.dirty:    QSGNode: QQuickItem(0x11ceca92ab0, parent=0x11ceca6ec70, geometry=0,-88 400x540) Position
      qt.scenegraph.renderloop:  - rendering
      D3D11 ERROR: ID3D11DeviceContext::RSSetScissorRects: ScissorRect at slot 0 is invalid. Valid Rects have left (value = 20) <= right (value = 390) and top (value = 0) <= bottom (value = -36). [ STATE_SETTING ERROR #260: DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR]
      qt.scenegraph.time.renderer: time in renderer: total=4ms, preprocess=0, updates=0, binding=0, rendering=4
      qt.scenegraph.renderloop:  - swapping
      qt.scenegraph.renderloop:  - frameDone
      qt.scenegraph.time.renderloop: Frame rendered with 'windows' renderloop in: 10ms, polish=0, sync=0, render=4, swap=5 - QQuickApplicationWindow(0x11ce9ea9bb0 active exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=760,325 400x400)
      qt.scenegraph.renderloop: advancing animations
      qt.scenegraph.renderloop: animations advanced
      qt.scenegraph.time.renderloop: animations ticked in 0ms
      qt.scenegraph.renderloop:  - posting event
      qt.qpa.windows: QWindowsScreen::windowAt QPoint(2218,1069)  returns  QQuickApplicationWindow(0x11ce9ea9bb0)
      qt.quick.mouse: QQuickWindow::handleMouseEvent() QEvent::Type(MouseMove) QPointF(349,209.5) 0 QFlags<Qt::MouseButtons>(LeftButton)
      qt.quick.hover.trace: 0x11ceca37d90
      qt.scenegraph.renderloop: maybeUpdate
      

        Attachments

          Issue Links

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

            Activity

              People

              Assignee:
              qt.team.quick.subscriptions Qt Quick and Widgets Team
              Reporter:
              mitch_curtis Mitch Curtis
              Votes:
              9 Vote for this issue
              Watchers:
              12 Start watching this issue

                Dates

                Created:
                Updated:

                  Gerrit Reviews

                  There are no open Gerrit changes