[Pixman] [PATCH 0/5] Fix various alpha map related bugs

Søren Sandmann 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
related bugs.

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
  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 mailing list