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