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