Seth Woolley's Man Viewer

accel(6) - accel - tests the new style svgalib accelerator interface - man 6 accel

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

accel(6)                      Svgalib User Manual                     accel(6)



NAME
       accel - tests the new style svgalib accelerator interface

SYNOPSIS
       accel


DESCRIPTION
       Test  new-style accelerated functions (As of this writing: Ark, Cirrus,
       Chips & Technologies cards, and Mach32 only).  For other cards the demo
       will  not  work  (well  it will complain about missing accelerator sup-
       port). Don't worry about this.

       During the development of the Mach32 new style driver for 1.2.12,  this
       demo was massively extended to check the Mach32 functions.

       Upon  startup it lists all supported SVGA modes and asks you to enter a
       number identifying the mode to be tested. The supported subfunctions of
       vga_accel(3)  in(1,8)  this  mode are listed and the demo instructs to press
       <Return> to start the demos.

       If supported, all drawing operations are performed in(1,8) the background.

       Then the following tests are performed:

   Positioning tests
       These tests were originally intended to check that the accelerator com-
       mands  work on the proper screen locations. The screen shows 12 (4 x 3)
       smaller areas with red crosses in(1,8) the corners. When everything  is  ok,
       the drawings should reach right in(1,8) the corners of the crosses.

       A  given  card may not support all operations listed here. In that case
       the resp. test area just shows the red crosses.  For  tests  performed,
       the  name  of  the  test is printed below the area. The tests are (from
       left to right, top to bottom):


       1.     A green box is drawn with vga_accel(ACCEL_FILLBOX).

       2.     A cross of green lines is drawn with  vga_accel(ACCEL_DRAWLINE).

       3.     A  linux  pixmap  just  fitting  into  the crosses is drawn with
              vga_accel(ACCEL_PUTIMAGE).

       4.     A pixmap just fitting into the crosses is  drawn  into  the  red
              crosses  (by vgagl(5) which may or may not use the accelerator).
              The pixmap is then copied to a few  lines/columns  below.  Green
              crosses mark the intended destination position.

       5.     Works like 3. but copies to an area above the origin. The accel-
              erator must ensure that the overlapping areas  are  handled  non
              corrupting. Thus, watch that the copy operation is properly per-
              formed.

       6.     A green triangle is drawn above  the  top/left  to  bottom/right
              diagonal by use of vga_accel(ACCEL_DRAWHLINELIST).

       7.     Certain  bitmaps are copied to the screen. In the corners you'll
              see the digits

              0      top/left, green on red.

              1      top/right, red on green.

              2      bottom/left, black on white.

              3      bottom/right, white on black. Note that some  black  bor-
                     der, not the digit will be aligned to the red crosses.

              Finally, a yellow wizard image is drawn into the center.

              The  bit  ordering for bitmaps is a bit weird. Please check that
              the digits are not mirrored or flipped.

       8.     This time(1,2,n) bitmap transparency is tested by drawing wizard images
              onto the aforementioned linux pixmap (left to right, top to bot-
              tom) in(1,8) yellow, red, green, and cyan. The background of the yel-
              low  wizard  is  masked out by a black border bitmap.  Note that
              the wizard will not reach into the red corners because the  bit-
              map has some (transparent) border.

       9.     The  text  below  this box is copied as a monochrome bitmap from
              the screen into the corners listed under 7. in(1,8) the same  colors.

       10.    Two  green  rectangles  with  an edge cut out from the bottom is
              drawn using vga_accel(ACCEL_POLYLINE).Thereisanintendedbugwhich-
              drawsthecenterofthe top line twice. If supported, the lower rec-
              tangle is drawn in(1,8) cyan and with the xor raster  operation  s.t.
              the buggy point is not drawn thus leaving a pin hole.

       11.    vga_accel(ACCEL_POLYHLINE)isusedtodrawsomegreenlineswhich-
              makesthisarealook(1,8,3 Search::Dict) like a green box with a cut out, black M-style
              shape.

       12.    A    weird    green    polygon    is    filled   in(1,8)   red   with
              vga_accel(ACCEL_POLYFILLMODE)  using  the  techniques  given  in(1,8)
              vga_accel(3).   This  needs some offscreen memory. If VGA memory
              is tight in(1,8) that resolution the test cannot be performed.

       After this screen, you'll have to hit <Return> to continue.

   Raster operations
       Again, red cross bordered areas are drawn on the screen, this time(1,2,n)  for
       each  of  the  supported raster operations. For ROP_AND and ROP_XOR the
       areas are filled in(1,8) white first.

       Three overlapping boxes A, B, C are drawn such that you see the follow-
       ing areas.

       AAAAAAddddBBBBBB
       AAAAAAddddBBBBBB
       AAAAAAddddBBBBBB
       AAAAeeggggffBBBB
       AAAAeeggggffBBBB
       AAAAeeggggffBBBB
           CCCCCCCC
           CCCCCCCC
           CCCCCCCC

       The pictures should show:

       1.     Replace  mode.  A, B, C are red, green, blue. They just overlap,
              yielding d - green and e, f, g - blue.

       2.     The colors mix using ROP_OR (and a nice(1,2) color table). The  over-
              lapping  areas  become  the  additive color mix: d - yellow, e -
              magenta, f - cyan, and g - white.

       3.     ROP_AND is used. The background  is  filled  white  first,  s.t.
              there is something in(1,8) video memory to and with non trivially. We
              have A, B, C in(1,8) cyan, magenta, yellow and d, e, f,  g  in(1,8)  blue,
              green, red, black.

       4.     ROP_XOR is used and the background filled white first too. A, B,
              C are red, green, blue again, but the overlapping areas d, e, f,
              g  become blue, green, red, white.

       5.     ROP_INV  is  used,  s.t.  A,  B,  C are all white and d, e, f, g
              become black, black, black, white.  Note that this is  not  done
              by  using  ROP_XOR and drawing A, B, C in(1,8) white. Instead A, B, C
              are drawn in(1,8) the usual
               red, green, blue. However, the  accelerator  just  inverts  the
              memory contens.

       If  the  accelerator supports raster operations for ACCEL_DRAWHLINELIST
       actually disks (well, ellipses) are drawn instead of boxes.

       After this screen, you'll have to hit <Return> to continue.


   Replace QuixDemo
       If ACCEL_DRAWLINE is supported, a Quix like bouncing series of lines in(1,8)
       varying colors is drawn. The lines are removed from the screen by over-
       drawing them in(1,8) black, thus erasing the dots  and  text  on  the  back-
       ground.

       The  test lasts about 5 seconds and some statistics are printed to std-
       out.


   XOR Mode QuixDemo
       As before, but this time(1,2,n) all  lines  are  drawn  in(1,8)  ROP_XOR  mode  (if(3,n)
       ACCEL_DRAWLINE  supports  raster  operations). Thus the background will
       not be destroyed this time.

       The test lasts about 5 seconds and some statistics are printed to  std-
       out.


   FillBox Demo
       The screen is ACCEL_FILLBOX filled with a series of boxes of increasing
       colors.  In truei/high color modes you'll probably only see a series of
       varying blue tones (because these are at the beginning of the color ta-
       ble and there are soo many of them).

       The test lasts about 5 seconds and some statistics are printed to  std-
       out.


   ScreenCopy Demo
       Some  random(3,4,6) dots are drawn on the screen and thirds of the screen con-
       tents are moved around using ACCEL_SCREENCOPY.

       The test lasts about 5 seconds and some statistics are printed to  std-
       out.


   Scroll Demo
       Some  random(3,4,6)  dots  are  drawn on the screen and moved one line up with
       ACCEL_SCREENCOPY.  In offscreen memory a new  line  is  prepared  which
       will  be  cleared  by ACCEL_FILLBOXandmove(3x,7,3x curs_move)in(1,8)frombelow.Thistestrequires-
       someoffscreenandwillnot be performed if(3,n) video memory is very tight.

       The test lasts about 5 seconds and some statistics are printed to  std-
       out.


   FillBox with DrawHLineList Demo
       Like the FillBox test, but no box fill is done but the screen is filled
       with a list of horizontal lines drawn with ACCEL_DRAWHLINELIST.

       The test lasts about 5 seconds and some statistics are printed to  std-
       out.


   FillBox XOR Mode Demo
       Like the FillBox test, but the XOR raster operation is used.

       The  test lasts about 5 seconds and some statistics are printed to std-
       out.


   PutBitmap Demo
       The screen is filled with bitmasks consisting of  tiny  vertical  lines
       alternating in(1,8) red and blue.

       The  test lasts about 5 seconds and some statistics are printed to std-
       out.


SOME DATAPOINTS
       Here is a list of speed listings for some cards. Please  keep  in(1,8)  mind
       that  also the calling overhead for the program is measured. This seems
       to be esp. true for the QuixDemo.


   Results on a Cirrus GD5434-E with 2Mb:
       640x480x256 60 Hz
              FillBox: 200.3 Mpixels/s (200.3 Mbytes/s)
              ScreenCopy: 51.0 Mpixels/s (51.0 Mbytes/s)
              Scroll Demo: 50.5 Mpixels/s (50.5 Mbytes/s)
              FillBox XOR: 83.2 Mpixels/s (83.2 Mbytes/s)

       320x200x256 70 Hz
              FillBox: 200.1 Mpixels/s (200.1 Mbytes/s)
              ScreenCopy: 52.3 Mpixels/s (52.3 Mbytes/s)
              Scroll Demo: 51.2 Mpixels/s (51.2 Mbytes/s)
              FillBox XOR: 87.1 Mpixels/s (87.1 Mbytes/s)

       640x480x32K 60 Hz
              FillBox: 90.9 Mpixels/s (181.8 Mbytes/s)
              ScreenCopy: 23.1 Mpixels/s (46.3 Mbytes/s)
              Scroll Demo: 23.0 Mpixels/s (46.1 Mbytes/s)
              FillBox XOR: 37.2 Mpixels/s (74.5 Mbytes/s)

       640x480x16M (32-bit) 60 Hz
              FillBox: 35.5 Mpixels/s (142.3 Mbytes/s)
              ScreenCopy: 9.3 Mpixels/s (37.3 Mbytes/s)
              Scroll Demo: 9.2 Mpixels/s (37.1 Mbytes/s)
              FillBox XOR: 14.6 Mpixels/s (58.6 Mbytes/s)


   On a Cirrus Logic 5426 VLB (50 MHz MCLK):
       640x480x256 60 Hz
              FillBox: 32.8 Mpixels/s (32.8 Mbytes/s)
              ScreenCopy: 16.4 Mpixels/s (16.4 Mbytes/s)
              Scroll Demo: 16.3 Mpixels/s (16.3 Mbytes/s)
              FillBox XOR: 16.5 Mpixels/s (16.5 Mbytes/s)

       640x480x32K 60 Hz
              FillBox: 12.2 Mpixels/s (24.4 Mbytes/s)
              ScreenCopy: 6.1 Mpixels/s (12.2 Mbytes/s)
              Scroll Demo: 6.0 Mpixels/s (12.1 Mbytes/s)
              FillBox XOR: 6.1 Mpixels/s (12.2 Mbytes/s)


   Tweaked to 60 MHz MCLK:
       640x480x256 60 Hz
              FillBox: 42.1 Mpixels/s (42.1 Mbytes/s)
              ScreenCopy: 21.0 Mpixels/s (21.0 Mbytes/s)
              Scroll Demo: 20.9 Mpixels/s (20.9 Mbytes/s)
              FillBox XOR: 21.1 Mpixels/s (21.1 Mbytes/s)

       640x480x32K 60 Hz
              FillBox: 16.7 Mpixels/s (33.5 Mbytes/s)
              ScreenCopy: 8.3 Mpixels/s (16.7 Mbytes/s)
              Scroll Demo: 8.3 Mpixels/s (16.7 Mbytes/s)
              FillBox XOR: 8.3 Mpixels/s (16.7 Mbytes/s)

   Results on a Mach32 EISA with 2Mb VRAM:
       1280x1024x256 60 Hz
              Replace QuixDemo: 12.1 Klines/s (6.7 Mpixels/s or 6.7 Mbytes/s)
              Xor QuixDemo: 9.9 Klines/s (5.1 Mpixels/s or 5.1 Mbytes/s)
              FillBox: 75.4 Mpixels/s (75.4 Mbytes/s)
              ScreenCopy: 26.4 Mpixels/s (26.4 Mbytes/s)
              Scroll Demo: 28.7 Mpixels/s (28.7 Mbytes/s)
              FillBox with DrawHlineList: 73.1 Mpixels/s (73.1 Mbytes/s)
              FillBox XOR: 37.9 Mpixels/s (37.9 Mbytes/s)
              PutBitmap: 15.6 Mpixels/s (15.6 Mbytes/s)


       1024x768x64K 72Hz
              Replace QuixDemo: 12.3 Klines/s (5.2 Mpixels/s or 10.5 Mbytes/s)
              Xor QuixDemo: 9.0 Klines/s (5.1 Mpixels/s or 10.3 Mbytes/s)
              FillBox: 37.6 Mpixels/s (75.2 Mbytes/s)
              ScreenCopy: 13.2 Mpixels/s (26.4 Mbytes/s)
              Scroll Demo: 13.2 Mpixels/s (26.4 Mbytes/s)
              FillBox with DrawHlineList: 37.0 Mpixels/s (74.0 Mbytes/s)
              FillBox XOR: 18.9 Mpixels/s (37.8 Mbytes/s)
              PutBitmap: 15.2 Mpixels/s (30.5 Mbytes/s)


       You're  encouraged  to send(2,n) in(1,8) more data.  This demo is part of svgalib
       and can be found in(1,8) the demos/ subdirectory  of  the  original  svgalib
       distribution.  However,  it  is not installed in(1,8) the system by default,
       s.t. it is unclear where you can find it if(3,n) your svgalib was  installed
       by  some  linux distribution. Even then, when you have the demo on your
       system, you probably won't have the sources s.t. it is only of  limited
       use for you.

       In  case  of  any such problem, simply get an svgalib distribution from
       the net. You even don't need to install it. Just  make  in(1,8)  the  demos/
       subdirecty.  As  of  this  writing, svgalib-1.2.12.tar.gz is the latest
       version(1,3,5)  and  can  be  retrieved  by  ftp   from   sunsite.unc.edu   at
       /pub/Linux/libs/graphics  and tsx-11.mit.edu at /pub/linux/sources/libs
       which will most probably be mirrored by a site close(2,7,n) to you.


SEE ALSO
       svgalib(7),  vgagl(7),   libvga.config(5),   vga_accel(3),   threed(6),
       bg_test(6),     eventtest(6),    forktest(6),    fun(6),    keytest(6),
       mousetest(6),  scrolltest(6),  speedtest(6),   spin(6),   testaccel(6),
       testgl(6), testlinear(6), vgatest(6), plane(6), wrapdemo(6)


AUTHOR
       This  manual  page  was  edited by Michael Weller <eowmob@exp-math.uni-
       essen.de>. The demo and most of its documentation is due to Harm  Hane-
       maayer <H.Hanemaayer@inter.nl.net>.



Svgalib (>= 1.2.11)              29 July 1997                         accel(6)

References for this manual (incoming links)