Bug 41062

Summary: R600: mouse cursor display corruption
Product: xorg Reporter: Nicholas Miell <nmiell>
Component: Driver/RadeonAssignee: xf86-video-ati maintainers <xorg-driver-ati>
Status: RESOLVED NOTABUG QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg.0.log none

Description Nicholas Miell 2011-09-20 16:30:08 UTC
Created attachment 51439 [details]
Xorg.0.log

When I move the mouse cursor to the left half of the top row of the screen, a flickering line appears to the right of the cursor in the top row of pixels.

The line is largest when the cursor is closest to the upper left pixel, and shrinks as I move it to the right until somewhere around the center of the screen it stops appearing entirely. The line shrinks to the right, i.e. at its longest it extends from the cursors hotspot to a point maybe 64 pixels (an eyeballed guess) to the right of the hotspot, and as it shrinks the gap between the hotspot and the flickering line increases until it is invisible.

As far as I can tell, this flickering line always appears when I move the cursor to the top row of pixels on the left half of the screen, although often the color of the flickering line blends in very well to the background, so it is possible that it goes away entirely without me noticing.

The flickering line does not appear in screenshots and happens both with and without GL desktop compositing.

Hardware is:
01:05.0 VGA compatible controller: ATI Technologies Inc RS880 [Radeon HD 4250]

Software is:
xorg-x11-drv-ati-6.14.1-2.20110525gitfe5c42f51.fc15.x86_64
xorg-x11-server-Xorg-1.10.4-1.fc15.x86_64
libdrm-2.4.26-1.fc15.x86_64
kernel-2.6.40.4-5.fc15.x86_64
Comment 1 Nicholas Miell 2011-09-21 17:16:19 UTC
Looking at radeon_crtc_cursor_move in linux/drivers/gpu/drm/radeon/radeon_cursor.c:

1) Is the calculation of xorigin and yorigin correct? Looks off by one to me.

2) If xorigin and yorigin are non-zero, shouldn't they be subtracted from the cursor width and cursor height before being written to EVERGREEN_CUR_SIZE/AVIVO_D1CUR_SIZE?
Comment 2 Michel Dänzer 2011-09-22 03:19:48 UTC
Sounds like some kind of timing/watermark issue which prevents the HW cursor data from being available in time for the left half of the top scanout line. Does radeon.disp_priority=2 make a difference?

I'm not seeing this on my RS880 laptop, but it probably depends on the panel mode etc.
Comment 3 Nicholas Miell 2011-09-22 12:13:08 UTC
Adding radeon.disp_priority=2 to the kernel command line messes up the screen colors, but does nothing to stop the cursor from flickering.

This the VGA output to a CRT, by the way. No LCD panels involved.
Comment 4 Nicholas Miell 2011-10-19 19:17:53 UTC
Apparently I've been operating this monitor at a resolution that exceeds its capabilities, and this actually started to matter when I switched GPUs.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.