On 02.07.2014 12:01, Dieter Nützel wrote:
Am 02.07.2014 02:29, schrieb Michel Dänzer:
On 02.07.2014 01:46, Dieter Nützel wrote:
Am 01.07.2014 10:14, schrieb Michel Dänzer:
From: Michel Dänzer michel.daenzer@amd.com
But move the programming back to the vertical blank interrupt handler. And signal the flip as being completed immediately after programming it to the hardware.
This way we don't have to guess whether or not the hardware will execute the flip in a given vertical blank period, avoiding a whole lot of trouble.
Also, not using the page flip interrupt anymore avoids problems due to completing page flips earlier than expected by userspace.
Signed-off-by: Michel Dänzer michel.daenzer@amd.com
Michel,
against which tree is this first one? Don't apply clean on 3.16-rc2.
Can't find this in 'my' source (radeon_display.c).
radeon_crtc->flip_status = RADEON_FLIP_SUBMITTED; <<<
spin_unlock_irqrestore(&crtc->dev->event_lock, flags); up_read(&rdev->exclusive_lock);
The patch applies on top of my previous page flipping fix.
Had some trouble with the first one but... After digikam -> OpenGL Viewer (r600g/RV730 AGP)
[-] [ 503.736] (II) RADEON(0): Modeline "1920x1080"x60.0 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -hsync +vsync (67.1 kHz e) [ 999.627] (WW) RADEON(0): flip queue failed: Device or resource busy [ 999.627] (WW) RADEON(0): Page flip failed: Device or resource busy
I saw these as well. It means the Xorg driver tried to submit another page flip before the previous one completed. That should be a Xorg driver / Mesa issue, but I think the Xorg driver handles this case gracefully with a copy instead of a flip.