[Pixman] [PATCH 0/5] Fix various alpha map related bugs
sandmann at daimi.au.dk
Tue Sep 14 06:18:17 PDT 2010
From: Søren Sandmann Pedersen <sandmann at daimi.au.dk>
The following patch series contains some fixes for various alpha-map
The bugs are:
- We don't currently clip the composite region against the extents of
the alpha map of the destination. This means that if the alpha map
doesn't cover the entire destination, we will make invalid writes to it.
- If the alpha map is one of the 10bpc formats, then it doesn't have a
32 bit fetcher installed, which causes crashes. The fix for this is
to make sure wide alpha maps result in wide processing.
There is also a stylistic change where the NO_WIDE_FORMAT flag is
renamed to FAST_PATH_NARROW_FORMAT to avoid the negative in the name.
Finally, there are some updates to the test suite:
- The alpha map test is much more aggressive. It now demonstrates the
two bugs above and also tests that destination alpha maps are
correctly read and written.
- The alpha map test now also has code to set a transformation on the
destination, but this is commented out because it causes crashes
even with the other changes. This problem is somewhat difficult to
fix because we currently don't have any fetchers that will do
alphamap processing, but ignore transformations.
- There is a new fence_malloc()/fence_free() pair of utility
functions. These attempt to allocate the memory surrounded by
mprotect()ed pages so that invalid reads or writes will cause
Søren Sandmann Pedersen (5):
Add fence_malloc() and fence_free().
Update and extend the alphamap test
Rename FAST_PATH_NO_WIDE_FORMAT to FAST_PATH_NARROW_FORMAT
Remove FAST_PATH_NARROW_FORMAT flag if there is a wide alpha map
Clip composite region against the destination alpha map extents.
configure.ac | 10 ++
pixman/pixman-fast-path.c | 2 +-
pixman/pixman-general.c | 54 +++++------
pixman/pixman-image.c | 19 +++-
pixman/pixman-private.h | 6 +-
pixman/pixman.c | 21 +++-
test/Makefile.am | 2 +-
test/alphamap.c | 243 ++++++++++++++++++++++++++++++++++++++++-----
test/utils.c | 105 +++++++++++++++++++-
test/utils.h | 11 ++-
10 files changed, 401 insertions(+), 72 deletions(-)
More information about the Pixman