This is the initial preparation for fixing the following bugs: https://bugs.freedesktop.org/show_bug.cgi?id=46277 http://lists.freedesktop.org/archives/pixman/2012-December/002385.html
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: http://cgit.freedesktop.org/~siamashka/pixman-g2d/log/?h=extended-range-transforms 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 -- 1.7.8.6 _______________________________________________ Pixman mailing list Pixman@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pixman