GRADD FAQ
Reprint Courtesy of International Business Machines Corporation, © International Business Machines Corporation By IBM
From: IBM Solution Developer Support
Q: Which parts do we need to develop for GRADD model? for example, in the old model, we needed to develop -- bvhsvga.dll, vsvga.sys, ibmvga32.dll, ibmdev32.dll and svga.exe. In new model, which parts do we need to develop?
A: A GRADD DLL will replace IBMVGA32.DLL and IBMDEV32.DLL. Developing a GRADD DLL should be much easier!
There may still be a need to develop BVHSVGA.DLL and VSVGA.SYS if the generic IBM modules cannot be used. Depending on whether the GRADD driver uses a PMI file, an SVGA.EXE may still be needed. Note that VIDEOPMI can use the adapter BIOS to set modes, or the GRADD itself might implement its own setmode code.
Q: How do we install this new model driver? For example, in old model, we used dspinstl.exe to install. We can develop our own install program, because we know how to change the config file and how to put the drivers in correct directory. But in new GRADD model, how do we install the driver? And if we want to develop our install program, how do we do it?
A: DSPINSTL.EXE is still used to install the GRADD. Unfortunately, we haven't provided sample install files. Following are the installation targets, which should also allow development of a custom install program:
:CONFIG :MODE=PRIMARY DEVICE=%BOOTDRIVE%:\OS2\GRADD.SYS SET GRADD_CHAINS=C1 SET C1=???????? <=== the name of your GRADD here (no .DLL) :CONFIG :MODE=PRIMARY :MODE=DOS DEVICE=%BOOTDRIVE%:\OS2\MDOS\VMANWIN.SYS DEVICE=%BOOTDRIVE%:\OS2\MDOS\VPRPMI.SYS :CONFIG :MODE=PRIMARY DEVINFO=SCR,VGA,%BOOTDRIVE%:\OS2\BOOT\VIOTBL.DCP SET VIDEO_DEVICES=VIO_SVGA SET VIO_SVGA=DEVICE(BVHVGA,BVHSVGA) :CONFIG :MODE=PRIMARY :MODE=BIDI SET VIO_SVGA=DEVICE(BVHVGA,BVHSVGA,BDBVH) :CONFIG :MODE=PRIMARY :MODE=DOS DEVICE=%BOOTDRIVE%:\OS2\MDOS\VSVGA.SYS :OS2INI :MODE=PRIMARY OS2.INI PM_DISPLAYDRIVERS GRE2VMAN GRE2VMAN PM_DISPLAYDRIVERS CURRENTDRIVER GRE2VMAN PM_DISPLAYDRIVERS DEFAULTDRIVER GRE2VMAN :WININI :MODE=PRIMARY :MODE=WINDOWS SYSTEM.INI boot sdisplay.drv isgdi2vm.drv
Q: About seamless driver for Windows 3.1, how to connect these two driver in new system?
A. With the GRADD model, you don't have to develop a seamless driver for Windows!! By way of the GDI2VMAN translation layer (ISGDI2VM.DRV, which acts like a Windows GDI display driver), the GRADD is used to drive the hardware. The GRADD does not need to worry about serialization and synchronization between PM and seamless Windows sessions. The GDI2VMAN component might still be a little buggy and slow, but we're working to improve it.
Q. Is the implementation of the mandatory set of functions: GHI_CMD_INIT, GHI_CMD_QUERYCAPS, GHI_CMD_QUERYMODES, GHI_CMD_SETMODE, GHI_CMD_PALETTE, also enough to support the SEAMLESS and FULL SCREEN WINDOWS functionalities? Don't we have to write both seamless and full-screen drivers?
A. The mandatory set of functions is sufficient for both PM and seamless WIN-OS/2 windows. All other driver functions that would be needed are handled or simulated by VMAN or the translation layers GRE2VMAN or GDI2VMAN.
GENGRADD is a minimal generic GRADD that implements only the mandatory functions (and GHI_CMD_SETBANK). The source code for GENGRADD is on the DDK.
With GRADD, you don't write a seamless Windows driver since the GDI2VMAN component provides that functionality. At this time, the GRADD does not support fullscreen Win-OS/2. A fullscreen Windows driver is still needed.
Q. How can we support the ESCAPE mechanism in the GRADD approach?
A. The DIVE DevEscapes are handled by GRE2VMAN. For AcquireFB and DeacquireFB, the GRADD will be invoked for GHI_CMD_REQUESTHW, which can simply return RC_SUCCESS if there is already direct access to the aperture for the frame buffer. For SwitchBank, the GRADD will be invoked for GHI_CMD_BANK, which can return RC_UNSUPPORTED if the device uses a non-banked linear aperture (in such case, the SwitchBank DevEscape is not used).
For the EnDIVE DevEscapes, a GRADD or extension GRADD will need to implement GHI_CMD_VRAM functionality and support GHI_CMD_EXTENSION for the EnDIVE functions init, put, get, and query.
Currently, a fullscreen Windows driver is still required.
Good luck in developing your GRADD.