Home page | EN-US English | Other projects (EN-US English)
According to WIKI - Hardware acceleration is the use of hardware to perform some function faster than is possible in software running on the normal (general purpose) CPU. Examples of hardware acceleration include blitting acceleration functionality in graphics processing units (GPUs) and instructions for complex operations in CPUs.
Normally, processors are sequential, and instructions are executed one by one. Various techniques are used to improve performance; hardware acceleration is one of them. The main difference between hardware and software is concurrency, allowing hardware to be much faster than software. Hardware accelerators are designed for computationally intensive software code. Depending upon granularity, hardware acceleration can vary from a small functional unit to a large functional block like motion estimation in MPEG2.
The hardware that performs the acceleration, when in a separate unit from the CPU, is referred to as a hardware accelerator, or often more specifically as graphics accelerator or floating-point accelerator, etc. Those terms, however, are older and have been replaced with less descriptive terms like video card or graphics card.
In this article I am only covering 2D (in Windows terms - DirectDraw) acceleration (not Video Motion, 3D and Overlay acceleration types).
VBE/AF explained as VBE/AF Standard VESA BIOS Extension/Accelerator Functions (VBE/AF). It was planned as unified 32-bit BIOS interface to 2D acceleration functions between programs and video hardware, planned as BIOS-wide standard according to documents provided below but transformed in software driver and finally abandoned in 1998-1999 due to lack of interest and/or high fees, see FreeBE/AF site for details. Also great success of Windows and BSD/Unix systems, which are provided acceleration function via proprietary drivers, influenced this fact.
VBE/AF drivers are included in SciTech Display Doctor (former UniVBE) 6.53 (dated 6 June 1998) covering most of card manufactured in 1998.
... Benefits of SciTech Display Doctor ---------------------------------- * Accelerator Support. SciTech Display Doctor is the first product to support the new VESA VBE/AF (Accelerator Functions) standard. VBE/AF allows applications and operating systems to take advantage of full graphics hardware acceleration. Cards Supported with Full Acceleration -------------------------------------- The VBE/AF (Accelerator Functions) are a superset of the VBE 2.0 functions. SciTech Display Doctor creates a VBE/AF driver for all supported cards. Currently, SciTech Display Doctor only supports the superset functions of VBE/AF on the cards listed below. On all other cards, VBE/AF is supported, but it is only supported at the same level of functionality as VBE 2.0. Hence, there will be little or no performance increase on cards other than the ones listed below. * Alliance ProMotion 6410, 6422, AT24, AT25, AT3D * ARK Logic ARK1000VL/PV, ARK2000PV, ARK2000MT, Quadro64 * ATI Technologies 18800, 28800, Mach32, Mach64, 3D Rage I/ II/ II+DVD/IIC, 3D Rage Pro * Chips & Technologies 65545/48/50/.54/55 * Cirrus Logic CL-GD5430/34/36, CL-GD5440/46 Alpine VGA * Cirrus Logic CL-GD5462/64 Laguna VisualMedia * InteGraphics IGA1680/82/83, CyberPro 2000/2010 * iXMICRO TwinTurbo 128, TwinTurbo 128+, TwinTurbo 128-3D * Matrox MGA Millennium, Mystique, Millennium II, Mystique 220 * Number Nine Imagine 128 Series 1, II, IIb, IIc, IIe, Ticket 2 Ride * NeoMagic NM2070/90/93 LCD * OAK Technologies 64105/107/111/217/317 (Warp 5) * S3 86c911/924/80x/928, Vision 864/964/868/968, Trio32/64/64V+/64UV+/64V2, Aurora64V+, ViRGE, ViRGE/DX/GX/VX, ViRGE/GX2 * SiS 86c201, 6202, 6205, 6326 * Tseng ET4000/W32p, ET6000, ET6100, ET6300 ...
Now it is a free product. Use this info ( http://www.scitechsoft.com/ftp/sdd/regcodes.txt ) to register it:
SciTech Display Doctor 6.53-d DOS ONLY Free Version Code Reg Code: 00000-173D626E-02002 Full Name: 6.x Free EditionIn 1999 this project transformed to FreeBE/AF - free open source drivers and it has a minor rewrite when some other newer card drivers added:
ATI 18800/28800 ATI mach64 Avance Logic ALG-2101, ALG-2201, ALG-2228, ALG-2301, ALG-2302 Cirrus 54xx (not 546x). Should be ok with 5426, 5428, 7541, 7543 Matrox Millenium, Mystique, Millenium II NVidia Riva 128, TNT. Conflicts with Windows! Paradise S3 Trident TGUI 9440. Doesn't work under Windows! Trident Tseng ET3000/ET4000/ET6000 Video-7 stub driver (for testing and development purposes only)Only one product is supporting NOW such accelerated drivers in Linux/DOS environment. It is Allegro Programming library - http://www.allegro.cc. For DOS development DJGPP compiler is used.
Fixes list: 1. Added new mode 1152x864x8 (bios 0x7C mode) 2. MOVS misalignment bug, when you do "sysmem-vidmem" blit transfers 3. Optional fix to provide linear framebuffer mode for ISA/VLB cl-gd54xx cards 4. enable 24-bit/32-bit hardware accelerationDownload here: CL_GD54xx KIT ([?],[?]). It contains al2d blittest (Allegro lib based - DOS/DJGPP, Windows) mentioned below and modified VBEAF cirrus driver + source. When you run AL2D.EXE, use [ESC] then [Space] keyboard sequence to advance in next test!!!
* * Unaccelerated * * cl-gd5446 + ppro200 + 800x600x16 + ScitechVBE30 sysmem->vidmem 15.7 fps / 118.8 fps +MTRR vidmem->vidmem 6.2 fps / 11.7 fps +MTRR vidmem->sysmem 9.6 fps / 10.9 fps +MTRR cl-gd5446 + p1mmx166 + 800x600x16 + ScitechVBE30 sysmem->vidmem 109.9 fps vidmem->vidmem 13.3 fps vidmem->sysmem 15.1 fps * * Accelerated * * CL-GD5446 + ppro200 + 800x600x16 + FreeBE/AF ; ScitechVBEAF failed !!! sysmem->vidmem 15.7 fps / 109.9 fps +MTRR vidmem->vidmem 74.3 fps / 108.9 fps +MTRR vidmem->sysmem 9.4 fps / 10.6 fps +MTRR CL-GD5446 + p1mmx166 + 800x600x16 + FreeBE/AF sysmem->vidmem 101.0 fps vidmem->vidmem 78.2 fps vidmem->sysmem 15.1 fps CL-GD5446 + AMD5x86_133 + 800x600x16 + FreeBE/AF sysmem->vidmem 9.5 fps vidmem->vidmem 69.3 fps vidmem->sysmem 4.0 fps CL-GD5428 + AMD5x86_133 + 800x600x16 + FreeBE/AF (MCLK=0x1A) sysmem->vidmem 7.8 MB/s (7.9 MB/s with MCLK=0x22) vidmem->vidmem 7.0 MB/s (12.2 MB/s with MCLK=0x22) vidmem->sysmem 2.4 MB/s (3.9 MB/s with MCLK=0x22) CL-GD5428 + AMD486_DX2_66 + 800x600x16 + FreeBE/AF (MCLK=0x1C) sysmem->vidmem 6.7 MB/s (6.7 MB/s with MCLK=0x1F) vidmem->vidmem 8.1 MB/s (10.0 MB/s with MCLK=0x1F) vidmem->sysmem 2.9 MB/s (3.6 MB/s with MCLK=0x1F)
Note 1: In some cases MTRR USWC acceleration can be enabled simply in BIOS like in ASUS P2B-B AT mobo. :)
Note 2: With some hardware only one of these tools, provided below can CORRECTLY enable MTRR USWC acceleration. So you must check all of them! Most working (for me) is Fastvid.
VESAMTRR v1.3 (C) Japheth 2005-2007
vesamtrr.exe - part of HXGUI, HX DOS Extender GUI Extension: Additional binaries needed to load and run simple Win32 GUI applications with HX. This includes support for SDL, OpenGL and DirectDraw.
DOS HXGUI*.ZIP - http://japheth.de/Download/HX/
FastVid v1.10 PCI/AGP Video accelerator [710 KB, FREEware] is a DOS tool - http://www.mdgx.com/files/FASTV110.ZIP.
FastVid enables the Write Posting (WP), Banked VGA Write Combining (BVGAWC) and Linear Frame Buffer Write Combining (LFBWC) modes in the BIOS for your PCI/AGP video card, in MS-DOS 5.00 - 6.22 and Windows 3.1x/9x/ME. Does NOT use ANY memory.
VESATEST.ZIP ver. 1.46 [152 kB] - I wrote my own VESA VBE driver for graphics handling. VESATEST will test compatibility of your graphics card with VBE 1.2 - 3.0 standard and functionality of my driver. After test it create log file. Please send it to me.
24.3.2005 I partially rewrote and improve my VESA driver. Now it supports Write-Combining mode set for Linear FrameBuffer and BS window via MTRR registers (Pentium Pro processors and higher) which gain transfer rate between RAM off-screen buffer and LFB x-times. This setting also positive affects other DOS programs (Windows drivers usually enable W-C mode automatically). This mode stays enabled until you perform hardware reset.
10.3.2011 New version 1.45 contains improved MTRR setting function so now it can work also under old memory manager emm386.exe and Windows 9x. In bank-switched mode the video BIOS bank switching function is now called via far call instead of slower INT 10h service. I also fixed some minor bugs. As a bonus I added gtfcalc.exe utility including source code in this package. It allows you to enter video mode resolution and vertical refresh rate and calculate CRTC registers values according to VESA GTF specification and store it to crtc.cfg file. If this file is in current directory with VESATEST then video mode resolution + CRTC and other settings will be loaded from this file and override defaults and command line options. Currently I work on Windows port of my library using SDL library for low-level functions. The goal is that I will be able to compile my graphics programs without source code modification under DJGPP for DOS and under MinGW32 for Windows.
MTRRLFBE.EXE ver. 1.3 [55 kB] - MTRR-WC enabler for VESA LFB. On a query I wrote this small program which allows you to set MTRR mode independently for VGA (A0000h) area and LFB area (address of LFB is autodetected). If you will set W-C mode, you may gain performance of your existing programs which displays graphics through VESA VBE. On my machine: Celeron Tualatin 1466, intel BX chipset, SVGA GeForce MX440 I have got transfer rate (RAM->VRAM) gain eg. in 800 x 600 / 32 LFB mode from 62 MB/s to 315 MB/s.
BTW the whole thing about MTRRLFBE had started this way: I was programming some graphics routines for my DOS program and I did some benchmarks to find the fastest algorithm. But sometimes happened that program had been executed e.g. 5-times faster than usually. But it had nothing to do with my code. Everything was faster. Then I tracked that this effect happen when I reboot to DOS from Win98 without performing full restart. This led me to idea that nVidia drivers or Windows setup something that makes copying of framebuffer much faster. Then I googled a lot and discovered some intel document describing setting of MTRRs and its impact to graphics performance. Then it would be quite easy to implement it to my mtgfx library and as a stand alone utility...
8.1.2007 since version 1.1 allows you to set user address range for specified mode via following command line parameter USER:base_address:size_kB.
10.3.2011 In version 1.3 I completely rewrote MSR setting routines so now it can run under old memory manager emm386.exe and Windows 9x.
CPU/CACHE/Speicher-Analyse - system/video benchmark (can enable MTRR USWC and test affected video performance) - http://www.heise.de/ct/ftp/ctsi.shtml
ftp://ftp.heise.de/pub/ct/ctsi/ctcm17a.zip 99.928 05.05.00 CPU/CACHE/Speicher-Analyse (V1.7a, nach c't 1/93) Neu: Behandlung aller neuen Prozessoren incl. Pentium II und K6-2, benoetigt 2MByte im Extended Memory
CL-GD542x ---------------------------- VL-Bus up to 50MHz ISA bus 12.5 MHz ---------------------------- 5420 - SVGA, up to 1Mb, 16Bit Bus 5422 - TrueColor VGA, VO, up to 1Mb, 32Bit Bus 5424 - TrueColor VGA, Local Bus, VO, up to 1Mb, 32Bit Bus 5425 - TrueColor VGA, Local Bus, TV (PAL/NTSC), VO (16Bit YCbCr), up to 1Mb, 32Bit Bus 5426 - GUI Accelerator, Local Bus, VO, up to 2Mb, 32Bit Bus 5428 - Enhanced GUI Accelerator, Local Bus, VO, up to 2Mb, 32Bit Bus 5429 - GUI Accelerator, Local Bus, MMIO, VO, up to 2Mb, 32Bit Bus ---------------------------- PCLK 75-80-80-80-80-80-86 MHz MCLK 50-50-50-60-50-50-60 MHz HWCR 32-64-64-64-64-64-64 pix x pix
CL-GD5446 ---------------------------- MCLK 80 MHz PCLK 135 MHz VO, c - keying 1 - 4 Mb VRAM I2C (i.e. DDC2B) CR00 - CR5E (00-3F,50-5E) GR00 - GR35 SR00 - SR1F 32-bit color DAC HWCursor up to 64x64 VESA BIOS 1.2
CL-GD546x ---------------------------- 5462 PCLK 170 MHz 5464,5465(AGP) PCLK 230 MHz (up to 1600x1200x85Hz) MCLK ? True color up to 1024x768 (32 bit) 1 - 2 Mb VRAM I2C (i.e. DDC2B) 32-bit color DAC HWCursor up to 64x64
CL-GD5480 ---------------------------- MCLK 100 PCLK 135 (up to 200 with DBL) 1 - 4 Mb VRAM (SGRAM) I2C (i.e. DDC2B) CR00-CR7F GR00-GR7F SR00-SR1F 32-bit color DAC HWCursor up to 64x64 VESA BIOS 2.0
Here's a list of maximum dot clocks for each supported depth: mono 8 bpp (256c) 16 bpp 24 bpp 32 bpp CL-GD62x5 45 MHz 45 MHz CL-GD5420 80 MHz 45 MHz (1) CL-GD542x/512K 80 MHz 45 MHz CL-GD5422/24 80 MHz 80 MHz 40 MHz 27 MHz CL-GD5426/28 85 MHz 85 MHz 45 MHz (2) 28 MHz CL-GD5429 85 MHz 85 MHz 50 MHz 28 MHz CL-GD5430 85 MHz 85 MHz 45 MHz (2) 28 MHz CL-GD5434/1Mb 85 MHz 85 MHz 42 MHz 28 MHz CL-GD5434/2Mb 85 MHz 110/135 MHz 85 MHz 28 MHz 45/50 MHz (2) CL-GD5436/1Mb 85 MHz 110 MHz (3) 60 MHz (3) 40 MHz (3) CL-GD5436/2Mb 85 MHz 135 MHz 85 MHz 85 MHz (3) 60 MHz (3) CL-GD5446/1Mb 85 MHz 110 MHz (3) 60 MHz (3) 40 MHz (3) CL-GD5446/2Mb 85 MHz 135 MHz 85 MHz 85 MHz (3) 60 MHz (3) CL-GD546X 170 MHz 170 Mhz 170 MHz 170 MHz 170 MHz CL-GD754x 80 MHz 80 MHz 40 MHz (4) (5) (1) with 512K memory. (2) 50 MHz with high MCLK setting. (3) Depends on memory clock. (4) This may be too low for some chips. (5) This depth may actually work if it is enabled and tested.
CL-GD5446 Mode limits (assumed 4 Mb RAM) 8-bit modes: less than 4096x1280 (2560x1600 byRAM) ~3494x1024 15/16-bit modes: less than 2046x1280 (1920x1080 byRAM) ~2048x1024 or ~1920x1080 24-bit modes: less than 1368x1280 (1360x1024, 1440x960 byRAM) ~1360x1024 32-bit modes: less than 1024x1280 (1360x768 byRAM) ~960x720
Drivers - Cirrus Logic
GD542X DOS utilities
k542x-d1.zip (835k) 12/21/1995
GD542X OS/2 (2.x and 3.x) drivers v1.50
k542x-d3.zip 12/21/1995 1303k
GD5422/GD5424 Windows 3.1x drivers v1.50 Disk 1/2
k54242e.zip 12/21/1995 612k
GD5422/GD5424 Windows 3.1x drivers v1.50 Disk 2/2
k54242e2.zip 12/21/1995 731k
GD5426/GD5428 Windows 3.1x drivers v1.50 Disk 1/2
k54282e.zip 12/21/1995 702k
GD5426/GD5428 Windows 3.1x drivers v1.50 Disk 2/2
k54282e2.zip 12/21/1995 729k
CL-GD5422, CL-GD5424 Windows NT 3.1 driver v1.43
k542xd4a.zip 12/21/1995 119k
CL-GD5426, CL-GD5428 Windows NT 3.1 driver v1.41
k542xd4b.zip 12/21/1995 118k
GD542X Windows NT 3.5x drivers v1.50
k542x-d5.zip 12/21/1995 139k
CL-GD542X BIOS overlay for VESA v1.2 support on ISA cards, v1.41.
542xvga.exe 10/28/1997 32.6k
Note: This is not a BIOS update; updates can only come from the video board manufacturer.
CL-GD542X BIOS overlay for VESA v1.2 support on VL-Bus cards, v1.41.
542xvgal.exe 10/28/1997 32.6k
Note: This is not a BIOS update; updates can only come from the video board manufacturer.
GD5429 DOS utilities v1.00b
k5429-d1.zip (550k) 12/21/1995
GD5429 Windows 3.1x & Win-OS/2 Linear drivers v1.00b
k5429-d2.zip (883k) 12/21/1995
GD5429 OS/2 2.1 drivers v1.00b
k5429-d3.zip (1187k) 12/21/1995
CL-GD5446 OS/2 Warp 2.1X-4.0 drivers, v1.40
5446os2.zip (1153k) 1/26/1998
CL-GD5446 Windows 95 drivers, v1.41
5446w95.zip (361k) 9/02/1998
CL-GD5446 Windows NT 4.0 drivers, v1.41
5446nt4.zip (194k) 9/02/1998
CL-GD5446 Windows NT 3.5X drivers, v1.40
5446nt35.zip (69.7k) 1/26/1998
CL-GD5446 DOS Driver & Utils Ver 1.31
k54461e.zip (983k) 4/25/1997
CL-GD5446 Windows 3.1x Driver & Utils Ver 1.31
k54462e.zip (1139k) 4/25/1997
CL-GD5446 Japanese Windows 3.1x Driver & Utils v1.31 Disk [1/2]
k54462j.zip (842k) 4/25/1997
CL-GD5446 Japanese Windows 3.1x Driver & Utils v1.31 Disk [2/2]
k54462j2.zip (1117k) 4/25/1997
CL-GD5446 Japanese OS/2 2.1x-4.0 Driver & Utils Ver 1.31
k54463j.zip (1164k) 4/25/1997
CL-GD5446 Tvtap Software v2.00.043
k5446t.zip (1291k) 3/11/1998
CL-GD5446 VESA 2.0 TSR v1.0
clvbe20.zip (4.95k) 4/25/1997
CL-GD5480 DOS Drivers & Utils Ver 1.00
k54801e.zip 4/25/1997 (985k)
CL-GD5480 Japanese DOS Drivers & Utils Ver 1.00
k54801j.zip 4/25/1997 (1235k)
CL-GD5480 Chinese/Korea Windows 3.1X Drivers & Utils Ver 1.00
k54802ck.zip 4/25/1997 (1111k)
CL-GD5480 Windows 3.1X Drivers Ver 1.01
k54802e.zip 3/12/1998 (1171k)
CL-GD5480 Japanese Windows 3.1X Drivers & Utils v1.00 Disk [1/2]
k54802j1.zip 4/25/1997 (905k)
CL-GD5480 Japanese Windows 3.1X Drivers & Utils v1.00 Disk [2/2]
k54802j2.zip 4/25/1997 (1117k)
CL-GD5480 OS/2 2.1X-4.0 Driver & Utility Ver 1.00
k54803e.zip 4/25/1997 (1164k)
CL-GD5480 Japanese OS/2 2.1X-4.0 Driver & Utility Ver 1.00
k54803j.zip 4/25/1997 (1146k)
Windows 95 drivers, v1.01b for CL-GD5480 Disk 1/2
k54806e1.zip 8/19/1997 (1223k)
Windows 95 drivers, v1.01b for CL-GD5480 Disk 2/2
k54806e2.zip 8/19/1997 (1357k)
Windows NT 3.5X-4.0 drivers, v1.00d for the CL-GD5480
k54807.zip 8/19/1997 (400k)
TVTap Drivers and utilities disk v2.00.42
k5480tv.zip 8/19/1997 (1269k)