From: sip1@ellis.uchicago.edu (Timothy F. Sipples)
Newsgroups: comp.os.os2.misc
Subject: SuperVGA Advice from IBM
Date: 25 Jul 92 02:22:46 GMT
Reply-To: sip1@midway.uchicago.edu
Organization: Dept. of Econ., Univ. of Chicago

The following comes from Dale Whitfield.  Enjoy.


SVGA Utility - clearing up some misconceptions.

The svgadata.pmi file is generated by calling BIOS int 10h to set the
mode. All relevant registers are then read to determine the values
required to set that mode without using BIOS. The setmode data
applies to protect-mode sessions only, DOS mode sets always go
through BIOS. The reasons for using BIOS here should be obvious; to
set a mode without BIOS we can make no assumptions as to what the
register values should be, due to the different timing values
generated by the same chipset on different board implementations etc.
So this is the option that was chosen. There exists a VESA standard,
the 'Super-VGA Protect Mode Interface' (SVPMI) which attempts to
define a standard for such a situation, ie the pmi-file layout, but
this is lacking and things soon started to get invented to take care
of the gaps.

The most important assumption is that when the svga utility is run,
the video adapter is set up correctly as it was when it was installed
and used under 'pure' DOS including relevant TSRs. This will ensure
that captured values can be used to accurately set modes and do a
bunch of other stuff.

Currently the pmi-file is used only for super-vga data, but it is
theoretically possible to include data for any mode. For example, the
ISO standard calls for text modes to run at 72/75Hz (I think) which
is not what OS/2 will currently set. The current BVHSVGA.DLL
implementation has limitations which won't allow these VGA modes to
be included, but are possible. Ideally the pmi-file should encapsulate
all device-dependance, and the interpreter of it (BVHSVGA in this
case) would just feed on that data.

Some notes on Virtualisation

Performing video virtualisation is a tricky undertaking. Attempting
to emulate VGA planar modes (16-colour) in software, via say a state
machine, would be prohibitive in terms of performance. Therefore any
DOS application that is running in the background, and wants to
continue to run, must have access to the hardware.

 ( DOS Full-Screen (foreground task) - minimal video IO trapped  )
 ( DOS Window      (background task) - all video IO trapped      )

This is possible, but under the tight control of the Virtual Video
driver which will use the VGA hardware to do so, as well as some
incestuous goings on with the display driver. With this in mind there
are obviously going to be some restrictions. The first of these is
that if the VGA hardware is in a 256-colour mode (linear), it will
not be possible to have access to it, or change it to a planar mode,
in order to allow a background planar-mode app to run. The converse
is, however, not true, mainly because its a simple matter to
virtualise linear modes without needing hardware assistance.

-- 
Get the OS/2 FREQ. ASKED QUESTIONS LIST | Timothy F. Sipples
from 128.123.35.151, anonymous ftp,     | Internet: sip1@ellis.uchicago.edu
directory pub/os2/all/faq, or from      | Dept. of Econ., U. Chicago, 60637
LISTSERV@BLEKUL11.BITNET (send "HELP"). | Tsongas > Perot > Clinton.  Yay.