NeoMagic MagicGraph/MagicMedia graphics driver for (open)BeOS
Current NeoMagic driver features:
- Hardware cursor support;
- Full BWindowScreen support (used for hardware pageflipping, scrolling/panning and acceleration in applications/games);
- B_YCbCr422 hardware overlay support (except on MagicGraph 128, so NM2070 cards);
- DPMS support for both panels and external displays;
- Full 2D acceleration for NM2070, NM2097 and NM2160.
Supported cards:
- MagicGraph 128 (NM2070)
- MagicGraph 128V (NM2090)
- MagicGraph 128ZV (NM2093)
- MagicGraph 128ZV+ (NM2097)
- MagicGraph 128XD (NM2160)
- MagicMedia 256AV (NM2200)
- MagicMedia 256AV+ (NM2230)
- MagicMedia 256ZX (NM2360)
- MagicMedia 256XL+ (NM2380)
Known limitations:
- If the driver does not load make sure you enabled 'assign IRQ to VGA card' in your system BIOS;
- NeoMagic cards do not support overlay downscaling. You won't be able to select for instance 50% scaled output, nor will you be able to resize the video output window below 100% by dragging.
(In Windows downscaling works: this is done by scaling down the overlay input bitmaps in the application software: so this is a 'trick' solution not done by the driver!)
- Stretching modes for the laptop display panel will not be setup because in stretched modes no hardcursor is supported, and overlay output requires tweaking to get going;
- If your laptop doesn't work with the driver (distorted/black screen), make sure you disabled LCD stretching/zooming or whatever it's called in the system BIOS;
- Apparantly it's not possible to boot into modes with a resolution above 800x600 pixels on some cards. If you encounter this please report it, and only use higher resolution modes on other workspaces for now.
- The keyboard 'shortcut key' for changing output devices bypasses the graphics driver and directly uses the cardBIOS. Sometimes using this key will have undesired results. Please use with care! Or better yet: just preset the output device(s) you want in the system BIOS (if possible). If you are going to use that shortcut key anyway: then make sure you switch workspaces between spaces with different settings after using it, so the driver updates the card programming again (so it gets in sync with the card again);
- Overlay is not yet working correctly on NM2200 and later cards: if you have such a card and want to help by testing stuff, let me know!
- On NM2070 panel centering only works vertically: horizontal centering-related info is missing.

Fixes for the upcoming version (current is CVS 0.09):
- Added full 2D acceleration for all remaining cards that did not have that yet with this driver (still largely untested);
- Fixed a long standing problem with MagicMedia (all NM2200 and later) cards with overlay: buffer width is programmed correctly now. Can't believe I didn't see that before!
- Updated NM2200 and later cards workspace virtualsize restrictions for accelerated modes: it turns out these cards engines have the same restrictions as most older ones, being 1600x1024 resolution;
- Updated overlay scaling restrictions: officially the cards support upto and including 8x upscaling;
- Fixed error regarding calculating overlay engine register value for right-clipping video output: on NM2200 and later this was (probably) responsible for the big-time output distortions even without clipping!

Fixes for current NeoMagic driver 0.06:
- Updated modelist to include one more suggested mode for 800x600 resolution: Done by Andrew Bachmann;
- CRTC timing restriction checking updated: Modelists exported adhere to every cards max. CRTC capability now: the oldest cards support upto and including 1024x1000, while the newest cards support upto and including 1280x1024 resolution;
- 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 (once setup) and page flipping/virtualscreens in apps ('Allegro' update): fixed cloning accelerants;
- Updated acceleration engine management code;
- Added full 2D acceleration for NM2070, NM2097 and NM2160 cards (the others will be added later);
- Updated acceleration for massive speedup compared to Be driver (now running at approx 200-2000% depending on use!);
- Fixed acceleration on rectangle fills and inverts: nolonger executing zero-width commands (which the app_server gives to the driver sometimes!) so no more big-time distortion stripes onscreen! (the Be driver does exhibit this fault BTW);
- Updated hardware cursor to be placed elsewhere in cardRAM (acc engine requirement); distorted mousepointers could be fixed by this also on some cards outthere;
- Updated workspace virtualsize restrictions for accelerated modes. Confirmed that the MagicGraph series (pre NM2200) engines can do upto and including 1600x1024 resolution except NM2070 which can do upto and including 1024x1024. Assuming MagicMedia series (NM2200 and later) can do upto and including 1600x2048 for now. Modes above these resolutions are unaccelerated;
- Removed register area cloning bug in accelerant that prevented it from working with NM2070, NM2090 and NM2093 cards at all!
- Added various fixes to get Dell Latitude XPi (NM2070) working on it's panel, probably fixes various faults on other cards as well;
- Updated pixelPLL restrictions for NM2070 so external output refresh is OK;
- Added fixed sync polarity programming if flatpanel in use: needed to make sure centering actually works;
- Disabling centering if external only monitor mode is active: fixes some trouble on NM2070 and maybe others;
- Added panel modeline programming for NM2070 cards: fixes hardcursor trouble on panel;
- Added pixelprecise panning for virtualscreens in all modes;
- Added full DPMS support.
Note:
Acceleration engine benchmarked and tested for errors with BeRoMeter V1.2.6.

Fixes for old NeoMagic driver 0.05:
- Prevent system or video freeze on dragging files or so in tracker windows;
- 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;
- Sync polarity setup now actually works (external monitor only mode);
- Power-up register unlocking narrowed down to overlay engine only. This should fix the screen rubbish trouble most users had with V0.04 which did not exist for them on V0.03.

Fixes for old NeoMagic driver 0.04:
- included hardware overlay for the B_YCbCr422 (FourCC: YUY2) colorspace;
- added CRTC registers unlock command on startup.

Fixes for old NeoMagic driver 0.03:
- virtual screens / BWindowScreen support including panning/scrolling;
- colorspace selection;
- colorpalette setup;
- refreshrate selection in external (CRT only) mode;
- resolution selection;
- hardcursor support;
- preliminary LCD panel centering support;
- you can switch between panel and the external monitor via the special key on the laptop KB. Also the driver respects the output preselected in the BIOS. Note that the NeoMagic BIOS does the output device switch: the driver may not work correctly in all settings yet.

Things that are scheduled to be implemented or fixed:
- fix for trouble with booting into modes above 800x600 resolution on some cards (please report this behaviour!);
- 2D acceleration hardware fault workaround for NM2200(+) (in progress);
- Overlay engine hardware fault workaround for NM2200(+) (in progress).
NOTE PLEASE: This list is kind of a forward looking statement. So I don't know if any or all of this stuff will ever get implemented. I will keep working on the driver for as long as it makes sense and only as long as I have time for it to spare.

Rudolf.
(Page last updated on August 5, 2004)