diff --git a/src/add-ons/accelerants/matrox/ProposeDisplayMode.c b/src/add-ons/accelerants/matrox/ProposeDisplayMode.c index cfc34895bf..1234b2a573 100644 --- a/src/add-ons/accelerants/matrox/ProposeDisplayMode.c +++ b/src/add-ons/accelerants/matrox/ProposeDisplayMode.c @@ -389,7 +389,9 @@ status_t PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, con { case G100: case G200: + /* confirmed most 8-bit modes to be troublesome for TVout (data fetch errors). */ if (si->ps.tvout && + ((target->space == B_RGB16_LITTLE) || (target->space == B_RGB32_LITTLE)) && (target->timing.h_display <= 1024) && (target->timing.v_display <= 768)) { @@ -399,6 +401,7 @@ status_t PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, con case G400: case G400MAX: if (si->ps.tvout && + ((target->space == B_RGB16_LITTLE) || (target->space == B_RGB32_LITTLE)) && (target->timing.h_display <= 1024) && (target->timing.v_display <= 768)) { diff --git a/src/add-ons/accelerants/matrox/SetDisplayMode.c b/src/add-ons/accelerants/matrox/SetDisplayMode.c index 2b79155c24..8f81b22690 100644 --- a/src/add-ons/accelerants/matrox/SetDisplayMode.c +++ b/src/add-ons/accelerants/matrox/SetDisplayMode.c @@ -390,7 +390,7 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set) { /* calculate MAVEN-CRTC delay: only used during TVout */ si->crtc_delay = 17; - if (colour_depth1 <= 16) si->crtc_delay += 4; + if (colour_depth1 == 16) si->crtc_delay += 4; /* setup CRTC1 and it's pixelclock for TVout */ maventv_init(target); } diff --git a/src/add-ons/accelerants/matrox/engine/mga_maventv.c b/src/add-ons/accelerants/matrox/engine/mga_maventv.c index ca0338a3d5..7b60fc03ac 100644 --- a/src/add-ons/accelerants/matrox/engine/mga_maventv.c +++ b/src/add-ons/accelerants/matrox/engine/mga_maventv.c @@ -783,6 +783,8 @@ int maventv_init(display_mode target) case ((TV_NTSC << (14 - 9)) | 720): /* NTSC DVD mode */ /* horizontal: adhere to CRTC granularity (8) */ tv_target.timing.h_total = 784; + /* MGA_TVOs need additional tweaking */ + if (!si->ps.secondary_head) si->crtc_delay += 12; break; case ((TV_PAL << (14 - 9)) | 768): /* PAL VCD mode */ /* horizontal: adhere to CRTC granularity (8) */