[PATCH 00/11] Misc window exposure/validation cleanups

Adam Jackson ajax at redhat.com
Thu Sep 18 10:23:49 PDT 2014


In attempting to get the Always mode of backing store working again, I
felt the urge to clean the place up a bit.  The most notable change here
is removing the (questionable) optimization from exposure event generation
to emit a bounding-box event when faced with more than 25 rects in the
exposed region.  Given that toolkits already coalesce consecutive expose
boxes, and that you'll never hit it in a composited environment anyway,
the complexity doesn't seem justified.

x11perfcomp results below; admittedly n=1 here because waiting half an
hour for a run to complete was pretty boring.  It's curious that some of
the unmapped tests are slower, since literally none of the changed code
is hit along those paths.  Presumably those tests are just much more
sensitive to address space layout and cache effects.  I feel comfortable
estimating it as a null result.

    1              2               Operation
----------   -------------------   -----------------
  565563.3     574273.2 (  1.02)   Hide/expose window via popup (4 kids) 
 1037691.5    1053797.0 (  1.02)   Hide/expose window via popup (16 kids) 
 1133213.2    1147784.7 (  1.01)   Hide/expose window via popup (25 kids) 
 1148614.6    1161289.4 (  1.01)   Hide/expose window via popup (50 kids) 
 1105434.4    1116889.5 (  1.01)   Hide/expose window via popup (75 kids) 
 1061060.3    1064495.2 (  1.00)   Hide/expose window via popup (100 kids) 
  900025.3     905022.2 (  1.01)   Hide/expose window via popup (200 kids) 
  414620.3     420562.4 (  1.01)   Move window (4 kids) 
  306714.0     316005.0 (  1.03)   Move window (16 kids) 
  262854.3     271929.3 (  1.03)   Move window (25 kids) 
  200069.2     202072.4 (  1.01)   Move window (50 kids) 
  165483.1     166971.4 (  1.01)   Move window (75 kids) 
  143104.1     142990.3 (  1.00)   Move window (100 kids) 
   89162.4      88149.5 (  0.99)   Move window (200 kids) 
 5478809.7    5196263.9 (  0.95)   Moved unmapped window (4 kids) 
 5277308.1    5209940.5 (  0.99)   Moved unmapped window (16 kids) 
 5262610.7    5223677.5 (  0.99)   Moved unmapped window (25 kids) 
 5260202.1    5224090.2 (  0.99)   Moved unmapped window (50 kids) 
 5243965.8    5162111.2 (  0.98)   Moved unmapped window (75 kids) 
 5225942.1    5162169.0 (  0.99)   Moved unmapped window (100 kids) 
 5209352.2    5137380.6 (  0.99)   Moved unmapped window (200 kids) 
 1506849.3    1496157.8 (  0.99)   Move window via parent (4 kids) 
 3623342.4    3644216.3 (  1.01)   Move window via parent (16 kids) 
 4310670.9    4319778.6 (  1.00)   Move window via parent (25 kids) 
 5160041.3    5177500.5 (  1.00)   Move window via parent (50 kids) 
 5484570.9    5507343.0 (  1.00)   Move window via parent (75 kids) 
 5650077.2    5651413.9 (  1.00)   Move window via parent (100 kids) 
 5801632.7    5843455.9 (  1.01)   Move window via parent (200 kids) 
  411366.3     419379.7 (  1.02)   Resize window (4 kids) 
  331963.3     336729.2 (  1.01)   Resize window (16 kids) 
  296627.6     301137.8 (  1.02)   Resize window (25 kids) 
  229294.1     231393.3 (  1.01)   Resize window (50 kids) 
  197839.9     200640.0 (  1.01)   Resize window (75 kids) 
  172525.5     173867.0 (  1.01)   Resize window (100 kids) 
  115085.5     115788.0 (  1.01)   Resize window (200 kids) 
 4902030.0    4641241.1 (  0.95)   Resize unmapped window (4 kids) 
 4880480.0    4636762.2 (  0.95)   Resize unmapped window (16 kids) 
 4887409.2    4526975.5 (  0.93)   Resize unmapped window (25 kids) 
 4883508.7    4543796.4 (  0.93)   Resize unmapped window (50 kids) 
 4850783.0    4504614.4 (  0.93)   Resize unmapped window (75 kids) 
 4852278.4    4581507.9 (  0.94)   Resize unmapped window (100 kids) 
 4809895.3    4559465.5 (  0.95)   Resize unmapped window (200 kids) 
  252027.5     256260.2 (  1.02)   Circulate window (4 kids) 
  171326.0     173895.9 (  1.02)   Circulate window (16 kids) 
  167942.2     169278.7 (  1.01)   Circulate window (25 kids) 
  161646.8     161589.1 (  1.00)   Circulate window (50 kids) 
  153798.9     154246.5 (  1.00)   Circulate window (75 kids) 
  145598.3     146201.8 (  1.00)   Circulate window (100 kids) 
  111861.7     112879.0 (  1.01)   Circulate window (200 kids) 
13415340.6   13000473.4 (  0.97)   Circulate Unmapped window (4 kids) 
11802874.4   11384307.9 (  0.96)   Circulate Unmapped window (16 kids) 
10814487.0   10534257.8 (  0.97)   Circulate Unmapped window (25 kids) 
 7388151.0    7471539.4 (  1.01)   Circulate Unmapped window (50 kids) 
 6271070.9    6014158.2 (  0.96)   Circulate Unmapped window (75 kids) 
 5014092.5    5030549.8 (  1.00)   Circulate Unmapped window (100 kids) 
 2162508.8    1843498.8 (  0.85)   Circulate Unmapped window (200 kids) 

 Xext/panoramiXprocs.c            |   10 --
 composite/compext.c              |    3 
 dix/dispatch.c                   |   52 +++++++++++-
 dix/window.c                     |    2 
 fb/fbcopy.c                      |    2 
 fb/fboverlay.c                   |    5 -
 fb/fboverlay.h                   |    4 
 glamor/glamor_copy.c             |    3 
 hw/dmx/dmxgcops.c                |    8 -
 hw/dmx/dmxwindow.c               |    4 
 hw/dmx/dmxwindow.h               |    3 
 hw/kdrive/ephyr/ephyr.c          |    2 
 hw/kdrive/src/kdrive.c           |    4 
 hw/kdrive/src/kxv.c              |    6 -
 hw/xfree86/common/xf86xv.c       |    6 -
 hw/xfree86/dri/dri.c             |    4 
 hw/xfree86/dri/dri.h             |    3 
 hw/xnest/Window.c                |    4 
 hw/xnest/XNWindow.h              |    3 
 hw/xquartz/xpr/dri.c             |   21 -----
 hw/xquartz/xpr/dri.h             |    4 
 include/dix.h                    |    6 +
 include/scrnintstr.h             |   10 --
 mi/mi.h                          |   25 ------
 mi/mibitblt.c                    |    5 -
 mi/micopy.c                      |    3 
 mi/miexpose.c                    |  159 +--------------------------------------
 mi/mioverlay.c                   |   83 --------------------
 mi/miscrinit.c                   |    1 
 mi/mivaltree.c                   |   65 ++++++---------
 mi/miwindow.c                    |    4 
 miext/rootless/rootlessValTree.c |   65 ---------------
 32 files changed, 134 insertions(+), 445 deletions(-)

- ajax



More information about the xorg-devel mailing list