[Pixman] [PATCH/RFC 0/4] Fixes for bigger transforms (part 1)

Siarhei Siamashka siarhei.siamashka at gmail.com
Fri Dec 14 22:55:48 PST 2012

This is the initial preparation for fixing the following bugs:

Some notes about these patches:

The division code used for projective transforms is rather slow and still
can be improved a bit by skipping some calculations for smaller dividends
and divisors. But probably it makes sense to completely move to floating
point for projective transforms.

Affine transforms are quite easy and fast to do with fixed point. And fixed
point is convenient because it does not suffer from position dependent
rounding precision issues. Later it might be also interesting to try
introducing support for 32.32 fixed point matrices (16.16 fixed point
does not provide enough granilarity for specifying scale factors when
scaling very large images). But as the initial step, just using 16.16
matrices, 31.16 coordinates before transform and 48.16 coordinates after
transform should be good enough for XRender.

The patches are also available here:

Siarhei Siamashka (4):
  Add higher precision "pixman_transform_point_*" functions
  configure.ac: Added detection for __float128 support
  test: Added matrix-test for testing projective transform accuracy
  Use pixman_transform_point_31_16() from pixman_transform_point()

 configure.ac            |   16 ++
 pixman/pixman-matrix.c  |  408 +++++++++++++++++++++++++++++++++++++++++------
 pixman/pixman-private.h |   21 +++
 test/Makefile.sources   |    1 +
 test/affine-test.c      |    6 +-
 test/matrix-test.c      |  186 +++++++++++++++++++++
 6 files changed, 583 insertions(+), 55 deletions(-)
 create mode 100644 test/matrix-test.c


More information about the Pixman mailing list