Software Screen to Screen BitBlt Acceleration GRADD filter, r0.0.6

Copyright (c) 2001 Takayuki 'January June' Suwa / Beliefia Productions

0. Table of Contents



1. Welcome

SSSBBACC.DLL is a small GRADD filter driver that can accelerate simple 'Screen to Screen' BitBlt operations under unaccelerated GRADD drivers.

Roughly, any graphical drawing commands are passing through some layered process chain on GRADD-based environments:
GRADD clients
Any programs or subsystems that use GRADD VMI (Video Manager Interface) commands in order to draw graphics. For example, OS/2 Presentation Manager display driver (GRE2VMAN.DLL).
GRADD video manager
Named VMAN (VMAN.DLL). This receives any VMI commands from GRADD clients, translates to VHI (Video Hardware Interface) commands, and sends them to appropriate GRADD video drivers.
If each GHI response indicates software emulation (GRADD video drivers could nothing), VMAN calls generic software graphics engine (SOFTDRAW.DLL) rather.
GRADD video drivers
Entities of VHI command processing. Video hardware dependant, of course.
As a GRADD filter driver, SSSBBACC.DLL is installed between GRADD video manager and GRADD video driver, and watches over simple (but definitely important) form of 'Screen to Screen' BitBlt GHI commands: If such commands responded software emulation, SSSBBACC intercepts and processes them by own blitters faster than SOFTDRAW, and reports completion to VMAN.
Assembler-coded, MMX / SSEint-ready blitters are heavy optimized for uncached memory reads and write-combined memory writes, designed in order to eliminate unnecessary, quite slower peripheral bus cycles as much as possible.

Typically, such slower software BitBlts may speed up to 1.5x ~ 2.5x. Highly recommended for unaccelerated or poor-accelerated GHI (such as GENGRADD, M64GRADD in 24bpp, INTGRADD and so on) users.

1.1. Copyright and Disclaimer

  1. 'THIS SOFTWARE (SSSBBACC.DLL AND ITS SOURCES) AND WHOLE SET OF DOCUMENTS' (CALLED 'THE PRODUCT') ARE ENTIRELY COPYRIGHTED BY TAKAYUKI 'JANUARY JUNE' SUWA / BELIEFIA PRODUCTIONS, AUTHOR / HOLDER OF THE PRODUCT.
  2. THE PRODUCT IS STILL UNDER DEVELOPMENT AT THE DISTRIBUTION, AND MAY BE OCCURED ANY MODIFICATION / DELETION OF APPEARANCE / FUNCTION OR WITHDRAWAL OF DEVELOPMENT / SERVICE IN FUTURE WITHOUT NOTICE.
  3. THE PRODUCT IS PROVIDED 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  4. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES, WHETHER IN CONTRACT OR TORT (INCLUDED NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE PRODUCT, EVEN THOUGH SUCH HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF ANY DAMAGE.
We are regarded you agree disclaimer above at the first installation of SSSBBACC.DLL. If you disagree above, you must discard all files of the product.

1.2. System Requirements

This software will be functioned in environment such as:
WARNING!!
We recognize some Intel Pentium without MMX have problem that causes traps by reading a large amount of uncached memory (e.g. VRAM aperture) using on-chip FPU.
Not recommended for Pentium without MMX machines.

1.3. Contact Author

Email to Takayuki 'January June' Suwa:

1.4. Revision History



2. How to Use


2.1. In This Archive

SSSBBACC.dll
Software Screen to Screen BitBlt Acceleration GRADD filter driver file
README.htm / READMEJ.htm
This document
source\*
Source code set of SSSBBACC.dll
source\fromIBM\*.H
Some C/C++ header files from DDK

2.2. Driver Installation

  1. Unzip archive to where you desire. (e.g. C:\SSSBBACC)
  2. Copy SSSBBACC.DLL to where LIBPATH reaches. (e.g. C:\OS2\DLL)
  3. Find similar line
    SET C1=GRADD1,GRADD2,GRADD3
    from your CONFIG.SYS and append 'SSSBBACC' to it. For example:
    SET C1=GRADD1,GRADD2,GRADD3,SSSBBACC
  4. Optionally (but highly recommended), cast write-combining strategy to VRAM aperture.
  5. Restart your system.
  6. Check GRADD.LOG on \OS2\INSTALL directory on boot drive. If installation successfully, you will see such as:
    yyyymmddThhmmss VMAN:ProcessGraddList(): Module GRADD1 loaded successfully
    yyyymmddThhmmss VMAN:ProcessGraddList(): Module GRADD2 loaded successfully
    yyyymmddThhmmss VMAN:ProcessGraddList(): Module GRADD3 loaded successfully
    yyyymmddThhmmss VMAN:ProcessGraddList(): Module SSSBBACC loaded successfully

2.3. Configuration

  1. In default, SSSBBACC.DLL will detect MMX / SSEint and try to use them automatcally:
  2. In order not to use MMX or SSEint, set some environment variables in your CONFIG.SYS, with any dummy value:
    SSSBBACC_NOSSEINT
    inhibits using SSEint
    SSSBBACC_NOMMX
    inhibits using MMX
  3. On some MMX-capable CPUs, however, generic FPU integer blitter may be faster than others.
    Try to disable MMX / SSEint blitters.

2.4. Before and After

Sample case (our developping environment): SysBench 'BitBlt S->S Copy' results:
ATI Mach64 GRADD [M64GRADD] (ill-slowed 24bpp left-to-right S2S BitBlt)
24bpp : 1.501 to 4.358 million pixels/second (2.90x faster)
SVGA Generic GRADD [GENGRADD] (totally software processing)
8bpp : 4.616 to 12.586 million pixels/second (2.73x faster)
16bpp : 2.548 to 6.281 million pixels/second (2.47x faster)
24bpp : 1.471 to 4.184 million pixels/second (2.84x faster)


3. Credits

Development
Programming
Takayuki 'January June' Suwa / Beliefia Productions
Documentation
Takayuki 'January June' Suwa / Beliefia Productions
Special thanks to
Masaharu 'Densuke' Nagata
He allowed me to replicate WARP4 Developer's Toolkit UNDER LEGAL LICENSE. Thanks a lot.


Copyright 2001 Takayuki 'January June' Suwa / Beliefia Productions. All rights reserved.
Beliefia Productions and its logo design are trademarks of Beliefia Productions. All rights reserved.
Other copyrighted works (images, musics, programs, and so on), trademarks and servicemarks in this document are owned by their respective owners.

[This document is HTML3.2(Wilbur)-compliant.]