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