[PATCH 1/2] drm/radeon: Program page flips to execute in hblank instead of vblank

Michel Dänzer michel at daenzer.net
Tue Jul 1 20:52:39 PDT 2014


On 02.07.2014 12:11, Michel Dänzer wrote:
> 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 at 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 at 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.

I can also reproduce these with 3.15 without any additional page
flipping changes (and probably could with older kernels as well). It
happens for me when changing some GL apps from windowed to fullscreen
mode. I think the first flip is from kwin and the second, failing one
from the client.


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


More information about the dri-devel mailing list