[PATCH] Animations enable/disable system wide

Aaron J. Seigo aseigo at kde.org
Fri Feb 15 21:09:32 GMT 2008


On Friday 15 February 2008, Robert Knight wrote:
> Hi,
>
> Several comments:
>
> 1)  This is implemented as a binary yes/no option.  Will that be
> flexible enough? 

probably not.

> Animations in a small area can be typically done 
> even on fairly slow machines. 

it's not just slow machines, of course, but also network sessions (see below 
for more on that)

> Animations over a large area (eg. those 
> done by KWin) really need hardware acceleration to work properly.

yes, but it can be tricky to work out when something is h/w accelerated. (see 
below for more on that too)

> 2)  I don't think the meaning of the checkbox text and tooltips is clear.

agreed

> The reason for this option to exist is to improve performance on
> machines with slower graphics.

to add some detail to this: graphics capabilities are affected by:

* the graphics hardware (usually older or just very cheap chipsets)
* the graphics driver being used (poorly written/supported drivers)
* if the session is being run remotely (e.g. thin client, VNC, NX, RDP, etc)

> An alternative approach might be to have a slider with a number of
> levels for the performance - with the simplest and least costly at the
> top and the most expensive at the bottom.  This approach was used in

i wonder how many users will actually have the knowledge to pick an 
appropriate setting. perhaps it would be better to simply provide a set of 
use cases in a drop down box, e.g.:

Optimize graphical effects for: [ Modern desktop / laptop system
			  [ Low performance system
			  [ Remote desktop or thin client
			  [ Mobile device

the exact entries are pulled out of my posterior as i was typing this, but i 
think giving the user a set of options that map to the actual use cases might 
be a lot easier to figure out.

> - Minimal use of complex static 2D (eg. gradients), no animations
> - Use of complex static 2D (eg. gradients), no animations

well, gradients are less of an issue than animations on thin client systems, 
but more of an issues on poorly supported hardware or where there are 
accessiblity conerns.

use of gradients is actually fairly orthogonal to animation, since you may be 
able to handle animations just fine but be using a low colour display. the 
operator may also have a vision problem that requires high contrast 
(something gradients are often used to avoid). in those cases, you don't want 
gradients and complex SVGs, but you do want to keep the anims.

> - As above, but with simple animations (ie. Qt's animations)
> - As above, but with more sophisticated 2D animations (eg. which is
> what your patch allows)

well, Qt's animations are really not more or less sophisticated than the 
animations this patch is designed to turn off. the Qt dock widget animations, 
for instance, are probably murder on thin client systems due to roundtrips. 
these two use cases can be probably be folded into one and we need to ensure 
we can turn these anims off via API call in Qt.

> - As above, but with animations requiring hardware acceleration

this can be tricky. XRender calls are hw accelerated on modern Intel chipsets 
with the current Intel drivers, but not on many other driver/chipset combos 
do this AFAIK.

outside of OpenGL (which AFAIK is relatively easy to tell programtically 
whether it's being handled in software or hardware), it can be considerably 
more difficult to know when something is hardware accelerated due to the 
variance between drivers, not to mention x.org acceleration architecture 
being used and the toolkit (and version of it) being used in the application 
(since different versions of different toolkits work better or worse with 
different accel systems). not a pretty sight =)

if there is an easy way to cut through that gordian knot, perhaps one of the 
people more knowledgeable of the details of X11 might fill us in, but afaik 
that's the current state of things.

also note that these settings should probably also have a modifier for when 
operating on (low?) battery power. now we're getting into power management, 
and the UI for that belongs elsewhere, but it should be possible to jack down 
the effects when i unplug my device or when my device starts running low on 
battery.

Rafael's patch is a step in the right direction at least ... and now it's easy 
to find what needs to get fixed if we modify this API via an lxr search ;)

-- 
Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43

KDE core developer sponsored by Trolltech
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080215/91a6915f/attachment.sig>


More information about the kde-core-devel mailing list