[mythtv] MMX blend
andrewmahone at eml.cc
Sun Feb 22 05:43:49 EST 2004
Attached is an MMX blend patch. I've split the blend function used several
places in the OSD into a separate file, providing paired MMX and C
implementations with a common prototype, so that a pointer to the appropriate
one can be stored in OSDSurface. Currently available are blendregion and
blendcolor. The first blends an alpha-masked rectangle onto a surface, the
second blends an alpha-masked constant color onto a surface.
The MMX blends work better than I expected. A simple test program shows the
MMX version is a little slower for regions with <7 columns (because the
entire blend is done by C code), or for very small regions. At around 32
pixels in the blended region, they're about the same speed, and past that,
the MMX blend quickly gains speed vs the C blend, until it peaks at about 2x
the speed of the C version. Most text blends appear to be large enough for
the maximum gain. I can provide the test program if anybody feels like
timing this on their own system.
The C blend has been tweaked a bit from the original. The most notable change
is removal of conditional blending - the tests that were being done to skip
parts of the blend are not necessary, as the special-case results they
produce are identical to the ones obtained by performing the blend. On my
system, it timed faster without the conditional special cases, probably due
to branch prediction costs. The inner loop is split into two versions, one
for even lines, and one for odd. I got a slight gain by doing this, and
moving the even line check out of the inner loop.
OSDSurface is patched to provide the second LUT needed by the MMX functions.
TTFont is patched to use blendcolor. I'm still working on the stuff in
OSDTypes, and from what Isaac said earlier, one or two more variations on the
existing blend functions may be needed.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 4613 bytes
Desc: not available
Url : http://mythtv.org/pipermail/mythtv-dev/attachments/20040222/b50180ab/mmxblend.patch.bin
More information about the mythtv-dev