The matrix computation for rotation and reflection resulted in dropping a
row or column of pixels as the offsets used in the matrix computations used
width and height rather than width-1 and height-1.
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 77c7a64e88)
Just return a zeroed-out reply in that case. This is unambiguous, and
distinguishes "you didn't name a CRTC" from "you named a CRTC that can't
do panning".
(cherry picked from commit 1230939965)
Signed-off-by: Keith Packard <keithp@keithp.com>
If the computation of the composite fixed-point transform for RandR
overflows at any point, take the resulting floating point transform and
scale that back to fit in a fixed point matrix. This ensures that a matrix
will always be available, although perhaps at reduced precision. Someday we
should add floating point matrices to Render.
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 62fc98cb88)
Signed-off-by: Keith Packard <keithp@keithp.com>
This is the RandR 1.1 version of GetScreenResources and needs to re-query the
DDX to see if the mode pool changed.
Fixes Launchpad bug #325115.
Signed-off-by: Adam Jackson <ajax@redhat.com>
The new path should only re-query on the other requests when we haven't
gathered the information from the DDX yet (such as with a non-RandR 1.2 DDX).
Bug #19037.
(cherry picked from commit 317f2b4a9f)
Primary outputs may not have a CRTC.
Loops fetching CRTCs respecting primary output were broken.
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 4de5705545)
The test was inverted from the protocol spec, and besides, the test is bogus
anyways.
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit c1f2be1f3f)
Fix a memory leak in ProcRRGetCrtcTransform() while I'm at it.
Signed-off-by: Julien Cristau <jcristau@debian.org>
Cc: Keith Packard <keithp@keithp.com>
(cherry picked from commit 0b5ecabfb8)
Signed-off-by: Keith Packard <keithp@keithp.com>
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: Keith Packard <keithp@keithp.com>
Dereferencing the NULL mode pointer would cause a crash. As these transform
matrices won't be used while the CRTC is disabled, just leave their values
alone.
When the transform management was moved from randrstr.h, the associated
header file became necessary to build drivers. Include it as a part of the
sdk headers.
Instead of using a separate function to notify DIX about transform changes,
add the transform to RRCrtcNotify so that the whole Crtc state changes
atomically.
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.
Add APIs to xf86RandR12 support and randr extension to record whether the
driver supports transforms, report that value in the RRGetCrtcTransform
reply.
It doesn't make sense to have the client invert this matrix when the server
can do so reasonably efficiently. This avoids weird fixed point rounding
errors when testing the transform against its inverse. Now to fix the
protocol.
New RRCrtcGetTransform function in DIX that DDX can use to get the pending
transform. The DDX code should be complete; the DIX code is just a stub at
this point.