[PATCH xserver 1/2] xfree86/modes: Fix HW cursor clipping for crtc->driverIsPerformingTransform

Michel Dänzer michel at daenzer.net
Fri Dec 25 18:31:52 PST 2015


On 26.12.2015 04:08, Keith Packard wrote:
> Michel Dänzer <michel at daenzer.net> writes:
> 
>> From: Michel Dänzer <michel.daenzer at amd.com>
>>
>> Even if the driver is handling the transform, we still need to transform
>> the cursor position for clipping, otherwise we may hide the HW cursor
>> when the cursor is actually inside the area covered by the CRTC.
> 
> I would expect that driverIsPerformingTransform would apply only to the
> output path, and not to the cursor.

If that was the case, xf86_crtc_set_cursor_position wouldn't check for
driverIsPerformingTransform in the first place and would always
transform the coordinates passed to the driver.


> In the only example of this that I can find (in xf86-video-omap), the
> driver just has to call xf86CrtcTransformCursorPos itself.

Sure, the driver has to call xf86CrtcTransformCursorPos itself, because
xf86_crtc_set_cursor_position doesn't do it in the
driverIsPerformingTransform case.

The problem fixed by this patch is that xf86_crtc_set_cursor hides the
cursor in cases where it should be visible, because it uses the
untransformed coordinates to check whether the cursor is visible in the
driverIsPerformingTransform case. Note that the fix only applies the
transform for the visibility check in this case, not to the coordinates
passed to the driver.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the xorg-devel mailing list