• Mike Gabriel's avatar
    Move matrix operations from X server to pixman 0.13.2, handle RandR transform… · f9dbc64f
    Mike Gabriel authored
    Move matrix operations from X server to pixman 0.13.2, handle RandR transform matrices in floating point.
    
     Backported from X.org, inspired by:
    
     commit 9ffc6719390df8fdd0a5295a7a7a0eaea792be45
     Author: Keith Packard <keithp@keithp.com>
     Date:   Mon Nov 24 13:08:48 2008 -0800
    
        Move matrix operations from X server to pixman 0.13.2
    
        pixman 0.13.2 now holds all of the matrix operations. This leaves
        the protocol conversion routines and some ABI stubs in place
    Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
    
     commit c4b9ab6bf56139fdd8c7c584a6f523c6766cddd6
     Author: Keith Packard <keithp@keithp.com>
     Date:   Tue Apr 29 08:29:42 2008 -0700
    
        Handle transform failure when computing shadow damage area.
    
        PictureTransformBounds can fail, when this happens, damage the entire screen
        so that the shadow gets repainted correctly.
    
     commit fa6a1df209bd74da1d545982cca437afc2198cc1
     Author: Keith Packard <keithp@keithp.com>
     Date:   Fri Mar 21 02:35:28 2008 -0700
    
        Avoid overflow in PictureTransformPoint. Fix PictureTransformIsIdentity.
    
        PictureTransformPoint computes homogeneous coordinates internally, but fails
        to handle intermediate values larger than 16.16. Use 64 bit intermediate
        values while computing the final result at 16.16 and only complain if that
        result is too large.
    
        PictureTransformIsIdentity was completely wrong -- it was not checking for
        identity transforms at all.
    
     commit 49db14e4ac26070ed86088419483888dda18b603
     Author: Keith Packard <keithp@keithp.com>
     Date:   Wed Mar 19 00:46:35 2008 -0700
    
        Handle RandR transform matrices in floating point.
    
        RandR matrix computations lose too much precision in fixed point;
        computations using the inverted matrix can be as much as 10 pixels off.
        Convert them to double precision values and pass those around. These API
        changes are fairly heavyweight; the official Render interface remains fixed
        point, so the fixed point matrix comes along for the ride everywhere.
    
     commit 97ab0c6eff870b52c0383b63a78cec49059b2545
     Author: Keith Packard <keithp@keithp.com>
     Date:   Tue Mar 18 15:15:40 2008 -0700
    
        When converting from double to fixed, round carefully.
    
        This reduces the matrix representation error after inverting a
        transformation matrix (although it doesn't eliminate it entirely).
    
        Perhaps we should extend Render to include 64-bit floating point transforms...
    
     commit 160252d94f04acc95f0a4e0f884ff565a5aa0744
     Author: Keith Packard <keithp@keithp.com>
     Date:   Mon Mar 17 23:03:56 2008 -0700
    
        Add matrix inversion function (uses doubles)
    
        The obvious matrix inversion function, coded using doubles to avoid fiddling
        with fixed point precision adventures.
    
     commit ff9d1cd843a9b0aba69a3d788b21d5f6af702590
     Author: Keith Packard <keithp@keithp.com>
     Date:   Thu Mar 13 21:30:18 2008 -0700
    
        Add funcs to convert between protocol and pixman matrices
    
     commit f547650328287545a7a4d96df8d6a6c606dd95a9
     Author: Keith Packard <keithp@keithp.com>
     Date:   Thu Mar 13 14:50:13 2008 -0700
    
        Export a bunch of matrix operations from render.
    
        The render extension uses many matrix operations internally, this change
        exposes those functions to other parts of the server, drivers and
        extensions. The change is motivated by the 'transform' additions to the
        RandR extension but will likely be useful elsewhere.
    
     Backport to nx-libs: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
    f9dbc64f
matrix.c 2.8 KB