[Development] [QML] Avoiding graphics flicker in Quick2
Sean Harmer
sean.harmer at kdab.com
Fri Aug 5 10:53:53 CEST 2016
Hi,
Can you try a plain OpenGL test application with RGBA8 framebuffer and see if
that exhibits the same flashing/flickering problem. If so, it's a
driver/hardware issue.
If you are forced into then using a 16-bit framebuffer, then you can avoid the
banding by using dithering in your gradients. Either apply the dithering offline
and store the gradients as images or write a custom material that applies the
dithering in the fragment shader.
Cheers,
Sean
On Friday 05 August 2016 08:12:59 Denis Shienkov wrote:
> Hi all,
>
> I have an idea how to avoid flickering, but I don't know about results:
> what if I will discard the Open GL support in favor to Quick2 render?
>
> I have read this documentation: http://doc.qt.io/QtQuick2DRenderer/
> which says about the "Qt Quick 2D Renderer" module.
>
> So, my things is:
>
> 1. Download && build && install this module:
>
> git://code.qt.io/qt/qtdeclarative-render2d.git
>
> 2. Use this env variable:
>
> export QMLSCENE_DEVICE=softwarecontext
>
> 3. Run my app...
>
>
> But, I don't understand:
>
> 1) What of engine is used to 2D rendering in case if I have EGLFS only?
>
> 2) Should I re-build Qt5 too with the "--no-opengl" option (or I can
> keep the "-opengl es2" option) ?
>
> 04.08.2016 16:10, Denis Shienkov пишет:
> > Hi Robin,
> >
> > > Repeating my last answer...
> > > http://lists.qt-project.org/pipermail/development/2016-July/026736.html
> >
> > I'm sorry, but I did not receive (did not see) your last answer.
> >
> > > I'm going to guess you're using eglfs or something like that
> >
> > Yes, I use EGLFS via X11 on Linux Apalis T30 board, where are used
> > NVIDIA's drivers.
> >
> > Seems, the flickering is when are used:
> >
> > export QT_QPA_EGLFS_FORCE888=1
> >
> > ENV variable... (I need this variable to smooth the Image's
> > gradients... even X11 started with 24-bit depth).
> >
> > PS: But, I'm not sure about QT_QPA_EGLFS_FORCE888... :(
> >
> > > Using an overlay to debug item positions (QSG_VISUALIZE=overdraw)
> >
> > could be handy for trying to rule
> > this out, as if it is specific to the application,
> >
> > Ok, many thanks, I will try it.
> >
> >
> > 2016-08-04 14:57 GMT+03:00 Robin Burchell <robin+qt at viroteck.net
> >
> > <mailto:robin+qt at viroteck.net>>:
> > Repeating my last answer...
> >
> > http://lists.qt-project.org/pipermail/development/2016-July/026736.htm
> > l
> >
> > On Thu, Aug 4, 2016, at 01:50 PM, Denis Shienkov wrote:
> > > {quote}
> > >
> > > Hi all.
> > >
> > > I have some QML application, where just use QQuickView as QML
> >
> > container.
> >
> > > This application uses Qt 5.7.x and running on Linux embedded
> >
> > board with
> >
> > > the
> > > NVIDIA core (Toradex Apalis T30).
> > >
> > > But sometimes I got flickering in process of animation. A flickering
> > > represents in form of a "white" strips with full-screen width
> >
> > and 1/5-1/6
> >
> > > screen heigth. This flickers happens quickly and frequently
> >
> > (every ~20-60
> >
> > > seconds, randomly)...
> > >
> > > I have seen this "Avoiding graphics flicker in Qt / QML" [1]
> >
> > blog where
> >
> > > are
> > > used QML with Qt 4.x,
> > > where were used this trics:
> > >
> > > {code}
> > > int main(int argc, char **argv)
> > > {
> > >
> > > ...
> > >
> > > view.setAttribute(Qt::WA_OpaquePaintEvent);
> > > view.setAttribute(Qt::WA_NoSystemBackground);
> > > view.viewport()->setAttribute(Qt::WA_OpaquePaintEvent);
> > > view.viewport()->setAttribute(Qt::WA_NoSystemBackground);
> > >
> > > ...
> > >
> > > }
> > > {code}
> > >
> > > But, in my case I have use Quick v2, with QQuickView instead of
> > > QDeclarativeView,
> > > which does not allowed to setup any attributes.
> > >
> > > So, my questions is: is there are any way to setup
> > > Qt::WA_OpaquePaintEvent
> > > and/or
> > > Qt::WA_NoSystemBackground in Quck2? Or, maybe is it possible to use
> > > another
> > > tricks?
> > >
> > > BR,
> > > Denis
> >
> > [1]https://blog.rburchell.com/2011/11/avoiding-graphics-flicker-in-qt-> > qml.html>
> > > {quote}
> > >
> > > This flickering present on some HDMI displays...
> > >
> > > We currently have this flags:
> > >
> > > {code}
> > > ...
> > > view.setFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
> > > ...
> > > {code}
> > >
> > > Maybe is it an reasons of flikering? Has someone any ideas?
> > >
> > > BR,
> > > Denis
> > > _______________________________________________
> > > Development mailing list
> > > Development at qt-project.org <mailto:Development at qt-project.org>
> > > http://lists.qt-project.org/mailman/listinfo/development
--
Dr Sean Harmer | sean.harmer at kdab.com | Managing Director UK
KDAB (UK) Ltd, a KDAB Group company
Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090
Mobile: +44 (0)7545 140604
KDAB - Qt Experts
More information about the Development
mailing list