## Changes done for each driverversion:

# head (0.12), (Rudolf)

- Added AGP capability dump on AGP cards along with explicitly turning it off (for now), instead of relying on the BIOS to have done this (might fix 'screen shut-off after/during boot' fault on some systems);
- Updated CRTC memory granularity settings on TNT2 and later cards to reduce use of card internal bandwidth: this should minimize or prevent distortions on cards that have limited bandwidth available (especially on older cards).

# nv_driver 0.10, (Rudolf)

- Implemented laptop internal flatpanel presence and native resolution detection;
- Implemented external DVI flatpanel(s) presence and native resolution detection;
- Added flatpanel(s) refreshrate protection: it(they) is(are) always kept at 62Hz refresh (60Hz shuts off some panels);
- Added flatpanel specific CRTC modeline and DFP modeline tuning: DVI connected panels work now on both heads (if applicable);
- Added aspect correction programming for flatpanels: corrects if mode aspect differs too much from panel aspect;
- Fixed acceleration engine management regarding sync_to_token: no more updating glitches should occur now;
- Added recognition for GeForce4 MX 4000, GeForceFX 5700LE and GeForceFX 5700VE cards; also modified a few others to be more correct;
- Implemented virtualized CRTC1/DAC1 and CRTC2/DAC2 access: when one flatpanel is found on a card that panel is always primary output now;
- Dualhead switch mode is operational with flatpanels now (via the virtualized setup);
- The user has the option to select the primary output via nv.settings now (via the new 'switchhead' option);
- Modified analog type monitor detection to work the same as for digital panels (detect on bootup only);
- Added dualhead switch mode for NV11 (works via virtualized head access implemented now);
- Modified dualhead switch mode for all other cards to work via the virtualized head access also;
- Modified overlay to work correctly with the virtualized setup;
- Added output-devices/heads matrix setup: the driver now selects the right head for primary output and dualhead should work for all cards with all monitor-types now (if connected before boot);
- Updated head selection code for register programming: NV11 needs a special treatment (again); NV11 dualhead modes are finally OK now, including switch mode;
- Updated secondary head specs: they are improved for nview cards (like GeForce4 and FX) in comparison to twinview cards (like GeForce2);
- Added move_overlay() so overlay (finally) works correctly in virtualscreens;
- You can now select upto one more 4:3 aspect, and 6 new 16:10 aspect modes by just selecting them from the Screenprefs app, except if you use the native R5 one. Use Dualhead setup instead (for example):
  - Added standard (4:3 aspect) mode 1400x1050 for panels and analog monitors to the modelist exported by the driver;
  - Added widescreen (16:10 aspect) modes 800x500, 1024x640, 1280x800, 1440x900, 1680x1050 and 1920x1200 for panel(s) to the modelist exported by the driver if only widescreen panel(s) is (are) connected (so also no analog monitors may be connected!);
  - Added blocking of modes above panel (with lowest) native resotution: this includes blocking of all widescreen modes if a non-widescreen (analog) screen is detected.
- Cursor update for dualhead cards: when the 'softcursor' is used, the hardcursors are both actually turned off now.

NOTE:
The features below are shutdown because they are possibly dangerous without feedback: No documentation on this exists, so this was setup by me tested on my cards only. Feedback (logfiles!) you might send to me might help me gain more info about IF we can use (or need) this, and IF it's OK to use it for a later driver release.

- Added flatpanel LVDS and TMDS transmitters powerup if a panel is detected (not finished: needs more feedback);
- Added flatpanel DPMS support for both heads via powerup/powerdown of LVDS and TMDS transmitters (not finished: needs more feedback).

# nv_driver 0.09, (Rudolf)

- Fixed NV11 trouble with repeating screen(s) on the right side of the monitor;
- Updated CRTC memory granularity code to work-around a hardware bug in older cards;
- Fixed fuzzy modes / no picture on GeForceFX 5700 cards: PLL discriminator restrictions updated.

# nv_driver 0.08, (Rudolf)

- Fixed GeForceFX 5600 and FX 5700 monitor 'refresh out of range' / shutoff fault. nVidia changed the pixelPLL for the NV31 and NV36;
- Fixed acceleration engine restrictions code to adhere to GeForceFX 5600 restrictions: those are still NV20 style for this card;
- Fixed overlay scaling restriction code to adhere to GeForceFX 5600 restrictions: engine is still the NV10/NV20 one, so it can downscale to 1/8 of the picture size;
- Kernel driver now signals abort on not being able to setup the INT routine instead of letting the machine freeze during accelerant initialisation;
- BWindowScreen R3-style function update for acceleration and page flipping/virtualscreens in apps ('Allegro' update): fixed cloning accelerants;
- Now only programming options head select register on dualhead cards. This fixes driver hanging on integrated GeForce2 cards (ID 0x01a0), and maybe also on some other cards;
- Expanded modelist to include suggested modes above 1600x1200 upto 2048x1536 resolution (if a card supports them): Done by Andrew Bachmann;
- Added card recognition for GeForceFX 5700, FX 5950 and some other (older) cards;
- Added 256Mb RAM detection;
- Improved startup code: this should (could) fix random trouble on some cards like for instance hardcursor trouble on especially laptops;
- Added dualhead support (use Mark Watson's 'Dualhead Setup' from BeBits for now);
- Updated mode granularity and max virtual size checking/limiting;
- Added dualhead support for 8- and 15bit colordepths;
- Fixed move_display distortions in virtualscreens especially visible in 8-bit colordepth (for both heads);
- Added 'overlay follows head' for dualhead stretch and switch modes: if more than half the overlay output window is on a screen, that screen gets the overlay output;
- Added dualhead switch mode (except for NV11 cards as they do not have output connector switching capability);
- Added monitor presence detection for both monitor output connectors on dualhead cards (analog type signals only);
- Added 'output follows monitor' for all modes: it does not matter on which connector you connect your monitor, the output will go there after setting a mode; like the card's BIOS does (except for NV11 cards as they do not have output connector switching capability).

# nv_driver 0.07 (Rudolf)

- Added card recognition for some Nvidia GeForce4 Ti 4600 cards (ID 0x0252);
- GeForce overlay activation updated: hardware should respond to the first request instead of to the second ('stampTV' update);
- Included B_YCbCr422 hardware overlay for TNT 1/2 class cards (pre NV10 architecture).

# nv_driver 0.06 (Rudolf)

- Added full 2D acceleration for TNT1 - GeForce FX cards;
- Added card recognition for GeForce FX Go and some older laptop cards;
- Implemented retrace synchronisation (INT routine);
- Geforce overlay updated: turned off ints explicitly, corrected upscaling restriction to be 8x, small speed improvement;
- Vertical timing updated: missed a register on all GeForce cards, missed another register on older cards;
- Register unlocking updated: missed a register on all supported cards.

# nv_driver 0.05 (Rudolf)

- Update on cursor move routine: pointer will nolonger accept illegal left-top positions. As a result it will nolonger vanish on some cards;
- Fixed hardware overlay on GeForce4 MX and Go series cards: disabled the embedded MPEG2 decoder engine which exist on these cards only;
- Fixed driver to adhere to the downscaling limitations of the new overlay engine existing in the GeForceFX series cards.

# nv_driver 0.04 (Rudolf)

- New cursor_move sync_to_retrace for all supported cards: now all display distortions should be gone (GeForce4 for example);
- Added hardware overlay support for the entire GeForce series cards;
- Now powering up all card function blocks: dualhead cards should now switch to the connected head (by it's BIOS) instead of hanging the system on boot (tested on a dualhead GeForce4 with a DVI and a VGA connector).

# nv_driver 0.03 (Rudolf)

- Prevent system or video freeze on dragging files or so in tracker windows;
- Pre NV10 cursor sync_to_retrace: no more distortions in cursor bitmaps on moving it;
- Cursor bitmapadress setup modification for laptops: The cursor should be visible now also on 'Go' type of cards;
- BWindowScreen / Sync_to_retrace fix: prevent apps from crashing on endless waiting for retrace. Wait_for_retrace is temporary disabled now until it's actually implemented.

# nv_driver 0.02 (Rudolf)

- hardcursor support;
- virtual screens / BWindowScreen support including panning/scrolling;
- colorspace selection;
- colorpalette setup;
- refreshrate selection;
- 85 cards of 4 brands are detected now: These are all TNT1 - GeForce FX5900 Ultra cards as far as I know. Hopefully all those cards will actually work OK with the driver;
- DPMS support;
- resolution selection (CRTC setup);
- switch to 'enhanced mode' included: VESA is gone now!
- cardspecs are setup (faked PINS);
- several small fixes done to get the driver working correctly on all four of my cards: PCI TNT1, AGP TNT1, AGP TNT2 and AGP GeForce2MX400.

# Still todo:

- TVout support;
- Partial card coldstart: setup RAM and CORE speeds (if possible).