Home | History | Annotate | Line # | Download | only in dist
      1  1.1  mrg S3 ViRGE 4.0 devel notes
      2  1.1  mrg 
      3  1.1  mrg 
      4  1.1  mrg 
      5  1.1  mrg Status
      6  1.1  mrg ------
      7  1.1  mrg 1/26/2003
      8  1.1  mrg Ver 1.8.6
      9  1.1  mrg Pre-4.3.0 release.  320x240 doublescan support w/mouse adjust,
     10  1.1  mrg power management printouts, DAC error printout fix, log XVideo status based
     11  1.1  mrg on chipset, preliminary support for disabling XV when a mode doesn't
     12  1.1  mrg support it.
     13  1.1  mrg 
     14  1.1  mrg 5/18/2002
     15  1.1  mrg Ver 1.8.5
     16  1.1  mrg 320x240 mode support (doublescan).
     17  1.1  mrg 
     18  1.1  mrg 2/2/02
     19  1.1  mrg Ver 1.8.4
     20  1.1  mrg Make 320x240 mode work in depth 15 & 16.
     21  1.1  mrg Testing, need to switch streams on/off based on dblscan_v flag and mode.
     22  1.1  mrg Virge MX panel_on test (doesn't work.)
     23  1.1  mrg 
     24  1.1  mrg 1/10/02
     25  1.1  mrg Ver 1.8.3
     26  1.1  mrg DGA fix, buffer pointer used wrong value.  Submitted for 4.2.0 (late).
     27  1.1  mrg 
     28  1.1  mrg Ver 1.8.2
     29  1.1  mrg DPMS testing (display DPMS status, disable MX LCD panel), DGA testing.
     30  1.1  mrg 
     31  1.1  mrg 11/11/01 KJB
     32  1.1  mrg Ver 1.8.1
     33  1.1  mrg ViRGE MX (& GX2) fix to CR63 for problems with modes < 1024x768 from 
     34  1.1  mrg max <sunmax (a] libero.it>. Submitted for 4.2.0.
     35  1.1  mrg 
     36  1.1  mrg 11/5/01 KJB
     37  1.1  mrg Ver 1.8.0
     38  1.1  mrg ViRGE MX & GX2 XVideo changes.  Fix overlap/color keying on MX, fix
     39  1.1  mrg and enable GX2 XVideo.
     40  1.1  mrg Submitted for 4.2.0.
     41  1.1  mrg 
     42  1.1  mrg 11/4/01 KJB
     43  1.1  mrg Ver 1.7.0
     44  1.1  mrg Bump version for 4.2.0.  Update man and README.
     45  1.1  mrg 
     46  1.1  mrg 11/3/01 KJB
     47  1.1  mrg Ver 1.6.16
     48  1.1  mrg Pre-4.2.0 patch.  cr3a fix, virge mx xvideo support, xvideo disable option
     49  1.1  mrg (helps with high res modes on dx and screen noise), remove accel solid
     50  1.1  mrg fill rect for trio3d, bring over some trio3d and mx fixes from 4.0.3 test
     51  1.1  mrg drivers.  Includes VERBLEV bump to 5 to remove register dumps in log file.
     52  1.1  mrg 
     53  1.1  mrg Ver 1.6.15
     54  1.1  mrg Experimental - Scanline color expand - GX2
     55  1.1  mrg 
     56  1.1  mrg 9/21/01 KJB
     57  1.1  mrg Ver 1.6.14
     58  1.1  mrg ModeInit - cr3a for MX/GX2, don't clear reserved bit 0x40 (revert change).
     59  1.1  mrg Back out previous cr3a patch for testing.
     60  1.1  mrg 
     61  1.1  mrg 9/18/01 KJB
     62  1.1  mrg Ver 1.6.13
     63  1.1  mrg Option "xvideo" added.  Add patch provided by Sven Menke
     64  1.1  mrg <Menke (a] SLAC.Stanford.EDU> for XV support on MX (slight changes to logic).
     65  1.1  mrg 
     66  1.1  mrg Ver 1.6.12
     67  1.1  mrg Adam J. Richter's cr3a fix (possibly temporary).
     68  1.1  mrg 
     69  1.1  mrg 5/30/01 KJB
     70  1.1  mrg Ver 1.6.10
     71  1.1  mrg Disable MaxHValue & MaxVValue setting.
     72  1.1  mrg 
     73  1.1  mrg 1/03/01 KJB
     74  1.1  mrg Ver 1.6.0
     75  1.1  mrg Revert ViRGE to pre-Xv changes.  ViRGE DX still supports Xv, but changes
     76  1.1  mrg added for Xv and ViRGE caused problems with normal display.
     77  1.1  mrg 
     78  1.1  mrg 11/27/00 KJB
     79  1.1  mrg Ver 1.5.0
     80  1.1  mrg Clean up, bump version for 4.0.2 submission.
     81  1.1  mrg CR3A, bit 0x40 (reserved) cleared for MX/GX2.  Update man page.
     82  1.1  mrg 
     83  1.1  mrg 11/24/00 KJB
     84  1.1  mrg Disable CPU to screen color expansion on GX2, causes lockups on GX2 with
     85  1.1  mrg 'locate html' in an xterm.  Add WaitCmd code to prevent accelerator and
     86  1.1  mrg reg command path activity at the same time on GX2.
     87  1.1  mrg XVideo fixes, left side clipping fixed for video windows extending off left
     88  1.1  mrg side of screen.  Add horizontal filtering modes for 1-2x and >3x scaling.
     89  1.1  mrg 
     90  1.1  mrg 11/7/00 KJB
     91  1.1  mrg Ver 1.4.0
     92  1.1  mrg Enable MX fixes, testing with accel BLT_BUG set is worse on GX2, so left
     93  1.1  mrg it out.  BLT_BUG wasn't being enabled on ViRGE & VX because of case usage,
     94  1.1  mrg enabled now.  Re-enable silken mouse for GX2.  Add Render/fbPicture support.
     95  1.1  mrg Fix a few compiler warnings.
     96  1.1  mrg 
     97  1.1  mrg 11/5/00 KJB
     98  1.1  mrg Continued work on GX2, much stabler now, but I think there is a lockup case
     99  1.1  mrg left if you enable pci_burst and pci_retry with accel.  I still see screen
    100  1.1  mrg flashes with vertical bars once in a while, and the log reports a GEReset.
    101  1.1  mrg Added fbPicture (render) support, untested.  XV code for GX2 is added,
    102  1.1  mrg but not working yet.
    103  1.1  mrg 
    104  1.1  mrg 10/29/00 KJB
    105  1.1  mrg Much work on GX2, now SWCursor locks up but HWCursor is stable, go figure.
    106  1.1  mrg Loading Netscape a couple times with the mail window was enough to lock it
    107  1.1  mrg up twice in a row.  Server was locked but not a box (PCI) lock.  Also, 
    108  1.1  mrg vertical barring still occurred a couple times, so HW cursor wasn't causing
    109  1.1  mrg that.  Try blt_bug flag again for lock up case.  And attach to debug server
    110  1.1  mrg and bt...  Sleep now...
    111  1.1  mrg 
    112  1.1  mrg 10/21/00 KJB
    113  1.1  mrg Ver 1.3.0
    114  1.1  mrg Depth 16 Xv support added.  Testing on ViRGE DX.  1280x1024x24 is noisy, so
    115  1.1  mrg needs FIFO tuning.
    116  1.1  mrg 
    117  1.1  mrg 9/27/00 KJB
    118  1.1  mrg Initial Xv support in depth 24.
    119  1.1  mrg 
    120  1.1  mrg 9/10/00 KJB
    121  1.1  mrg Convert to FB.  Add option "UseFB", default true.  Added
    122  1.1  mrg VerticalRetraceWait timeout back as default.  #if0 out the line accel
    123  1.1  mrg code in s3v_accel.c.  The Subsequent...Bresenham line code causes a lockup
    124  1.1  mrg when used with fb.  We didn't have any hardware accel in there anyway...
    125  1.1  mrg 
    126  1.1  mrg 7/25/00 KJB
    127  1.1  mrg Started Xv additions.
    128  1.1  mrg 
    129  1.1  mrg 6/26/00 KJB
    130  1.1  mrg GX2 seems to have an accel bug.  I see the entire screen go solid color or
    131  1.1  mrg a wide stripe pattern for about 1 second.  The S3VGEReset gets called twice,
    132  1.1  mrg and then everything is okay.  Unless SilkenMouse is enabled...  That seems to
    133  1.1  mrg get you a server lock instead.  Short term is to disable SilkenMouse for GX2
    134  1.1  mrg only.  SilkenMouse isn't really the problem of course, it just happens that if
    135  1.1  mrg we move the mouse during the 1 second engine lockup we appear more likely to
    136  1.1  mrg never recover.
    137  1.1  mrg 
    138  1.1  mrg 6/23/00 KJB
    139  1.1  mrg Ver 1.2.0 - Fix console corruption on GX2 caused by reserved bit use in CR3A.
    140  1.1  mrg Fix GX2 noise on screen in hi-res depth 24 by increasing FIFO fill threshold. 
    141  1.1  mrg 
    142  1.1  mrg 6/12/00 KJB
    143  1.1  mrg Ver 1.1.0 - Add Init for SilkenMouse, add xf86SetBackingStore call, move
    144  1.1  mrg int10Symbols[] to remove warnings.
    145  1.1  mrg 
    146  1.1  mrg 3/3/00 KJB
    147  1.1  mrg Ver 1.0.0 - S3VProbeDDC code for X -configure option added, add timeout to
    148  1.1  mrg WAITIDLE macro in s3v_macros.h, change ImageWriteFlags adding NO_GXCOPY.
    149  1.1  mrg Start of GX2 fixes, use CR regs for FIFO settings.  Update copyrights.
    150  1.1  mrg 
    151  1.1  mrg 2/11/00 KJB
    152  1.1  mrg Ver 0.11.0 - Add cfb16/24BresS to module symbols to remove warnings.
    153  1.1  mrg Fix viewport restore problem after EnterVT in 24 bpp.
    154  1.1  mrg Clean up log output, removing register dumps from normal console log.
    155  1.1  mrg 
    156  1.1  mrg 6/26/99 KJB
    157  1.1  mrg Make the memory settings for fifo_conservative the default, 'fifo_conservative'
    158  1.1  mrg does nothing additional now.  Patch includes DGA2 additions below, non-working.
    159  1.1  mrg Expected to be included in 3.9Pu.
    160  1.1  mrg 
    161  1.1  mrg Changes in 3.9Pt by others include additions for newer RAC support.  Some reports
    162  1.1  mrg say multi-head works now with ViRGE.
    163  1.1  mrg 
    164  1.1  mrg 6/17/99 KJB
    165  1.1  mrg Ver 0.9.0 - Prelim DGA2 support modeled after MGA.
    166  1.1  mrg 
    167  1.1  mrg 5/28/99 KJB
    168  1.1  mrg Ver 0.8.0 - Changes to 3.9Po - Cleaned up debug register printing function, minor
    169  1.1  mrg changes to man page, remove S3V.sgml and add new s3virge.sgml in doc/sgml, also
    170  1.1  mrg remove README.S3V from doc directory.
    171  1.1  mrg 
    172  1.1  mrg 
    173  1.1  mrg 4/5/99 KJB
    174  1.1  mrg 3.9Ph - Ver 0.7.0 - Virge man page added, HW Cursor fixed, rename chipsets removing
    175  1.1  mrg slashes in the names.
    176  1.1  mrg 
    177  1.1  mrg 03/27/99 KJB
    178  1.1  mrg Ver 0.6.0 - hwcursor additions, added s3v_hwcurs.c and Option "swcursor".
    179  1.1  mrg Default is hwcursor, Option "swcursor" will disable it.
    180  1.1  mrg 
    181  1.1  mrg Ver 0.5.0 - patch against 3.9Pf (seq 2615), fix depth 24 and Accel flags, sync pci_burst option to previous changes, remove s3v_comp.h and s3v_pio.c and merge as needed.
    182  1.1  mrg 
    183  1.1  mrg 03/21/99 KJB
    184  1.1  mrg 3.9Pf has Matt Grossman's Alpha changes.
    185  1.1  mrg For next patch - remove s3v_pio.c and s3v_comp.h.  Include the EnableMMIO and
    186  1.1  mrg DisableMMIO functions from s3v_pio.c in s3v_driver.c.
    187  1.1  mrg 
    188  1.1  mrg 03/02/99 KJB
    189  1.1  mrg 3.9Pc - depth 24 doesn't work on my ViRGE DX.  NoAccel doesn't start, accel does
    190  1.1  mrg but has blocky noise.
    191  1.1  mrg 
    192  1.1  mrg 03/01/99 KJB
    193  1.1  mrg Macro change done, VGAIN/VGAOUT for register access, INREG/OUTREG for s3v_accel.c.
    194  1.1  mrg Added Mark Vojkovich's re-write of the accel code.  It may only be clean for ViRGE DX
    195  1.1  mrg at the moment.  x11perf showed a couple artifacts in 'move window via parent'.
    196  1.1  mrg In progress, attempt to call cfbScreenInit() functions after MapMem/EnterVT.  Not
    197  1.1  mrg working yet.  Version stamped 0.4.0.
    198  1.1  mrg 
    199  1.1  mrg 02/22/99 KJB
    200  1.1  mrg Macro change coming to add Mark's accel update.  VGAOUT for old stuff and MEMOUT
    201  1.1  mrg for new stuff?  That way there's no confusion with the old INREG/OUTREG macros.
    202  1.1  mrg Or maybe just stick with INREG/OUTREG for new stuff.
    203  1.1  mrg 
    204  1.1  mrg 01/30/99 KJB
    205  1.1  mrg Version stamp 0.3.0.  Changed Chipset flags to use PCI IDs exclusively, also use
    206  1.1  mrg common/xf86PciInfo.h for PCI IDs rather than coding them in regs3v.h.
    207  1.1  mrg 
    208  1.1  mrg 11/28/98 KJB
    209  1.1  mrg Bumped version stamp to 0.2, expect code in 3.9No.  Cleaned up s3v.h and
    210  1.1  mrg s3v_driver.c by removing unused definition & code sections.  Added
    211  1.1  mrg options set_mclk (from 3.3.2) and set_lcdclk (3.3.3 MX).  Code support
    212  1.1  mrg from 3.3.3 for ViRGE GX2 and MX+ is included.
    213  1.1  mrg Disabled call to 32 bpp AccelInit to get -depth 24 -bpp 32 working again.
    214  1.1  mrg 
    215  1.1  mrg 11/27/98 KJB
    216  1.1  mrg More 3.3.3 import.
    217  1.1  mrg New registers saved, CR40,CR45,SR8,(for MX) SR29,SR45,SR55,SR56,SR57.
    218  1.1  mrg Reviewed s3vdriver.h, rehs3v.h, newmmio.h, s3v_accel.c, s3v_driver.c.
    219  1.1  mrg Added ViRGE MX, MX+ & GX2 support.  Re-synced parts of mode save and init
    220  1.1  mrg with 3.3.3 versions.  Added timeout ability for WaitIdle() and friends.
    221  1.1  mrg Added chipnames and numbers to Chipsets struct.
    222  1.1  mrg 
    223  1.1  mrg 11/26/98 KJB
    224  1.1  mrg Import additions from 3.3.3, newmmio.h, regs3v.h,
    225  1.1  mrg 
    226  1.1  mrg Trap fills disabled because they don't match cfb, pixmap cache & ImageWrite
    227  1.1  mrg working, fixed depth 8 color loss on VT switches, INREG & OUTREG modified to
    228  1.1  mrg use a single offset value instead of adding the base and offset together.
    229  1.1  mrg 
    230  1.1  mrg 11/18/98 KJB
    231  1.1  mrg 3.9Nn
    232  1.1  mrg Acceleration working for Bitblt, ScreenToScreenCopy, Color 8x8 Rect fills,
    233  1.1  mrg and Rect/Trap fills.
    234  1.1  mrg Trap fills do not support transparency, so that needs to be exported to XAA.
    235  1.1  mrg 
    236  1.1  mrg 
    237  1.1  mrg 10/31/98 KJB
    238  1.1  mrg Working depth 8, discolored dep 16 but runs, dep 24 screen goes black, 
    239  1.1  mrg C-A-Bkspc restores text console.  At 3.9Nk tree level, module would not
    240  1.1  mrg load in Loader server.  why?  Static server tested.
    241  1.1  mrg 
    242  1.1  mrg 10/29/98 KJB
    243  1.1  mrg ModeInit() needs work, options are heavily #if'd to try and get 8bpp
    244  1.1  mrg working.
    245  1.1  mrg 
    246  1.1  mrg 10/16/98 KJB
    247  1.1  mrg General 4.0 architecture is setup.  Presently at 3.9Nc level, if moved
    248  1.1  mrg to a newer tree you will need to add the resource handling functions from
    249  1.1  mrg Egbert (I haven't tackled that yet).
    250  1.1  mrg 
    251  1.1  mrg At the moment the ScreenInit() function is coded to return FALSE.  On my
    252  1.1  mrg ViRGE DX card this version does not lock up, but it does destroy the
    253  1.1  mrg video mode.  Make sure you have an external terminal or network connection
    254  1.1  mrg if you run it (or blindly do a restart from your main terminal).  I make
    255  1.1  mrg no guarantees that it won't hard lock other versions of ViRGE.
    256  1.1  mrg 
    257  1.1  mrg I've left out the Alpha memory mapping, along with all option processing.
    258  1.1  mrg Those will need to be done once the driver is minimally working.
    259  1.1  mrg 
    260  1.1  mrg Note that everything in s3v_driver.c is MMIO only.  There are a pair of
    261  1.1  mrg PIO functions in s3v_pio.c, but that is the only place.  See notes below
    262  1.1  mrg about my ViRGE DX BIOS and why I needed to do this on my hardware.
    263  1.1  mrg 
    264  1.1  mrg Other stuff...
    265  1.1  mrg Some test stuff is assuming 8bpp, so 16 & 24 are broken.
    266  1.1  mrg On my hardware, I am presently trying to get the Save/Restore sequence to
    267  1.1  mrg recover the video mode.  At the moment, when I run this driver, I get:
    268  1.1  mrg ScreenInit() runs to completion.
    269  1.1  mrg It returns FALSE, so the Server aborts.
    270  1.1  mrg LeaveVT() is called, and runs to completion.
    271  1.1  mrg The Server exits gracefully, but my monitor goes powersaver and the video
    272  1.1  mrg mode is not recovered.
    273  1.1  mrg 
    274  1.1  mrg 
    275  1.1  mrg 
    276  1.1  mrg TODO items
    277  1.1  mrg ----------
    278  1.1  mrg 1/30/03 General option "videoram" is ignored by the virge driver.
    279  1.1  mrg   (Meelis Roos)
    280  1.1  mrg 3/24/02 Xv reported to not work as secondary in Xinerama multihead.
    281  1.1  mrg   (xav on irc)
    282  1.1  mrg 3/24/02 DPMS doesn't fully disable the screen.  Blue line across the
    283  1.1  mrg   center in all modes. (xav on irc)
    284  1.1  mrg 3/25/02 Secondary reports primary BIOS during int10 detection. ie:
    285  1.1  mrg 
    286  1.1  mrg (II) S3VIRGE(1): VESA BIOS detected
    287  1.1  mrg (II) S3VIRGE(1): VESA VBE Version 2.0
    288  1.1  mrg (II) S3VIRGE(1): VESA VBE Total Mem: 4194240 kB
    289  1.1  mrg (II) S3VIRGE(1): VESA VBE OEM: ATI RAGE128
    290  1.1  mrg (II) S3VIRGE(1): VESA VBE OEM Software Rev: 1.0
    291  1.1  mrg (II) S3VIRGE(1): VESA VBE OEM Vendor: ATI Technologies Inc.
    292  1.1  mrg (II) S3VIRGE(1): VESA VBE OEM Product: R128
    293  1.1  mrg (II) S3VIRGE(1): VESA VBE OEM Product Rev: 01.00
    294  1.1  mrg 
    295  1.1  mrg (xav on irc)
    296  1.1  mrg 
    297  1.1  mrg 
    298  1.1  mrg Check CR65 usage, bit 2 set based on S3_EARLY_SC?  In my manual bit 2 is
    299  1.1  mrg enable MMIO to RAMDAC registers.
    300  1.1  mrg 
    301  1.1  mrg Notes:
    302  1.1  mrg ----------
    303  1.1  mrg 
    304  1.1  mrg /config/cf/xfree86.cf
    305  1.1  mrg 
    306  1.1  mrg have to add s3v to XF86CardDrivers for imake to make the 
    307  1.1  mrg drivers/s3v Makefile.
    308  1.1  mrg 
    309  1.1  mrg To remake makefiles, after editing Imakefile, go to dir above drivers/s3v
    310  1.1  mrg and do a 'make Makefiles'.
    311  1.1  mrg 
    312  1.1  mrg For debug, make CDEBUGFLAGS='-g -DDEBUG', adding -DMetroLink enables
    313  1.1  mrg timeout for VerticalRetraceWait().
    314  1.1  mrg 
    315  1.1  mrg 
    316  1.1  mrg 
    317  1.1  mrg S3 ViRGE DX stuff:
    318  1.1  mrg 
    319  1.1  mrg Card seems to power up (or BIOS forces) with MMIO disabled.  All flavors are
    320  1.1  mrg disabled, because CR53 comes up as 0.  This may preclude using this card
    321  1.1  mrg as the second device in a multi-head situation although David D. says that
    322  1.1  mrg the new config. management stuff may help here.
    323  1.1  mrg 
    324  1.1  mrg 
    325  1.1  mrg 
    326  1.1  mrg $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/TODO_NOTES,v 1.23 2003/02/13 03:21:33 dawes Exp $
    327