[Interest] animation on font.pixelSize

Thomas Senyk thomas.senyk at pelagicore.com
Mon Jan 14 18:04:02 CET 2013


On Mon, January 14, 2013 12:54:56 Samuel Rødal wrote:
> On 01/11/2013 04:59 PM, Thomas Senyk wrote:
> > Hi,
> > 
> > as with Quick2.0 we got the very nice DistanceField-font-rendering.
> > So in theory animations on Text{ font.pixelSize } should be fairly cheap,
> > right?
> > 
> > With the following code snipped I got performance problems never the less:
> > 
> > import QtQuick 2.0
> > Text {
> > 
> >      id: text
> >      width: 500
> >      height: 100
> >      text: "Test font.pixelSize animation"
> >      NumberAnimation {
> >      
> >          running: true
> >          loops: Animation.Infinite
> >          duration: 2000
> >          target: text
> >          property: "font.pixelSize"
> >          from: 10
> >          to: 90
> >      
> >      }
> > 
> > }
> > 
> > 
> > The strange thing is, on my desktop he has 100% cpu load for the first 2-4
> > loops.
> > ... I wild guess: It looks like it needs to render the font-glyphs for
> > each(?) size and after a few cycles it got all of them rendered and
> > cached...? (it can't render all of them in the first loop as he jumps due
> > to bad performance)
> > 
> > On embedded (raspberry pi) I get <20% load all the time.
> > 
> > On desktop I got:
> >   - intel xeon 3ghz
> >   - nvidia 8600gts
> >   - Qt5 checkout from this week, branch: stable
> >   - xcb as platform backend (using freetype and fontconfig)
> > 
> > On the raspberry  I got:
> >    - BCM 2835 (slow ARM11 cpu, fast VideoCore IV GPU)
> >    - eglfs as platform backend
> >    - no fontconfig -> QBasicFontDatabase
> > 
> > (If it helps I can do a fontconfig build)
> > 
> > Is this know? Can anyone verify?
> > And possible explanation? .. maybe my Qt5 build on desktop is flawed?
> 
> Try adding "renderType: Text.QtRendering" in the Text element. On
> desktop it might be that Text.NativeRendering is the default (which does
> not use distance field glyphs but texture glyphs cached based on the
> pixel size, maybe even on the scale?).

No the default was already "renderType: Text.QtRendering"

Changing the property does work, as the font is rendered differently with 
"renderType: Text.NativeRendering"
(Especially during the animation one can see how the font is changing with 
renderType: Text.NativeRendering, e.g. line-width/boldness is jumping)


The performance behavior seams to be the same.
First 2-4 cycles it's 100% cpu then is drops to <5%




Again from the other side of this thread:
I'm not searching for a quick work-around (e.g. scale), I rather want to 
understand why this is happening, why it's different on my rpi and if this is 
a bug or a wanted/accepted behavior.


Greets
Thomas

p.s.: (a bit off-topic)
@ "cached based even on scale"
Scale with "renderType: Text.NativeRendering" is similar as with Qt4/Quick1:
He renders with the specified font size and scales it during gl-painting
 -> "font.pixelSize: 1; scale: 30" looks extremely unreadable.

Where "renderType: Text.QtRendering" produces the same output with
"font.pixelSize: 1; scale: 30;" and "font.pixelSize: 30; scale: 1;"
(not counting the 'Text' elements geometry properties)




> 
> --
> Samuel
> 
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest



More information about the Interest mailing list