OSDN Git Service

drm/radeon: fix deferred page-flip detection logic on Avivo-based ASICs
authorFelix Kuehling <Felix.Kuehling@amd.com>
Fri, 24 Feb 2012 00:16:12 +0000 (19:16 -0500)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Mon, 25 Jun 2012 13:03:46 +0000 (21:03 +0800)
commitf575354b618c3e8d65867ee659b8e1ad140eff41
treec419586dd6c486a2331a2079a18b7f1f303d39eb
parent9d8098d2cdb0851a4d95b53fab61af53644039e4
drm/radeon: fix deferred page-flip detection logic on Avivo-based ASICs

This fixes page-flip-related flickering observed on Iconia Tab W500.

The update_pending status returned by radeon_page_flip is very accurate on
Avivo-based ASICs when vpos is negative.

Experiments were conducted on several ASIC generations ranging from RS690
to Cayman where the page flip was artificially timed to occur at a specific
vpos. With negative vpos, overriding update_pending always lead to
flickering.

The same experiment on RV380 and RV410 showed that update_pending is not
accurate with negative vpos. In most cases update_pending == 1 is returned
although the flip would complete before the start of the next frame.
Therefore I left the behaviour unchanged for pre-AVIVO ASICs for
performance reasons, although this may result in flickering in rare cases.

This change also makes the logic a little easier to understand.

Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Mario Kleiner <mario.kleiner@tuebingen.mpg.de>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/radeon_display.c