[PATCH 0/5] Explicitly write out some ROPs.

Huw Davies huw at codeweavers.com
Thu Aug 25 03:43:06 CDT 2016

The idea of this series is to explicitly write out versions of
copy_rect_1(), copy_rect_32() and mask_rect_32() for each of the
different ROP2s.  It does this using macros.

Yes, we all agree macros are ugly and evil, however I don't think
these are too bad.  It's still obvious what the code is doing while
providing a considerable speed increase.  In a real world app I'm
looking at (which uses a variety of rops) the screen redraw time has
dropped from 1.47s to 0.95s, which puts it almost on par with Windows.

I don't anticipate needing to extend the use of these macros to other
places - the other copy_rect_x() and mask_rect_x() functions are less
likely to be used by any reasonable app.

Huw Davies (5):
  gdi32: Move the outer loop into separate functions for each direction.
  gdi32: Explicitly write out the rops for copy_rect_32().
  gdi32: Explicitly write out the rops for mask_rect_32().
  gdi32: Split out the various offset cases for copy_rect_1() into
    separate functions.
  gdi32: Explicitly write out the rops for copy_rect_1().

 dlls/gdi32/dibdrv/primitives.c | 929 +++++++++++++++++++++++------------------
 1 file changed, 528 insertions(+), 401 deletions(-)


More information about the wine-patches mailing list