summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamon van der Stelt <rvanderstelt@xs4all.nl>2008-11-25 02:23:46 -0500
committerAlex Deucher <alexdeucher@gmail.com>2008-11-25 02:23:46 -0500
commit065938617c0feab17f4274a5350de02a692ba065 (patch)
tree5f13a5adefe35eff56d8e4f3e44a69451b4d2e0b
parent36a7dc6ea1e1929e986ab1159497c71521cb2f10 (diff)
Interlaced mode fixes
see bug 12626
-rw-r--r--src/radeon_cursor.c4
-rw-r--r--src/radeon_output.c8
2 files changed, 8 insertions, 4 deletions
diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c
index 08bfddf4..0fcdcf04 100644
--- a/src/radeon_cursor.c
+++ b/src/radeon_cursor.c
@@ -221,9 +221,7 @@ radeon_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
OUTREG(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin);
avivo_lock_cursor(crtc, FALSE);
} else {
- if (mode->Flags & V_INTERLACE)
- y /= 2;
- else if (mode->Flags & V_DBLSCAN)
+ if (mode->Flags & V_DBLSCAN)
y *= 2;
if (crtc_id == 0) {
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 0ac19e75..035f2b82 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -477,6 +477,12 @@ radeon_mode_fixup(xf86OutputPtr output, DisplayModePtr mode,
radeon_output->Flags &= ~RADEON_USE_RMX;
+ /*
+ * Refresh the Crtc values without INTERLACE_HALVE_V
+ * Should we use output->scrn->adjustFlags like xf86RandRModeConvert() does?
+ */
+ xf86SetModeCrtc(adjusted_mode, 0);
+
/* decide if we are using RMX */
if ((radeon_output->MonType == MT_LCD || radeon_output->MonType == MT_DFP)
&& radeon_output->rmx_type != RMX_OFF) {
@@ -536,7 +542,7 @@ radeon_mode_fixup(xf86OutputPtr output, DisplayModePtr mode,
if (IS_AVIVO_VARIANT) {
/* hw bug */
if ((mode->Flags & V_INTERLACE)
- && (mode->CrtcVSyncStart < (mode->CrtcVDisplay + 2)))
+ && (adjusted_mode->CrtcVSyncStart < (adjusted_mode->CrtcVDisplay + 2)))
adjusted_mode->CrtcVSyncStart = adjusted_mode->CrtcVDisplay + 2;
}