xserver-multidpi/mi
Keith Packard 3ac481c9da mi: Draw multiple lines in one FillSpans call in miZeroLine
miZeroLine allocates enough space to draw a line spanning the entire
width/height of the target drawable. When drawing multiple shorter
lines, this leaves most of the space in that buffer unfilled. Let
multiple lines be drawn into the buffer if there is plenty of space.

Speeds up glamor fallback zero-width lines:

Before
    6000000 trep @   0.0020 msec (508000.0/sec): 1-pixel line
    6000000 trep @   0.0020 msec (492000.0/sec): 10-pixel line
    6000000 trep @   0.0023 msec (427000.0/sec): 100-pixel line
    4000000 trep @   0.0035 msec (282000.0/sec): 500-pixel line

After:
  600000000 trep @   0.0000 msec (43400000.0/sec): 1-pixel line
  140000000 trep @   0.0001 msec (13000000.0/sec): 10-pixel line
   16000000 trep @   0.0008 msec (1300000.0/sec): 100-pixel line
    4000000 trep @   0.0038 msec (261000.0/sec): 500-pixel line

(500 pixel lines do not change in performance because the buffer can
only one one of them.)

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
2014-06-15 22:02:40 +01:00
..
Makefile.am dix: Delete mibstore.h 2012-09-23 10:31:55 -07:00
mi.h mi: Make miPolyArc draw fast zero-width when possible 2014-06-12 22:52:49 -07:00
miarc.c mi: Make miPolyArc draw fast zero-width when possible 2014-06-12 22:52:49 -07:00
mibitblt.c mi: miPutImage with XYPixmap failed at depth 32 on 64-bit machines 2014-03-26 12:58:40 -07:00
micmap.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
micmap.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
micoord.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
micopy.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
micursor.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
midash.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
midispcur.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
mieq.c mi: Build fix: mieqProcessDeviceEvent returns void 2014-06-06 01:04:03 -07:00
miexpose.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
mifillarc.c mi: Fill spans for multiple arcs in miPolyFillArc 2014-06-12 22:52:51 -07:00
mifillarc.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mifillrct.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mifpoly.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mifpolycon.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
migc.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
migc.h Clean up a few function prototypes to not place formals in /**/ 2014-01-12 10:24:12 -08:00
miglblt.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
miinitext.c mi: Hush extension initialization (#75870) 2014-03-29 00:01:11 -07:00
miline.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mioverlay.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
mioverlay.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipointer.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
mipointer.h mipointer: Remove deprecated miPointerCurrentScreen 2013-09-10 13:29:21 -04:00
mipointrst.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipoly.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipoly.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipolycon.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipolygen.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipolypnt.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipolyrect.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
mipolyseg.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipolytext.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipolyutil.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mipushpxl.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
miscanfill.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
miscrinit.c Make XYToWindow a screen function 2014-04-01 10:30:42 -07:00
mispans.c mi: fix shadow warnings 2012-11-05 13:25:02 -06:00
mispans.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
misprite.c Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
misprite.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mistruct.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mivalidate.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mivaltree.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
miwideline.c mi: Create miPolylines as a general-purpose line drawing function 2014-06-12 22:52:47 -07:00
miwideline.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
miwindow.c mi: start calculating the sprite trace from the first child of root 2014-05-08 12:59:19 -07:00
mizerarc.c mi: Make miPolyArc draw fast zero-width when possible 2014-06-12 22:52:49 -07:00
mizerarc.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mizerclip.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
mizerline.c mi: Draw multiple lines in one FillSpans call in miZeroLine 2014-06-15 22:02:40 +01:00