xx1111ppeerrff -- X Utility

Test performance of the X11 server
xx1111ppeerrff [ -_o_p_t_i_o_n ... ]

xx1111ppeerrff runs one  or more performance tests and reports  how quickly your X
server can execute them

Many graphics benchmarks assume that the graphics device is used to display
the output of  a single fancy graphics application, and  that the user gets
his  work done  on some  other  device, like  a terminal.   Such benchmarks
usually  measure drawing  speed for  lines,  polygons, text,  etc.  Because
workstations are  not used as  stand-alone graphics engines,  but as super-
terminals,  xx1111ppeerrff  measures  window-management  performance  as  well  as
traditional graphics performance.  It includes benchmarks for the time your
server  takes  to  create  and  map  windows  (as  when  you  start  up  an
application); to map a pre-existing set of windows onto the screen (as when
you deiconify  an application or  pop-up a menu); and  to rearrange windows
(as when you slosh windows to and fro trying to find the one you want).

xx1111ppeerrff also measures graphics performance for operations not normally used
in stand-alone graphics displays,  but are nonetheless used frequently by X
applications.  Such operations  include CCooppyyPPllaannee (used to map bitmaps into
pixels), scrolling  (used in text windows), and  various stipples and tiles
(used for CAD and color half-toning, respectively).

You should use xx1111ppeerrff to  analyze the strengths and weaknesses of servers.
It  is most  useful to  the writer  of a  server who  wants to  analyze and
improve it.

xx1111ppeerrff exercises  nearly every X11 operation you can  perform; it does not
limit  itself  to  a  representative  sample  of the  operations  that  X11
applications actually use.  Although it can  be used as a benchmark, it was
written  and  is intended  test  performance.  As  such,  xx1111ppeerrff _d_o_e_s  _n_o_t
whittle down  measurements to a single  ``HeXStones'' or ``MeXops'' number.
We consider  such numbers  to be uninformative  at best, and  misleading at
worst.  Some  servers that  are very fast  for certain applications  can be
very  slow for  others.   No single  number  or small  set  of numbers  are
sufficient  to  characterize  how  an  X  implementation  performs  on  all
applications.  However, by  knowledge of your favorite application, you may
be able to use the numbers  xx1111ppeerrff reports to predict its performance on a
given X implementation.

That being  said, you may also  want to look at  xx1111ppeerrffccoommpp a program that
compares the outputs of different runs of xx1111ppeerrff. You provide it a list of
files that  contain the  results from  xx1111ppeerrff, and it  lays them out  in a
nice, tabular format.

For repeatable  results, run xx1111ppeerrff using a local  connection on a freshly
started server.   The default configuration  runs each test  five times, to
see if  each trial  takes approximately the  same amount of  time.  Strange
glitches should be examined; if  non-repeatable, one might chalk them up to
daemons and network traffic.  Each trial is run for five seconds, to reduce
random differences in time.  The  number of objects processed per second is
displayed to three  significant digits, but you will be  lucky on most UNIX
systems if the numbers are consistent to two digits.

xx1111ppeerrff moves  the cursor out of  the test window.  Be  careful not to bump
the mouse  and move it  back into the  window.  (A prize to  the person who
explains why!)

Before running a  test, xx1111ppeerrff determines what the round  trip time to the
server is, and  factors this out of the final  timing reported.  It ensures
that the  server has  actually performed the  work requested by  fetching a
pixel back  from the test  window; this ensures  that servers that  talk to
graphics  accelerators  cannot  claim that  they  have  finished while  the
accelerator is still painting madly.

By default,  xx1111ppeerrff automatically calibrates the  number of repetitions of
each test, so each should take approximately the same length of time to run
across servers  of widely differing speeds.  However, as  each test must be
run to  completion at least  once, some slow  servers may take  a very long
time, particularly on the window moving  and resizing tests, and on the arc
drawing tests.

All timing reports are for  the smallest object involved.  For example, the
line  tests use  a PPoollyyLLiinnee  request to  paint several  lines at  once, but
report  how many  lines  per second  the  server can  paint,  not how  many
PPoollyyLLiinnee requests  per second.  Text tests paint a  line of characters, but
report  on the  number of  characters per second.   Some window  tests map,
unmap, or  move a  single parent  window, but report  on how  many children
windows per second the server can map, unmap, or move.

_O_p_t_i_o_n_s
xx1111ppeerrff is  based solely on XXlliibb. It  recognizes the following command-line
options:

-ddiissppllaayy _h_o_s_t:_d_i_s_p_l_a_y
     Use _d_i_s_p_l_a_y on _h_o_s_t.

-ssyynncc
     Run the tests in synchronous  mode.  Normally, this is useful only for
     debugging xx1111ppeerrff

-ppaacckk
     Run rectangle  tests so that  they pack rectangles right  next to each
     other.   This makes  it easy  to  debug server  code for  stipples and
     tiles: if the pattern looks ugly, you've got alignment problems.

-rreeppeeaatt _n
     Repeats each  test  _n times.  By default, xx1111ppeerrff  runs each test five
     times.

-ttiimmee _s_e_c_o_n_d_s
     Run each test for _s_e_c_o_n_d_s. The default is five seconds for each test.

-aallll Runs every test.  This may take a long time to execute.

-rraannggee _t_e_s_t_1[,_t_e_s_t_N]
     Run every test from  _t_e_s_t_1 through _t_e_s_t_N. The test names should be one
     of the  options starting  from -ddoott.  These are described  below.  For
     example, the option

         -range line100,dline10

     executes every test from lliinnee110000 through ddlliinnee1100. The option

         -range line100

     begins with the  100-pixel line test and runs to  the last test in the
     suite.

-llaabbeellss
     Generate  just the  descriptive labels for  each test  specified.  For
     details, see the Lexicon entry for xx1111ppeerrffccoommpp.

-ffgg _c_o_l_o_r
     Use _c_o_l_o_r to paint the foreground.

-bbgg _c_o_l_o_r
     Use _c_o_l_o_r to paint the background.

-rroopp _r_o_p_0 ... _r_o_p_N
     Use the  raster operations _r_o_p_0  through _r_o_p_N. The  default is GGXXccooppyy.
     This  option only  affects graphics benchmarks  that actually  use the
     graphics function.

-ppmm _p_m_0 ... _p_m_N
     Use plane masks  _p_m_0 through _p_m_N. The default is  ~00. This option only
     affects graphics benchmarks that actually use the plane mask.

-ddeepptthh _d_e_p_t_h
     Use a visual with _d_e_p_t_h planes  per pixel.  The default is the default
     visual.

The following options name the tests that xx1111ppeerrff can perform.  They appear
here in  the order in which  xx1111ppeerrff executes them.  If  you name the tests
with the -rraannggee option, you must keep this order in mind.  You can also ask
xx1111ppeerrff to perform  one or more tests individually, by  naming each test on
on the command line:

-ddoott Draw dots.

-rreecctt11
     Draw 1x1 solid-filled rectangle.

-rreecctt1100
     Draw 10x10 solid-filled rectangle.

-rreecctt110000
     Draw 100x100 solid-filled rectangle.

-rreecctt550000
     Draw 500x500 solid-filled rectangle.

-ssrreecctt11
     Draw 1x1 transparent stippled rectangle, 8x8 stipple pattern.

-ssrreecctt1100
     Draw 10x10 transparent stippled rectangle, 8x8 stipple pattern.

-ssrreecctt110000
     Draw 100x100 transparent stippled rectangle, 8x8 stipple pattern.

-ssrreecctt550000
     Draw 500x500 transparent stippled rectangle, 8x8 stipple pattern.

-oossrreecctt11
     Draw 1x1 opaque stippled rectangle, 8x8 stipple pattern.

-oossrreecctt1100
     Draw 10x10 opaque stippled rectangle, 8x8 stipple pattern.

-oossrreecctt110000
     Draw 100x100 opaque stippled rectangle, 8x8 stipple pattern.

-oossrreecctt550000
     Draw 500x500 opaque stippled rectangle, 8x8 stipple pattern.

-ttiilleerreecctt11
     Draw 1x1 tiled rectangle, 4x4 tile pattern.

-ttiilleerreecctt1100
     Draw 10x10 tiled rectangle, 4x4 tile pattern.

-ttiilleerreecctt110000
     Draw 100x100 tiled rectangle, 4x4 tile pattern.

-ttiilleerreecctt550000
     Draw 500x500 tiled rectangle, 4x4 tile pattern.

-bbiiggssrreecctt11
     Draw 1x1 stippled rectangle, 161x145 stipple pattern.

-bbiiggssrreecctt1100
     Draw 10x10 stippled rectangle, 161x145 stipple pattern.

-bbiiggssrreecctt110000
     Draw 100x100 stippled rectangle, 161x145 stipple pattern.

-bbiiggssrreecctt550000
     Draw 500x500 stippled rectangle, 161x145 stipple pattern.

-bbiiggoossrreecctt11
     Draw 1x1 opaque stippled rectangle, 161x145 stipple pattern.

-bbiiggoossrreecctt1100
     Draw 10x10 opaque stippled rectangle, 161x145 stipple pattern.

-bbiiggoossrreecctt110000
     Draw 100x100 opaque stippled rectangle, 161x145 stipple pattern.

-bbiiggoossrreecctt550000
     Draw 500x500 opaque stippled rectangle, 161x145 stipple pattern.

-bbiiggttiilleerreecctt11
     Draw 1x1 tiled rectangle, 161x145 tile pattern.

-bbiiggttiilleerreecctt1100
     Draw 10x10 tiled rectangle, 161x145 tile pattern.

-bbiiggttiilleerreecctt110000
     Draw 100x100 tiled rectangle, 161x145 tile pattern.

-bbiiggttiilleerreecctt550000
     Draw 500x500 tiled rectangle, 161x145 tile pattern.

-eesscchheerrttiilleerreecctt11
     Draw 1x1 tiled rectangle, 215x208 tile pattern.

-eesscchheerrttiilleerreecctt1100
     Draw 10x10 tiled rectangle, 215x208 tile pattern.

-eesscchheerrttiilleerreecctt110000
     Draw 100x100 tiled rectangle, 215x208 tile pattern.

-eesscchheerrttiilleerreecctt550000
     Draw 500x500 tiled rectangle, 215x208 tile pattern.

-sseegg11
     Draw one-pixel, thin-line segment.

-sseegg1100
     Draw ten-pixel, thin-line segment.

-sseegg110000
     Draw 100-pixel, thin-line segment.

-sseegg550000
     Draw 500-pixel, thin-line segment.

-sseegg110000cc11
     Draw 100-pixel, thin-line segment (one obscuring rectangle).

-sseegg110000cc22
     Draw 100-pixel, thin-line segment (two obscuring rectangles).

-sseegg110000cc33
     Draw 100-pixel, thin-line segment (three obscuring rectangles).

-ddsseegg1100
     Draw ten-pixel, thin, dashed segment (three on, two off).

-ddsseegg110000
     Draw 100-pixel, thin, dashed segment (three on, two off).

-ddddsseegg110000
     Draw100-pixel,  thin,  double-dashed  segment (three  foreground,  two
     background).

-hhsseegg1100
     Draw ten-pixel, thin, horizontal-line segment.

-hhsseegg110000
     Draw 100-pixel, thin, horizontal-line segment.

-hhsseegg550000
     Draw 500-pixel, thin, horizontal-line segment.

-vvsseegg1100
     Draw ten-pixel, thin, vertical-line segment.

-vvsseegg110000
     Draw 100-pixel, thin, vertical-line segment.

-vvsseegg550000
     Draw 500-pixel, thin, vertical-line segment.

-wwhhsseegg1100
     Draw ten-pixel, wide, horizontal-line segment.

-wwhhsseegg110000
     Draw 100-pixel, wide, horizontal-line segment.

-wwhhsseegg550000
     Draw 500-pixel, wide, horizontal-line segment.

-wwvvsseegg1100
     Draw ten-pixel, wide, vertical-line segment.

-wwvvsseegg110000
     Draw 100-pixel, wide, vertical-line segment.

-wwvvsseegg550000
     Draw 500-pixel, wide, vertical-line segment.

-lliinnee11
     Draw one-pixel, thin (width zero) line.

-lliinnee1100
     Draw ten-pixel thin line.

-lliinnee110000
     Draw 100-pixel thin line.

-lliinnee550000
     Draw 500-pixel thin line.

-ddlliinnee1100
     Draw ten-pixel, thin, dashed line (three on, two off).

-ddlliinnee110000
     Draw 100-pixel, thin, dashed line (three on, two off).

-ddddlliinnee110000
     Draw  100-pixel,  thin,  double-dashed  line  (three  foreground,  two
     background).

-wwlliinnee1100
     Draw ten-pixel line, line width one.

-wwlliinnee110000
     Draw 100-pixel line, line width ten.

-wwlliinnee550000
     Draw 500-pixel line, line width 50.

-wwddlliinnee110000
     Draw 100-pixel dashed line, line width ten (30 on, 20 off).

-wwddddlliinnee110000
     Draw 100-pixel double-dashed line, line width ten (30 fg, 20 bg).

-oorreecctt1100
     Draw 10x10, thin rectangle outline.

-oorreecctt110000
     Draw 100-pixel, thin, vertical-line segment.

-oorreecctt550000
     Draw 500-pixel, thin, vertical-line segment.

-wwoorreecctt1100
     Draw 10x10, wide rectangle outline.

-wwoorreecctt110000
     Draw 100-pixel, wide, vertical-line segment.

-wwoorreecctt550000
     Draw 500-pixel, wide vertical line segment.

-cciirrccllee11
     Draw one-pixel-diameter, thin (line width zero) circle.

-cciirrccllee1100
     Draw ten-pixel-diameter, thin circle.

-cciirrccllee110000
     Draw 100-pixel-diameter, thin circle.

-cciirrccllee550000
     Draw 500-pixel-diameter, thin circle.

-ddcciirrccllee110000
     Draw 100-pixel-diameter, thin, dashed circle (three on, two off).

-ddddcciirrccllee110000
     Draw 100-pixel-diameter, thin, double-dashed circle (three foreground,
     two background).

-wwcciirrccllee1100
     Draw ten-pixel-diameter circle, line width one.

-wwcciirrccllee110000
     Draw 100-pixel-diameter circle, line width ten.

-wwcciirrccllee550000
     Draw 500-pixel-diameter circle, line width 50.

-wwddcciirrccllee110000
     Draw 100-pixel-diameter dashed circle, line width ten (30 on, 20 off).

-wwddddcciirrccllee110000
     Draw  100-pixel-diameter,  double-dashed circle,  line  width ten  (30
     foreground, 20 background).

-ppcciirrccllee1100
     Draw  ten-pixel-diameter, thin,  partial circle,  orientation  and arc
     angle evenly distributed.

-ppcciirrccllee110000
     Draw 100-pixel-diameter, thin, partial circle.

-wwppcciirrccllee1100
     Draw ten-pixel-diameter, wide, partial circle.

-wwppcciirrccllee110000
     Draw 100-pixel-diameter, wide, partial circle.

-ffcciirrccllee11
     Draw one-pixel-diameter, filled circle.

-ffcciirrccllee1100
     Draw ten-pixel-diameter, filled circle.

-ffcciirrccllee110000
     Draw 100-pixel-diameter, filled circle.

-ffcciirrccllee550000
     Draw 500-pixel-diameter, filled circle.

-ffccppcciirrccllee1100
     Draw   ten-pixel-diameter,   partial   filled  circle,   chord   fill,
     orientation and arc angle evenly distributed.

-ffccppcciirrccllee110000
     Draw 100-pixel-diameter, partially filled circle, chord fill.

-ffssppcciirrccllee1100
     Draw  ten-pixel-diameter,  partially  filled circle,  pie-slice  fill,
     orientation and arc angle evenly distributed.

-ffssppcciirrccllee110000
     Draw 100-pixel-diameter, partially filled circle, pie slice fill.

-eelllliippssee1100
     Draw  ten-pixel-diameter, thin  (line width  zero) ellipse,  major and
     minor axis sizes evenly distributed.

-eelllliippssee110000
     Draw 100-pixel-diameter, thin ellipse.

-eelllliippssee550000
     Draw 500-pixel-diameter, thin ellipse.

-ddeelllliippssee110000
     Draw 100-pixel-diameter, thin, dashed ellipse (three on, two off).

-ddddeelllliippssee110000
     Draw   100-pixel-diameter,    thin,   double-dashed   ellipse   (three
     foreground, two background).

-wweelllliippssee1100
     Draw ten-pixel-diameter ellipse, line width one.

-wweelllliippssee110000
     Draw 100-pixel-diameter ellipse, line width ten.

-wweelllliippssee550000
     Draw 500-pixel-diameter ellipse, line width 50.

-wwddeelllliippssee110000
     Draw  100-pixel-diameter dashed  ellipse, line  width  ten (30  on, 20
     off).

-wwddddeelllliippssee110000
     Draw  100-pixel-diameter, double-dashed  ellipse, line  width  ten (30
     foreground, 20 background).

-ppeelllliippssee1100
     Draw ten-pixel-diameter, thin, partial ellipse.

-ppeelllliippssee110000
     Draw 100-pixel-diameter, thin, partial ellipse.

-wwppeelllliippssee1100
     Draw ten-pixel-diameter, wide, partial ellipse.

-wwppeelllliippssee110000
     Draw 100-pixel-diameter, wide, partial ellipse.

-ffeelllliippssee1100
     Draw ten-pixel-diameter filled ellipse.

-ffeelllliippssee110000
     Draw 100-pixel diameter filled ellipse.

-ffeelllliippssee550000
     Draw 500-pixel-diameter filled ellipse.

-ffccppeelllliippssee1100
     Draw ten-pixel-diameter, partially filled ellipse, chord fill.

-ffccppeelllliippssee110000
     Draw 100-pixel-diameter, partially filled ellipse, chord fill.

-ffssppeelllliippssee1100
     Draw ten-pixel-diameter, partially filled ellipse, pie-slice fill.

-ffssppeelllliippssee110000
     Draw 100-pixel-diameter, partially filled ellipse, pie-slice fill.

-ttrriiaannggllee11
     Fill one-pixel/side triangle.

-ttrriiaannggllee1100
     Fill ten-pixel/side triangle.

-ttrriiaannggllee110000
     Fill 100-pixel/side triangle.

-ttrraapp1100
     Fill 10x10 trapezoid.

-ttrraapp110000
     Fill 100x100 trapezoid.

-ssttrraapp1100
     Fill 10x10 transparent stippled trapezoid, 8x8 stipple pattern.

-ssttrraapp110000
     Fill 100x100 transparent stippled trapezoid, 8x8 stipple pattern.

-oossttrraapp1100
     Fill 10x10 opaque stippled trapezoid, 8x8 stipple pattern.

-oossttrraapp110000
     Fill 100x100 opaque stippled trapezoid, 8x8 stipple pattern.

-ttiilleettrraapp1100
     Fill 10x10 tiled trapezoid, 4x4 tile pattern.

-ttiilleettrraapp110000
     Fill 100x100 tiled trapezoid, 4x4 tile pattern.

-bbiiggssttrraapp1100
     Fill 10x10 transparent stippled trapezoid, 161x145 stipple pattern.

-bbiiggssttrraapp110000
     Fill 100x100 transparent stippled trapezoid, 161x145 stipple pattern.

-bbiiggoossttrraapp1100
     Fill 10x10 opaque stippled trapezoid, 161x145 stipple pattern.

-bbiiggoossttrraapp110000
     Fill 100x100 opaque stippled trapezoid, 161x145 stipple pattern.

-bbiiggttiilleettrraapp1100
     Fill 10x10 tiled trapezoid, 161x145 tile pattern.

-bbiiggttiilleettrraapp110000
     Fill 100x100 tiled trapezoid, 161x145 tile pattern.

-eesscchheerrttiilleettrraapp1100
     Fill 10x10 tiled trapezoid, 216x208 tile pattern.

-eesscchheerrttiilleettrraapp110000
     Fill 100x100 tiled trapezoid, 216x208 tile pattern.

-ccoommpplleexx1100
     Fill 10-pixel/side complex polygon.

-ccoommpplleexx110000
     Fill 100-pixel/side complex polygon.

-fftteexxtt
     Draw a character in 80-character line (6x13).

-ff88tteexxtt
     Draw a character in 70-character line (8x13).

-ff99tteexxtt
     Draw a character in 60-character line (9x15).

-ff1144tteexxtt1166
     Draw a two-byte character in 40-character line (k14).

-ttrr1100tteexxtt
     Draw a character in 80-character line (Times-Roman 10).

-ttrr2244tteexxtt
     Draw a character in 30-character line (Times-Roman 24).

-ppoollyytteexxtt
     Draw a character in a 20/40/20 line (6x13, Times-Roman 10, 6x13).

-ffiitteexxtt
     Draw a character in a 80-character image line (6x13).

-ff88iitteexxtt
     Draw a character in a 70-character image line (8x13).

-ff99iitteexxtt
     Draw a character in a 60-character image line (9x15).

-ff1144iitteexxtt1166
     Draw a two-byte character in a 40-character image line (k14).

-ttrr1100iitteexxtt
     Draw a character in a 80-character image line (Times-Roman 10).

-ttrr2244iitteexxtt
     Draw a character in a 30-character image line (Times-Roman 24).

-ssccrroollll1100
     Scroll 10x10 pixels vertically.

-ssccrroollll110000
     Scroll 100x100 pixels vertically.

-ssccrroollll550000
     Scroll 500x500 pixels vertically.

-ccooppyywwiinnwwiinn1100
     Copy a 10x10 square from window to window.

-ccooppyywwiinnwwiinn110000
     Copy a 100x100 square from window to window.

-ccooppyywwiinnwwiinn550000
     Copy a 500x500 square from window to window.

-ccooppyyppiixxwwiinn1100
     Copy a 10x10 square from pixmap to window.

-ccooppyyppiixxwwiinn110000
     Copy a 100x100 square from pixmap to window.

-ccooppyyppiixxwwiinn550000
     Copy a 500x500 square from pixmap to window.

-ccooppyywwiinnppiixx1100
     Copy a 10x10 square from window to pixmap.

-ccooppyywwiinnppiixx110000
     Copy a 100x100 square from window to pixmap.

-ccooppyywwiinnppiixx550000
     Copy a 500x500 square from window to pixmap.

-ccooppyyppiixxppiixx1100
     Copy a 10x10 square from pixmap to pixmap.

-ccooppyyppiixxppiixx110000
     Copy a 100x100 square from pixmap to pixmap.

-ccooppyyppiixxppiixx550000
     Copy a 500x500 square from pixmap to pixmap.

-ccooppyyppllaannee1100
     Copy a 10x10 1-bit deep plane.

-ccooppyyppllaannee110000
     Copy a 100x100 1-bit deep plane.

-ccooppyyppllaannee550000
     Copy a 500x500 1-bit deep plane.

-ppuuttiimmaaggee1100
     PutImage 10x10 square.

-ppuuttiimmaaggee110000
     PutImage 100x100 square.

-ppuuttiimmaaggee550000
     PutImage 500x500 square.

-sshhmmppuutt1100
     PutImage 10x10 square, MIT shared memory extension.

-sshhmmppuutt110000
     PutImage 100x100 square, MIT shared memory extension.

-sshhmmppuutt550000
     PutImage 500x500 square, MIT shared memory extension.

-ggeettiimmaaggee1100
     GetImage 10x10 square.

-ggeettiimmaaggee110000
     GetImage 100x100 square.

-ggeettiimmaaggee550000
     GetImage 500x500 square.

-nnoooopp
     X protocol NoOperation.

-aattoomm
     GetAtomName.

-pprroopp
     GetProperty.

-ggcc  Change graphics context.

-ccrreeaattee
     Create child window and map using MapSubwindows.

-uuccrreeaattee
     Create unmapped window.

-mmaapp Map child window via MapWindow on parent.

-uunnmmaapp
     Unmap child window via UnmapWindow on parent.

-ddeessttrrooyy
     Destroy child window via DestroyWindow parent.

-ppooppuupp
     Hide/expose window via Map/Unmap popup window.

-mmoovvee
     Move window.

-uummoovvee
     Moved unmapped window.

-mmoovveettrreeee
     Move window via MoveWindow on parent.

-rreessiizzee
     Resize window.

-uurreessiizzee
     Resize unmapped window.

-cciirrccuullaattee
     Circulate lowest window to top.

-uucciirrccuullaattee
     Circulate unmapped window to top.

_X _D_e_f_a_u_l_t_s
This program uses no X defaults.

_S_e_e _A_l_s_o
XX, xx1111ppeerrffccoommpp, xxbbeenncchh, XX uuttiilliittiieess

_N_o_t_e_s
Copyright  (c) 1988,  1989 by  Digital Equipment  Corporation.  For  a full
statement of  rights and  permissions, see  the copyright statement  in the
source code to this program.

xx1111ppeerrff is  mostly the responsibility of Joel McCormack.   It is based upon
the xx1111ppeerrff  developed by Phil Karlton, Susan  Angebranndt, and Chris Kent,
who wished to  assess performance differences between various servers.  For
a  general release  to the  world,   xx1111ppeerrff was  rewritten to  ease making
comparisons between  widely varying machines, to  cover most important (and
unimportant)  X functionality,  and to exercise  graphics operations  in as
many different orientations and alignments as possible.
