[Interest] animation on font.pixelSize

Thomas Senyk thomas.senyk at pelagicore.com
Tue Jan 15 10:35:42 CET 2013


On Tue, January 15, 2013 08:47:33 Samuel Rødal wrote:
> On 01/14/2013 06:04 PM, Thomas Senyk wrote:
> > 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.
> 
> I don't understand it, the distance field text should not be
> re-generated based on pixelSize. Maybe there's something else going on,
> since it's on desktop you could run it through callgrind perhaps :)

K! This is the answer I was seeking for, now I can invest time with the 
guarantee that I'm not wasting it ;)

I might not have the time this week, hopefully next week.

(If somebody else got the same problem, send me an mail with your 
configuration so I can take it in consideration.)


> 
> > 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)
> 
> Good to know :)
> 
> --
> Samuel



More information about the Interest mailing list