home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MGA Millennium Bulk
/
BLK_5_FEB_96.iso
/
winnt
/
readme.nt
< prev
next >
Wrap
Text File
|
1995-12-17
|
31KB
|
620 lines
README.NT MATROX GRAPHICS INC. December 19, 1995
Matrox MGA Millennium
Drivers for Windows NT 3.5/3.51
on x86 CPUs
Rev. 1.20.038 (3.5.38)
History
~~~~~~~
Rev. 1.20 (3.5.38) Miniport: updated to SXCIEXT Build 27.
User-mode: modified pan&zoom initialization.
Rev. 1.20 (3.5.37) Miniport: fix for SyncOnGreen on multiple monitors;
fix in mode list when 3D modes unavailable;
identification of DigiMix boards.
User-mode: FrameBufferMapping returned in BOARD_INFO;
new definition for WaitNotBusy;
limited use of AUTOLINE.
Rev. 1.20 (3.5.36) Miniport: updated SXCIEXT code to Build 22.
User-mode: code for MTX_PROGRAMVLINEINT,
MTX_WAITVSYNC.
3D-DDI: hardware-accelerated OpenGL on multiple
boards (Build 12).
Rev. 1.11 (3.5.35) User-mode: support for MTX_QUERYDRIVERVERSION.
Rev. 1.11 (3.5.34) User-mode: MAKE_BOARD_CURRENT before getting HwData;
MEMORY_BARRIER in vAssertModePointer.
Rev. 1.11 (3.5.33) Miniport: support for MTX_QUERYCURRENTMODEDESC.
User-mode: support for MTX_QUERYCURRENTMODEDESC;
handling 0 edge case in bFastFill.
Rev. 1.11 (3.5.32) Miniport: added code for new flag AlternateLines.
User-mode: added code for new flag AlternateLines.
Rev. 1.11 (3.5.31) Same as Rev. 1.11.030, with CheckFifoSpace enabled.
Rev. 1.11 (3.5.30) Miniport: added code for new flags CheckFifoSpace,
AccelComplexRops.
User-mode: added code for new flags CheckFifoSpace,
AccelComplexRops;
added small delay in pointer shape
download.
Rev. 1.11 (3.5.29) Experimental build.
Miniport: added code to detect MediaXL add-on.
User-mode: added code to allocate tag ram for Media XL.
modified code to accelerate integer lines.
Rev. 1.11 (3.5.28) Miniport: added code for 3D on multiple boards.
User-mode: added code for 3D on multiple boards.
Rev. 1.11 (3.5.27) This version is based on Rev. 1.10.024.
Miniport: added code to support new Escapes.
User-mode: added code to support new Escapes;
accelerated line drawing code for integer
endpoints.
Rev. 1.11 (3.5.26) This version is based on Rev. 1.10.024.
Miniport: modified code written for MediaXL;
removed check on Option register bits;
added code to compute actual refresh rate;
added code to support new Escapes.
User-mode: added code to support new Escapes.
Rev. 1.11 (3.5.25) This version is based on Rev. 1.10.024.
Miniport: modified return value from ReadSystemBios.
Rev. 1.10 (3.5.24) This version is based on Rev. 1.10.023.
Miniport: modified to blank out all VGA-disabled
boards after DDC check.
User-mode: modified multi-screen clipping for text;
modified clipping for FromScreen blting;
modified source coordinates for
ScreenToScreen punting.
Rev. 1.10 (3.5.23) This version is based on Rev. 1.10.022.
Miniport: support for multiple DDC monitors;
modified DCI code;
correct programming of MACCESS.
User-mode: multi-screen clipping for text.
Rev. 1.10 (3.5.22) This version is based on Rev. 1.10.020.
Miniport: modified to build list of modes that
includes both 2D and 3D modes.
User-mode: modified offscreen heap management.
3D-DDI: fixed RXCMD_READ_RECT.
Rev. 1.04 (3.5.21) This version is based on Rev. 1.03.018.
Miniport: corrected ScanSDA parameter in DDC code.
Rev. 1.10 (3.5.20) Miniport: added support for refresh rates;
added support for DCI;
modified the code so that the Registry
HardwareInformation is updated for every
board detected.
User-mode: optimized driver, mostly based on the S3
code supplied with the Windows NT 3.51 DDK,
including support for device bitmaps and
DCI;
added code to support user-selected values
from the Registry.
3D-DDI: optimized RXCMD_SWAP_BUFFERS command;
optimized RXCMD_FILL_RECT command;
fixed RXCMD_WRITE_RECT to Z buffer.
Rev. 1.10 (3.5.19) User-mode: modified bltmod to BFCOL when writing 32bpp;
removed masking when reading 16/32bpp;
modified PlnWt at 15bpp;
modified Build number.
3D-DDI: optimized triangle primitives;
removed WaitFIFO macros;
adapted to fully support OpenGL on the final
version of NT 3.51, Build 1057.
Rev. 1.03 (3.5.18) User-mode: modified offset convention in FastFill;
modified Build number.
Rev. 1.10 (3.5.17) Miniport: added Int10 call in RESET_DEVICE
User-mode: modified Build number.
Rev. 1.02 (3.5.16) Miniport: added Int10 call in RESET_DEVICE
User-mode: modified Build number.
Rev. 1.10 (3.5.15) Miniport: updated FindAdapter.
User-mode: added MTX_QUERYPITCH escape code;
modified Build number.
Rev. 1.02 (3.5.14) Miniport: updated FindAdapter.
User-mode: added MTX_QUERYPITCH escape code;
modified Build number.
Rev. 1.10 (3.5.13) Miniport: updated FindAdapter routine for systems
with PCI bridges.
Rev. 1.02 (3.5.12) Miniport: updated FindAdapter routine for systems
with PCI bridges.
Rev. 1.10 (3.5.11) Added 3D DLL (DDIRX.DLL).
Rev. 1.02 (3.5.10) Miniport: updated FindAdapter routine;
new and improved PCI access routines;
added services for 3D DDI;
User-mode: added back complex rop3 support;
fixes in blt routines;
added entry points for 3D DDI;
modified Build number.
Rev. 1.02 (3.5.09) Miniport: updated low-level code;
added DPMS code;
adapted for TVP3030;
adapted for Alpha AXP.
User-mode: added DPMS and DDC entry points;
removed complex rop3 support;
optimized write and read macros;
adapted for TVP3030;
adapted for Alpha AXP;
modified Build number.
Rev. 1.02 (3.5.08) Experimental build.
Rev. 1.01 (3.5.07) User-mode: modified Build number.
New MGA.MON file.
Rev. 1.01 (3.5.06) Miniport: fixed VGA trashing by mtxCheckHwAll;
added default build of list of modes;
added DDC support.
User-mode: added DrvFillPath support;
modified cache limit for fonts;
modified Build number.
Rev. 1.00 (3.5.05) Miniport: modified YDstOrg computation.
User-mode: modified full clipping limit;
modified Build number.
Rev. 1.00 (3.5.04) Miniport: updated low-level code; added code to
validate PCI mechanism before any access,
since some drivers use undocumented
features to modify the access method.
User-mode: modified Build number.
Rev. 1.00 (3.5.03) Miniport: added mechanism 1 in PCI search.
User-mode: modified Build number.
Rev. 1.00 (3.5.02) Miniport: small change in MGA.C.
User-mode: modified Build number.
Rev. 1.00 (3.5.01) Miniport: updated with latest low-level code;
modified Chip and Adapter strings.
User-mode: modified Build number.
Rev. 1.00 (3.5.00) Initial version.
Windows NT Files on this Disk
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\MGAX64.TAG Tag file for Windows NT Setup
\MGAX64.SYS MGA Millennium miniport driver
\MGAX64.DLL MGA Millennium user-mode driver
\OEMSETUP.INF MGA Millennium driver installation file for Windows NT
\TXTSETUP.OEM MGA Millennium driver installation file for Windows NT
\MGA.MON MGA monitor file
\MGASET.CPL Monitor selection applet for Control Panel
\MONDLG.DLL DLL required by the Monitor selection applet
\DDIRX.DLL MGA Millennium 3D-DDI driver
\README.NT This file
About These Drivers
~~~~~~~~~~~~~~~~~~~
These drivers support 2, 4, and 8Mbytes MGA Millennium boards. Multiple
boards are also supported. The drivers, together with the 3D-DDI DLL,
also support hardware-accelerated 3D.
Installation
~~~~~~~~~~~~
Refer to your MGA Millennium Owner's Manual to install your board in your
system.
If you are installing two MGA Millennium boards in your system, please note
that only one should be VGA-enabled through the on-board switch. Dual-
board installations are similar to single-board installations. The
system will automatically assign separate addresses to each PCI board,
allowing the driver to issue commands to each board. In a dual-board
configuration, both boards must run with the same resolution and pixel
depth (number of colors). The VGA-enabled board will drive the top left
monitor.
The general procedure for changing a display driver is the following:
- Open the ControlPanel/Display applet.
- Press the 'Change Display Type...' button.
- In the Display Type dialog box, press the 'Change...' button.
- In the Select Device dialog box, press the 'Other...' button.
- In the Install From Disk dialog box, type the location of the
Matrox MGA Millennium installation files (e.g. "A:\WINNT").
- From the displayed list, select a resolution and pixel depth
supported by your board and monitor, then press 'Install'.
Modes requiring 4 or 8 MBytes are called out in the displayed list.
Dual-board modes are not available at driver installation time,
since the number of installed boards cannot be determined at
this time.
- Answer 'Yes' to the Installing Driver dialog box.
- If the MGA Millennium drivers are already installed on your system,
you will be prompted to choose between the currently installed
drivers or new ones. If you select 'New', you will be prompted
for the path to the new driver files. This will default to the
path entered in the Install From Disk dialog box.
- In the Display Settings Change dialog box, you should select
'Restart Now' so that the new settings take effect.
- If your system does not reboot at the expected resolution, it is
probable that your board does not support the selected resolution/
pixel depth combination. Open ControlPanel/Display again and press
the 'List All Modes...' button to get all the modes available for
your particular board. You can also experiment with the 'Color
Palette' and 'Desktop Area' controls to select a new mode. Use
the 'Test' button to make sure that the new mode is supported by
your monitor.
Changing Resolution
~~~~~~~~~~~~~~~~~~~
Whenever you want to change resolution, run the ControlPanel/Display applet.
The available modes are displayed through the 'List All Modes...' button.
If you are using a dual-screen configuration, the driver will spread the
desktop over the two monitors. Special dual-screen resolutions will be
listed, where the horizontal or vertical resolutions are twice their
normal size. Selecting one of these resolutions will permit testing of
both monitors.
Monitor Customization
~~~~~~~~~~~~~~~~~~~~~
There are two ways to select refresh rates for your monitor. Whenever
a new driver is installed, it is assumed that refresh rates are selected
through the ControlPanel/MGA Monitor applet. If your preference goes to
selecting refresh rates through the 'Refresh Frequency' field of the
ControlPanel/Display applet, you will have to edit a value in the Registry.
Both options are described below. The section 'Editing the Registry' gives
details on how to modify the values that control driver behavior.
After installation, the display driver assumes that refresh rates will be set
through the MGA Monitor applet. However, since the applet has not been run
yet, the driver will assume that your monitor is capable of handling all
resolutions from 640x480 up to 1600x1200 at a 60 Hz refresh rate. If your
monitor does not support the higher resolutions, or if it is capable of
higher refresh rates, you can run the ControlPanel/MGA Monitor applet and
select a suitable monitor from the list. This will ensure that your monitor
will not be over-driven, and that you will get the benefits of higher refresh
rates.
The MGA Monitor applet should have been copied by the Windows NT Setup
program into your SystemRoot\SYSTEM32 subdirectory when the MGA Millennium
drivers were installed. To customize your monitor:
- Open the ControlPanel/MGA Monitor applet.
- If your monitor supports DDC (Display Data Channel), a dialog box
will allow you to exit without creating an MGA.INF file. If you
decide to create an MGA.INF file, its settings will override the
capabilities provided by your monitor through the DDC.
- From the list of monitors, select the appropriate monitor, or one
whose maximum refresh rate matches the one you are using. An
MGA.INF file will be created in the SystemRoot\SYSTEM32
subdirectory.
To make sure that the newly created MGA.INF is correct for your monitor:
- From Control Panel, start the Display applet.
- Select the resolution and pixel depth you wish to test.
- Press the 'Test' button. The test will use the video parameters
appropriate for the monitor selected in MGA Monitor.
If your monitor does not display a stable test screen, then the parameters
set by MGA.INF are not suitable for your monitor. Press the 'Cancel' button
to close Display, run MGA Monitor again to select another monitor from the
list, and repeat the Display test.
If the test screen is not displayed, but you get instead a message box about
the screen not being visible due to a limitation of your video card or
display monitor, then it is probable that the tested resolution (say,
1280 x 1024) was above the limit set by MGA.INF (say, 1024 x 768). If your
monitor is capable of the higher resolution, then run MGA Monitor again to
select an appropriate monitor.
The new MGA.INF will take effect when you restart Windows NT. Any resolution
higher than the set limit will not appear in the Display applet mode list.
Deleting MGA.INF will remove all monitor limits to the resolution, although
the refresh rate will default to 60Hz.
In a dual-board configuration, both boards will output the same refresh
rate to each monitor. It is recommended that the monitor selected in MGA
Monitor be compatible with the less capable monitor in your setup.
If you would rather select refresh rates through the ControlPanel/Display
applet, set the 'User.MgaInfoFile' value in the Registry to 0 (see the
'Editing the Registry' section for details). The next time you reboot,
refresh rates available for each mode will be returned to the Display
applet. The system will probably reboot in the 640x480x8 mode, and a
warning message will be displayed. This is normal, since the system could
not find the hardware default setting that was used previously for refresh
rates. You can now select refresh rates from the list displayed by
ControlPanel/Display. You should test any new mode to make sure that your
monitor actually supports the new resolution/refresh rate combination.
In a dual-board configuration, both boards will output the same refresh
rate to each monitor. The less capable monitor in your setup will determine
the maximum refresh rate.
Editing the Registry
~~~~~~~~~~~~~~~~~~~~
Information held in the Windows NT Registry can have a direct effect on the
whole system. Introducing incorrect values can cause serious problems and
may make it necessary to reinstall Windows NT. The changes outlined below
should have effects limited to the MGA Millennium drivers. However, if you
accidentally modify values that make your system unusable, please note that
it is often possible to undo the damage by using the 'Last Known Good
Configuration' option at boot time.
Modifying keys and values in the Registry is done through the Registry
Editor. The Registry Editor can be invoked in the following way:
- Open a Command Prompt window.
- Type 'regedt32'. The Registry Editor will come up.
To modify the values that govern the behavior of the MGA Millennium driver:
- Select the HKEY_LOCAL_MACHINE window.
- Travel down to the key named:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mgax64\Device0.
In the right window pane, you will find many values. Three of these control
the use of 3D-accelerated modes. They are described in the 'Hardware-
accelerated 3D' section. They are:
User3D.DoubleBuffer,
User3D.ZBuffer, and
User3D.SubPixel.
Seven values control the general behavior of the driver:
User.AlternateLines when set to 1, allows lines defined by integer coordinates
to be drawn using the faster AUTOLINE opcode of the
drawing engine. The convention used to determine which
pixels contribute to a given line is slightly different
in AUTOLINE and in Windows NT. Setting AlternateLines
to 1 trades off compliance with the Windows NT conventions
for performance. A value of 0 will enforce compliance.
Lines defined by non-integer endpoint coordinates are not
affected by this setting.
The default value of User.AlternateLines is 0.
User.CenterDialogs when set to 1, allows centering of dialog boxes and
pop-up windows on the top left display of a dual-screen
setup. The centered windows can still be moved over the
whole desktop. A value of 0 will have no effect on the
position of these windows.
There are serious side-effects to this feature. For
instance, testing a dual-screen mode from the
ControlPanel/Display applet will actually test only the
corresponding single-screen mode. Other side-effects
include toolbars that will not use the whole desktop, and
screen savers that will work only on the top left screen.
The default value of User.CenterDialogs is 0.
User.ComplexBlt when set to 1, allows the driver to accelerate some
complex raster operations (ROPs) by executing a sequence
of simple ROPs (ORing, ANDing, etc...). A value of 0
will result in complex ROPs being performed in software.
The complex ROPs are performed directly on the display
through a succession of simple ROPs. Artifacts (flashing)
in the target display area may become visible when an
intermediate result in video RAM is displayed on a given
refresh cycle, to be replaced by the final image on the
next cycle.
The default value of User.ComplexBlt is 1.
User.DeviceBitmaps when set to 1, allows use of off-screen memory for
caching bitmaps. This will allow the hardware to
accelerate drawing to bitmaps. A value of 0 disables
bitmap caching, allowing the CPU to draw onto all
bitmaps. Bitmap caching is internally disabled when
a desktop requiring more than one board is in use,
regardless of the Registry setting.
The default value of User.DeviceBitmaps is 1.
User.MgaInfoFile when set to 1, allows use of the MGA Monitor applet
to control refresh rates. A value of 0 will allow the
Display applet to list available refresh rates. See
the 'Monitor Customization' section for more details.
The default value of User.MgaInfoFile is 1.
User.SynchronizeDac when set to 1, will require the driver to wait for a
vertical sync before programming the ramdac with a new
pointer shape or a new palette. If you notice stray
pixels flashing around the pointer, setting this flag
to 1 might fix the problem. Setting it to 0 will result
in slightly better performance.
The default value of User.SynchronizeDac is 0.
User.SynchronizeEngine when set to 1, will require the driver to wait for
the Millennium hardware to be ready to accept new data
before programming the next operation. Setting it to 0
will result in better performance.
On most x86-based systems, the PCI logic should ensure
that such a check is redundant. If you're experiencing
problems that might be related to timing (with
communication programs, for instance), setting this value
to 1 may be of help.
The default value of User.SynchronizeEngine is 0.
If you wish to change any of these values:
- Double-click on the selected value.
- In the DWORD Editor, change the value to '0' or '1'. The new value
will take effect the next time you reboot.
Hardware-accelerated 3D
~~~~~~~~~~~~~~~~~~~~~~~
The DDIRX.DLL file supplied with the MGA Millennium drivers allows for
hardware-accelerated 3D, with a few restrictions:
- Hardware-accelerated 3D is available only for Windows NT 3.51.
- The 3D DLL does not support 8bpp (256 colors) modes. These modes
use an index-based color scheme, which does not lend itself to 3D
acceleration, instead of the RGB color representation of higher-
color modes. RGB-based displays are generally unsatisfactory when
limited to 256 colors. Modes identified as '16777216 Colors' are
24bpp modes and do not support 3D acceleration, as opposed to 'True
Color' modes, which are 32bpp modes that can accelerate 3D drawing.
- Limitations to the available resolutions are to be expected. All
3D modes require extra memory to handle double buffering and/or Z
buffering, and this memory is no longer available for display.
The DDIRX.DLL file will have been copied into the SystemRoot\SYSTEM32
subdirectory when the MGA Millennium drivers were installed. Also, three
values will have been created in the Registry under the key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mgax64\Device0.
These values are User3D.DoubleBuffer, User3D.ZBuffer, and User3D.SubPixel.
They were initialized to one, effectively enabling 3D acceleration for those
combinations of resolution and pixel depth that can support it on your
board. These values can be modified through the Windows NT Registry Editor
(regedt32.exe). The procedure for modifying value entries is straightforward,
and is described in the 'Editing the Registry' section and in the Registry
Editor help. New Registry settings take effect only after a system reboot.
The functions controlled by the User3D values are as follows:
User3D.DoubleBuffer when set to 1, allows a back buffer to be allocated
from the MGA Millennium memory. It should be set to
0 if no back buffer is required.
This value should be set to 1 if 3D animation is to
be fully accelerated.
User3D.ZBuffer when set to 1, allows a Z buffer to be allocated from
the MGA Millennium memory. It should be set to 0 if
no Z buffer is required.
This value should be set to 1 if 3D rendering is to
be fully accelerated.
User3D.SubPixel when set to 1, allows the 3D-DDI driver to perform
rendering with sub-pixel precision. It should be
set to 0 otherwise.
This value should be set to 1 if high quality 3D
rendering is to be performed. Faster rendering can
be achieved by setting the value to zero, although
some artifacts may then appear near objects boundaries.
The values User3D.DoubleBuffer and User3D.ZBuffer will be read from the
Registry and their settings will be taken into account when building the
list of available modes. If both values are set to zero, only normal (N)
modes will be selected. Other settings will allow Z-buffering (Z), double-
buffering (DB), or both (DBZ). Valid combinations of resolution and pixel
depth that do not support 3D acceleration will be available as normal modes,
so that all valid resolutions will appear once, and only once, in the list
of available modes in the ControlPanel/Display applet. Display does not
provide any way to specify the 3D capabilities of a given mode. After
installation, all available DBZ modes are enabled, and the remaining modes
are N modes.
The available modes depend on the amount of WRAM installed on your board.
They are:
For 2MBytes boards:
| | 8bpp | 15bpp | 16bpp | 24bpp | 32bpp |
+-------------+------+------------+------------+-------+------------+
| 640 x 480 | N | N,Z,DB,DBZ | N,Z,DB,DBZ | N | N,Z |
| 800 x 600 | N | N,Z,DB | N,Z,DB | N | N |
| 1024 x 768 | N | N | N | - | - |
| 1152 x 882 | N | N | N | - | - |
| 1280 x 1024 | N | - | - | - | - |
| 1600 x 1200 | N | - | - | - | - |
For 4MBytes boards:
| | 8bpp | 15bpp | 16bpp | 24bpp | 32bpp |
+-------------+------+------------+------------+-------+------------+
| 640 x 480 | N | N,Z,DB,DBZ | N,Z,DB,DBZ | N | N,Z,DB,DBZ |
| 800 x 600 | N | N,Z,DB,DBZ | N,Z,DB,DBZ | N | N,Z,DB |
| 1024 x 768 | N | N,Z,DB | N,Z,DB | N | N |
| 1152 x 882 | N | N,Z,DB | N,Z,DB | N | N |
| 1280 x 1024 | N | N | N | N | - |
| 1600 x 1200 | N | N | N | - | - |
For 8MBytes boards:
| | 8bpp | 15bpp | 16bpp | 24bpp | 32bpp |
+-------------+------+------------+------------+-------+------------+
| 640 x 480 | N | N,Z,DB,DBZ | N,Z,DB,DBZ | N | N,Z,DB,DBZ |
| 800 x 600 | N | N,Z,DB,DBZ | N,Z,DB,DBZ | N | N,Z,DB,DBZ |
| 1024 x 768 | N | N,Z,DB,DBZ | N,Z,DB,DBZ | N | N,Z,DB,DBZ |
| 1152 x 882 | N | N,Z,DB,DBZ | N,Z,DB,DBZ | N | N,Z,DB |
| 1280 x 1024 | N | N,Z,DB,DBZ | N,Z,DB,DBZ | N | N,Z |
| 1600 x 1200 | N | N,Z,DB | N,Z,DB | N | - |
Please note that all User3D values are reset to one whenever a display
driver is installed.
Board Testing
~~~~~~~~~~~~~
Known Bugs and Limitations
~~~~~~~~~~~~~~~~~~~~~~~~~~
HCT/DispTest
The DispTest application for testing full-screen VGA modes may crash
the system when some modes are tested. An updated BIOS is required.
Screen 13/13 is wrong when viewed in a window.
Systems using more than one PCI bus
There are systems where Windows NT reports conflicts between adapters
installed beyond the PCI bridge. In this case, the MGA Millennium
miniport driver cannot access its own board. If your system appears
unable to find the Millennium board, try moving it to a different PCI
slot.