Merge branch 'cogl-float'
authorRobert Bragg <robert@linux.intel.com>
Tue, 20 Jan 2009 17:22:21 +0000 (17:22 +0000)
committerRobert Bragg <robert@linux.intel.com>
Tue, 20 Jan 2009 18:47:50 +0000 (18:47 +0000)
commit3014d4ff8af55fd4067eac21536512cc0cf8b89d
tree5283a55726fde8ff18adf66fdd84cb8e458d8863
parent6d4cd416ec3155db0778246099a431331149edd2
parentc29a3b4deefaf9e4a71cf4cd9b582489de9d67c4
Merge branch 'cogl-float'

Okey; to summarise the changes...

We have converted Clutter and Cogl over to using floating point internally
instead of 16.16 fixed, but we have maintained the cogl-fixed API as a
utility to applications in case they want to implement their own optimizations.

The Clutter API has not changed (though ClutterFixed and ClutterUnit are now
internally floats) but all Cogl entry points have been changed to accept floats
now instead of CoglFixed.

To summarise the rationale...

There have been a number of issues with using fixed point though out Clutter
and Cogl including: lack of precision, lack of range, excessive format
conversion (GPUs tend to work nativly with IEEE floats) and maintainability.
One of the main arguments for fixed point - performance - hasn't shown
itself to be serious in practice so far since we seem to be more limited
by GPU performance and making improvements regarding how we submit data to
OpenGL[ES]/the GPU has had a more significant impact.

Ref: The recent multiple rectangle queuing changes + the
cogl-texture-agressive-batching branch which show significant performance
gains, and that recent tests on the ipodtouch (ARM + MBX) also showed no
loss of performance running with floats.

So finally; please forgive the inevitable fallout, this is a far reaching
change. There are still a few known issues with the fixed to float
conversion but enough works for all our conformance tests to pass, and the
remaining issues hopefully wont be too tricky to solve. For reference two
tags will be available either side of this change: "cogl-fixed-end" and
"cogl-float-start"
clutter/clutter-alpha.c
clutter/clutter-alpha.h
clutter/clutter-texture.c