*BSD News Article 11794


Return to BSD News archive

Received: by minnie.vk1xwt.ampr.org with NNTP
	id AA2213 ; Mon, 01 Mar 93 10:49:36 EST
Xref: sserve comp.windows.x.i386unix:656 comp.unix.pc-clone.32bit:1645 comp.unix.bsd:11540 comp.os.linux:27520
Newsgroups: comp.windows.x.i386unix,comp.unix.pc-clone.32bit,comp.unix.bsd,comp.os.linux
Path: sserve!manuel.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!pacbell.com!att-out!cbnewsj!dwex
From: dwex@cbnewsj.cb.att.com (david.e.wexelblat)
Subject: Fix for XFree86 interlace problem on Trident cards
Organization: AT&T
Date: Thu, 25 Feb 1993 16:58:26 GMT
Message-ID: <1993Feb25.165826.1427@cbnewsj.cb.att.com>
Followup-To: comp.windows.x.i386unix
Lines: 66

We have found a fix for the problems with using XFree86 in interlaced mode
on Trident cards.  Sorry about the bugs; we did not test interlaced modes
when developing the Trident driver.  Attached below is a patch for XFree86
1.2 to fix the problem.  If you use this patch, SAVE THE ORIGINAL.  This
will be part of the next upgrade, so you'll need to back out the change.

We are still trying to figure out what to do for binary users; we will
likely put new drivers on the binary archives.  You can then rebuild the
server from the link kit.  Stay tuned.

--
David Wexelblat <dwex@mtgzfs3.att.com>  (908) 957-5871
AT&T Bell Laboratories, 200 Laurel Ave - 3F-428, Middletown, NJ  07748

"In and around the lake, mountains come out of the sky.  They stand there."
	-- Yes, Roundabout
------------------------------------------------------------------------------
*** mit/server/ddx/x386/vga256/drivers/tvga8900/driver.c:1.22	Sun Feb 21 15:55:38 1993
--- mit/server/ddx/x386/vga256/drivers/tvga8900/driver.c	Sun Feb 21 15:55:38 1993
***************
*** 1,4 ****
  /*
!  * $Header: /home/x_cvs/mit/server/ddx/x386/vga256/drivers/tvga8900/driver.c,v 1.22 1993/02/07 07:26:32 dawes Exp $
   * Copyright 1992 by Alan Hourihane, Wigan, England.
   *
--- 1,4 ----
  /*
!  * $Header: /home/x_cvs/mit/server/ddx/x386/vga256/drivers/tvga8900/driver.c,v 1.23 1993/02/14 01:49:28 dawes Exp $
   * Copyright 1992 by Alan Hourihane, Wigan, England.
   *
***************
*** 500,503 ****
--- 500,514 ----
      	DisplayModePtr mode;
  {
+ 	/*
+ 	 * In an interlaced mode, vertical numbers should be divided in
+ 	 * half!
+ 	 */
+ 	if (mode->Flags & V_INTERLACE) {
+ 		mode->VDisplay >>= 1;
+ 		mode->VSyncStart >>= 1;
+ 		mode->VSyncEnd >>= 1;
+ 		mode->VTotal >>= 1;
+ 	}
+ 
  #ifndef MONOVGA
  	if ( TVGAchipset == TVGA9000 ) {
***************
*** 537,540 ****
--- 548,561 ----
  	new->std.CRTC[23] = 0xA3;
  #endif
+ 	/*
+ 	 * In an interlaced mode, vertical numbers should be divided in
+ 	 * half! Now put them back, so the cursor tracking works.
+ 	 */
+ 	if (mode->Flags & V_INTERLACE) {
+ 		mode->VDisplay <<= 1;
+ 		mode->VSyncStart <<= 1;
+ 		mode->VSyncEnd <<= 1;
+ 		mode->VTotal <<= 1;
+ 	}
  
  	new->CRTCModuleTest = (mode->Flags & V_INTERLACE ? 0x84 : 0x80); 
-----------------------------------------------------------------------------