Søren Sandmann Pedersen [Wed, 17 Mar 2010 14:35:34 +0000 (10:35 -0400)]
Add a FAST_PATH_X_UNIT_POSITIVE flag
This is the common case for a lot of transformed images. If the unit
were negative, the transformation would be a reflection which is
fairly rare.
Alexander Larsson [Wed, 17 Mar 2010 10:58:05 +0000 (11:58 +0100)]
Use the right format for the OVER_8888_565 fast path
Alexander Larsson [Fri, 12 Mar 2010 14:45:04 +0000 (15:45 +0100)]
Add specialized fast nearest scalers
This is a macroized version of SRC/OVER repeat normal/unneeded nearest
neighbour scaling instantiated for some common 8888 and 565 formats.
Based on work by Siarhei Siamashka
Alexander Larsson [Fri, 12 Mar 2010 14:41:01 +0000 (15:41 +0100)]
Add FAST_PATH_SAMPLES_COVER_CLIP and FAST_PATH_16BIT_SAFE
FAST_PATH_SAMPLES_COVER_CLIP:
This is set of the source sample grid, unrepeated but transformed
completely completely covers the clip destination. If this is set
you can use a simple scaled that doesn't have to care about the repeat
mode.
FAST_PATH_16BIT_SAFE:
This signifies two things:
1) The size of the src/mask fits in a 16.16 fixed point, so something like:
max_vx = src_image->bits.width << 16;
Is allowed and is guaranteed to not overflow max_vx
2) When stepping the source space we're guaranteed to never overflow
a 16.16 bit fix point variable, even if we step one extra step
in the destination space. This means that a loop doing:
x = vx >> 16;
vx += unit_x; d = src_row[x];
will never overflow vx causing x to be negative.
And additionally, if you track vx like above and apply NORMAL repeat
after the vx addition with something like:
while (vx >= max_vx) vx -= max_vx;
This will never overflow the vx even on the final increment that
takes vx one past the end of where we will read, which makes the
repeat loop safe.
Alexander Larsson [Fri, 12 Mar 2010 14:40:07 +0000 (15:40 +0100)]
Add FAST_PATH_NO_NONE_REPEAT flag
Alexander Larsson [Tue, 16 Mar 2010 13:18:29 +0000 (14:18 +0100)]
Add CONVERT_8888_TO_8888 and CONVERT_0565_TO_0565 macros
These are useful for macroization
Alexander Larsson [Fri, 12 Mar 2010 15:23:42 +0000 (16:23 +0100)]
Add CONVERT_0565_TO_8888 macro
This lets us simplify some fast paths since we get a consistent
naming that always has 8888 and gets some value for alpha.
Søren Sandmann Pedersen [Mon, 15 Mar 2010 15:51:09 +0000 (11:51 -0400)]
Ensure that only the low 4 bit of 4 bit pixels are stored.
In some cases we end up trying to use the STORE_4 macro with an 8 bit
values, which resulted in other pixels getting overwritten. Fix this
by always masking off the low 4 bits.
This fixes blitters-test on big-endian machines.
Søren Sandmann Pedersen [Tue, 16 Mar 2010 12:17:10 +0000 (08:17 -0400)]
Fix contact address in configure.ac
Søren Sandmann Pedersen [Tue, 16 Mar 2010 16:23:50 +0000 (12:23 -0400)]
Add PIXMAN_DEFINE_THREAD_LOCAL() and PIXMAN_GET_THREAD_LOCAL() macros
These macros hide the various types of thread local support. On Linux
and Unix, they expand to just __thread. On Microsoft Visual C++, they
expand to __declspec(thread).
On OS X and other systems that don't have __thread, they expand to a
complicated concoction that uses pthread_once() and
pthread_get/set_specific() to get thread local variables.
Søren Sandmann Pedersen [Tue, 16 Mar 2010 15:01:08 +0000 (11:01 -0400)]
Add checks for various types of thread local storage.
OS X does not support __thread, so we have to check for it before
using it. It does however support pthread_get/setspecific(), so if we
don't have __thread, check if those are available.
Alan Coopersmith [Mon, 15 Mar 2010 22:20:05 +0000 (15:20 -0700)]
Add Sun cc to thread-local support checks in pixman-compiler.h
Clears '#warning: "unknown compiler"' messages when building
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
Alan Coopersmith [Mon, 15 Mar 2010 17:52:17 +0000 (10:52 -0700)]
Make .s target asm flag selection more portable
The previous code worked in GNU make, but caused a syntax error in Solaris
make ( https://bugs.freedesktop.org/show_bug.cgi?id=27062 ) - this seems to
work in both, and should hopefully not cause syntax errors in any versions
of make not supporting the macro-substitution-in-macro-name feature, just
cause the macro to expand to nothing.
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
Søren Sandmann Pedersen [Mon, 15 Mar 2010 11:40:46 +0000 (07:40 -0400)]
Fix typo: WORDS_BIG_ENDIAN => WORDS_BIGENDIAN in pixman-edge.c
Pointed out by Andreas Falkenhahn on the cairo mailing list.
Søren Sandmann Pedersen [Wed, 3 Mar 2010 18:24:13 +0000 (13:24 -0500)]
test: Add support for indexed formats to blitters-test
These formats work fine, they just need to have a palette set.
Søren Sandmann Pedersen [Mon, 1 Mar 2010 15:32:39 +0000 (10:32 -0500)]
pixman.h: Only define stdint types when PIXMAN_DONT_DEFINE_STDINT is undefined
In SPICE, with Microsoft Visual C++, pixman.h is included after
another file that defines these types, which causes warnings and
errors.
This patch allows such code to just define PIXMAN_DONT_DEFINE_STDINT
to use its own version of those types.
Søren Sandmann Pedersen [Sun, 14 Mar 2010 16:12:05 +0000 (12:12 -0400)]
Merge branch 'operator-table'
Søren Sandmann Pedersen [Sun, 14 Mar 2010 16:12:00 +0000 (12:12 -0400)]
Merge branch 'fast-path-cache'
Søren Sandmann Pedersen [Sat, 30 Jan 2010 16:37:25 +0000 (11:37 -0500)]
Change operator table to be an array of arrays of four bytes.
This makes gcc generate slightly better code for optimize_operator.
Søren Sandmann Pedersen [Sat, 19 Sep 2009 06:40:56 +0000 (02:40 -0400)]
Strength reduce certain conjoint/disjoint to their normal counterparts.
This allows us to not test for them later on.
Søren Sandmann Pedersen [Sat, 19 Sep 2009 06:32:28 +0000 (02:32 -0400)]
Store the operator table more compactly.
The four cases for each operator:
none-are-opaque, src-is-opaque, dest-is-opaque, both-are-opaque
are packed into one uint32_t per operator. The relevant strength
reduced operator can then be found by packing the source-is-opaque and
dest-is-opaque into two bits and shifting that number of bytes.
Chris Wilson pointed out a bug in the original version of this commit:
dest_is_opaque and source_is_opaque were used as booleans, but their
actual values were the results of a logical AND with the
FAST_PATH_OPAQUE flag, so the shift value was wildly wrong.
The only reason it actually passed the test suite (on x86) was that
the compiler computed the shift amount in the cl register, and the low
byte of FAST_PATH_OPAQUE happens to be 0, so no shifting actually took
place, and the original operator was returned.
Søren Sandmann Pedersen [Fri, 18 Sep 2009 18:10:31 +0000 (14:10 -0400)]
Make the operator strength reduction constant time.
By extending the operator information table to cover all operators we
can replace the loop with a table look-up. At the same time, base the
operator optimization on the computed flags rather than the ones in
the image struct.
Finally, as an extra optimization, we no longer ignore the case where
there is a mask. Instead we consider the source opaque if both source
and mask are opaque, or if the source is opaque and the mask is
missing.
Loïc Minier [Tue, 9 Mar 2010 19:57:34 +0000 (20:57 +0100)]
ARM: SIMD: Try without any CFLAGS before forcing -mcpu=
http://bugs.launchpad.net/bugs/535183
Egor Starkov [Fri, 12 Mar 2010 14:47:59 +0000 (09:47 -0500)]
Eliminate trailing comma in enum
https://bugs.freedesktop.org/show_bug.cgi?id=27050
Pixman is not compiling with c++ compiler. During compilation it gives
the following error:
/usr/include/pixman-1/pixman.h:335: error: comma at end of enumerator list
Signed-off-by: Søren Sandmann Pedersen <ssp@redhat.com>
Søren Sandmann Pedersen [Thu, 17 Sep 2009 07:16:27 +0000 (03:16 -0400)]
Add a fast path cache
This patch adds a cache in front of the fast path tables to reduce the
overhead of pixman_composite(). It is fixed size with move-to-front to
make sure the most popular fast paths are at the beginning of the cache.
The cache is thread local to avoid locking.
Søren Sandmann Pedersen [Sat, 6 Mar 2010 01:40:41 +0000 (20:40 -0500)]
Post-release version bump to 0.17.11
Søren Sandmann Pedersen [Sat, 6 Mar 2010 01:06:08 +0000 (20:06 -0500)]
Pre-release version bump to 0.17.10
Søren Sandmann Pedersen [Fri, 26 Feb 2010 19:15:22 +0000 (14:15 -0500)]
Move __force_align_arg_pointer workaround before composite32()
Since otherwise the workaround won't take effect when you call
pixman_image_composite32() directly.
Søren Sandmann Pedersen [Thu, 4 Mar 2010 07:30:22 +0000 (02:30 -0500)]
Merge branch 'more-flags'
Søren Sandmann Pedersen [Sat, 27 Feb 2010 05:37:19 +0000 (00:37 -0500)]
test: Remove obsolete comment
Siarhei Siamashka [Wed, 24 Feb 2010 02:14:45 +0000 (04:14 +0200)]
ARM: added 'neon_composite_over_reverse_n_8888' fast path
This fast path function improves performance of 'poppler' cairo-perf trace.
Benchmark from ARM Cortex-A8 @720MHz
before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image poppler 38.986 39.158 0.23% 6/6
after:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image poppler 24.981 25.136 0.28% 6/6
Siarhei Siamashka [Wed, 24 Feb 2010 00:26:57 +0000 (02:26 +0200)]
ARM: added 'neon_composite_src_x888_8888' fast path
This fast path function improves performance of 'gnome-system-monitor'
cairo-perf trace.
Benchmark from ARM Cortex-A8 @720MHz
before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image gnome-system-monitor 68.838 68.899 0.05% 5/6
after:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image gnome-system-monitor 53.336 53.384 0.09% 6/6
Siarhei Siamashka [Tue, 23 Feb 2010 23:44:00 +0000 (01:44 +0200)]
ARM: added 'neon_composite_over_n_8888_8888_ca' fast path
This fast path function improves performance of 'firefox-talos-gfx'
cairo-perf trace.
Benchmark from ARM Cortex-A8 @720MHz
before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image firefox-talos-gfx 139.969 141.176 0.35% 6/6
after:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image firefox-talos-gfx 111.810 112.196 0.23% 6/6
Søren Sandmann Pedersen [Mon, 15 Feb 2010 00:18:35 +0000 (19:18 -0500)]
Restructure the flags computation in compute_image_info().
Restructure the code to use switches instead of ifs. This saves a few
comparisons and make the code slightly easier to follow. Also add some
comments.
Søren Sandmann Pedersen [Mon, 15 Feb 2010 00:14:44 +0000 (19:14 -0500)]
Move workaround code to pixman-image.c
It is more natural to put it where all the other flags are computed.
Søren Sandmann Pedersen [Mon, 22 Feb 2010 11:06:22 +0000 (06:06 -0500)]
Turn need_workaround into another flag.
Instead of storing it as a boolean in the image struct, just use
another flag for it.
Søren Sandmann Pedersen [Fri, 18 Sep 2009 15:54:21 +0000 (11:54 -0400)]
Eliminate _pixman_image_is_opaque() in favor of a new FAST_PATH_IS_OPAQUE flag
The new FAST_PATH_IS_OPAQUE flag is computed along with the others in
_pixman_image_validate().
Søren Sandmann Pedersen [Fri, 18 Sep 2009 08:17:57 +0000 (04:17 -0400)]
Eliminate _pixman_image_is_solid()
Instead of calling this function in compute_image_info(), just do the
relevant checks when the extended format is computed.
Move computation of solidness to validate
Søren Sandmann Pedersen [Fri, 18 Sep 2009 08:06:30 +0000 (04:06 -0400)]
Move computation of extended format code to validate.
Instead of computing the extended format on every composite, just
compute it once and store it in the image.
Søren Sandmann Pedersen [Mon, 22 Feb 2010 10:16:27 +0000 (05:16 -0500)]
Add new FAST_PATH_SIMPLE_REPEAT flag
This flags indicates that the image is untransformed an
repeating. Such images can be composited quickly by simply repeating
the composite operation.
Søren Sandmann Pedersen [Fri, 18 Sep 2009 07:54:36 +0000 (03:54 -0400)]
Compute the image flags at validation time instead of composite time
Instead of computing all the image flags at composite time, we compute
them once in _pixman_image_validate() and cache them in the image.
Søren Sandmann Pedersen [Thu, 25 Feb 2010 03:09:41 +0000 (22:09 -0500)]
RELEASING: Update the release instructions.
Søren Sandmann Pedersen [Thu, 25 Feb 2010 03:02:13 +0000 (22:02 -0500)]
Post-release version bump
Søren Sandmann Pedersen [Thu, 25 Feb 2010 02:52:30 +0000 (21:52 -0500)]
Pre-release version bump
Søren Sandmann Pedersen [Thu, 25 Feb 2010 02:01:29 +0000 (21:01 -0500)]
Merge branch 'trap-fixes'
Søren Sandmann Pedersen [Thu, 25 Feb 2010 01:51:25 +0000 (20:51 -0500)]
Add a1-trap-test
When a trapezoid sample point is exactly on a polygon edge, the rule
is that it is considered inside the trapezoid if the edge is a top or
left edge, but outside for bottom and right edges.
This program tests that for a1 trapezoids.
Søren Sandmann Pedersen [Sun, 21 Feb 2010 07:01:16 +0000 (02:01 -0500)]
Hide the C++ extern "C" declarations behind macros.
That way they don't confuse the indenting algorithm in editors such as
Emacs.
Søren Sandmann Pedersen [Sat, 20 Feb 2010 18:09:01 +0000 (13:09 -0500)]
Merge branch 'eliminate-composite'
Conflicts:
pixman/pixman-sse2.c
Søren Sandmann Pedersen [Sun, 14 Feb 2010 01:08:13 +0000 (20:08 -0500)]
Move all code to do debugging spew into pixman-private.
Rather than the region code having its own little debug system, move
all of it into pixman-private where there is already return_if_fail()
macros etc. These macros are now enabled in development snapshots and
nowhere else. Previously they were never enabled unless you modified
the code.
At the same time, remove all the asserts from the region code since we
can never turn them on anyway, and replace them with
critical_if_fail() macros that will print spew to standard error when
DEBUG is defined.
Finally, also change the debugging spew in pixman-bits-image.c to use
return_val_if_fail() instead of its own fprintf().
Alexander Larsson [Fri, 19 Feb 2010 10:22:52 +0000 (11:22 +0100)]
Test pixman_region32_init_from_image in region-test
Alexander Larsson [Mon, 15 Feb 2010 08:40:50 +0000 (09:40 +0100)]
Add pixman_region{32}_init_from_image
This creates a region from an image in PIXMAN_a1 format.
Alexander Larsson [Mon, 15 Feb 2010 08:39:59 +0000 (09:39 +0100)]
Move SCREEN_SHIFT_LEFT/RIGHT to pixman-private.h
This is needed for later use in other code.
Makoto Kato [Thu, 18 Feb 2010 05:30:01 +0000 (14:30 +0900)]
Compile by USE_SSE2 only without USE_MMX
Although we added MMX emulation for Microsoft Visual C++ compiler for x64,
USE_SSE2 still requires USE_MMX. So we remove dependency of USE_MMX
for Windows x64.
Signed-off-by: Makoto Kato <m_kato@ga2.so-net.ne.jp>
Søren Sandmann Pedersen [Wed, 16 Sep 2009 11:29:08 +0000 (07:29 -0400)]
Move NULL check out of get_image_info()
The NULL check is only necessary for masks, so there is no reason to
do it for destinations and sources.
Søren Sandmann Pedersen [Wed, 16 Sep 2009 10:54:43 +0000 (06:54 -0400)]
Add a fast path for non-repeating sources in walk_region_internal().
In the common case where there is no repeating, the loop in
walk_region_internal() reduces to just walking of the boxes involved
and calling the composite function.
Søren Sandmann Pedersen [Tue, 15 Sep 2009 05:34:33 +0000 (01:34 -0400)]
Move more things out of the inner loop in do_composite().
Specifically,
- the src_ and mask_repeat computations
- the check for whether the involved images cover the composite
region.
Søren Sandmann Pedersen [Tue, 15 Sep 2009 05:16:40 +0000 (01:16 -0400)]
Move region computation out of the loop in do_composite()
We only need to compute the composite region once, not on every
iteration.
Søren Sandmann Pedersen [Tue, 15 Sep 2009 05:14:41 +0000 (01:14 -0400)]
Move get_image_info() out of the loop in do_composite
The computation of image formats and flags is invariant to the loop,
so it can all be moved out.
Søren Sandmann Pedersen [Tue, 15 Sep 2009 05:13:36 +0000 (01:13 -0400)]
Manually inline _pixman_run_fast_path()
Move all of the code into do_composite().
Søren Sandmann Pedersen [Tue, 15 Sep 2009 05:11:04 +0000 (01:11 -0400)]
Move compositing functionality from pixman-utils.c into pixman.c
_pixman_run_fast_path() and pixman_compute_composite_region() are both
moved to pixman-image, since at this point that's the only place they
are being called from.
Søren Sandmann Pedersen [Sat, 7 Nov 2009 20:13:03 +0000 (15:13 -0500)]
Move compositing to its own function, do_composite()
Søren Sandmann Pedersen [Tue, 15 Sep 2009 04:58:51 +0000 (00:58 -0400)]
Optimize for the common case wrt. the workaround.
In the common case no images need the workaround, so we check for that
first, and only if an image does need a workaround do we check which
one of the images actually need it.
Søren Sandmann Pedersen [Tue, 15 Sep 2009 04:48:12 +0000 (00:48 -0400)]
Eliminate all the composite methods.
They are no longer necessary because we will just walk the fast path
tables, and the general composite path is treated as another fast
path.
This unfortunately means that sse2_composite() can no longer be
responsible for realigning the stack to 16 bytes, so we have to move
that to pixman_image_composite().
Søren Sandmann Pedersen [Tue, 15 Sep 2009 04:23:11 +0000 (00:23 -0400)]
Delete unused _pixman_walk_composite_region() function
Søren Sandmann Pedersen [Sat, 7 Nov 2009 20:28:57 +0000 (15:28 -0500)]
Don't call _pixman_implementation_composite() anymore.
Instead just call _pixman_run_fast_path(). Since we view
general_composite() as a fast path now, we know that it will find
*some* compositing routine.
Søren Sandmann Pedersen [Tue, 15 Sep 2009 03:58:40 +0000 (23:58 -0400)]
Delete unused sources_cover() function
Søren Sandmann Pedersen [Tue, 15 Sep 2009 03:47:39 +0000 (23:47 -0400)]
Store a pointer to the array of fast paths in the implementation struct.
Also add an empty fast path table to the vmx implementation, so that
we can assume sure the pointer is never NULL.
Søren Sandmann Pedersen [Tue, 15 Sep 2009 04:20:22 +0000 (00:20 -0400)]
Make fast_composite_scaled_nearest() another fast path.
This requires another couple of flags
FAST_PATH_SCALE_TRANSFORM
FAST_PATH_NEAREST_FILTER
Søren Sandmann Pedersen [Sun, 13 Sep 2009 09:29:48 +0000 (05:29 -0400)]
Make general_composite_rect() just another fast path.
We introduce a new PIXMAN_OP_any fake operator and a PIXMAN_any fake
format that match anything. Then general_composite_rect() can be used
as another fast path.
Because general_composite_rect() does not require the sources to cover
the clip region, we add a new flag FAST_PATH_COVERS_CLIP which is part
of the set of standard flags for fast paths.
Because this flag cannot be computed until after the clip region is
available, we have to call pixman_compute_composite_region32() before
checking for fast paths. This will resolve itself when we get to the
point where _pixman_run_fast_path() is only called once per composite
operation.
Søren Sandmann Pedersen [Sat, 13 Feb 2010 23:23:34 +0000 (18:23 -0500)]
Post-release version bump
Søren Sandmann Pedersen [Sat, 13 Feb 2010 23:12:32 +0000 (18:12 -0500)]
Pre-release version bump
Søren Sandmann Pedersen [Sun, 31 May 2009 19:06:33 +0000 (15:06 -0400)]
Once unrolled version of fast_path_composite_nearest_scaled()
Separate out the fetching and combining code in two inline
functions. Then do two pixels per iteration.
Søren Sandmann Pedersen [Sat, 30 May 2009 06:50:38 +0000 (02:50 -0400)]
Generalize and optimize fast_composite_src_scaled_nearest()
- Make it work for PIXMAN_OP_OVER
- Split repeat computation for x and y, and only the x part in the
inner loop.
- Move stride multiplication outside of inner loop
Søren Sandmann Pedersen [Sat, 13 Feb 2010 17:26:09 +0000 (12:26 -0500)]
Merge branch 'bitmasks'
Søren Sandmann Pedersen [Sat, 13 Feb 2010 16:18:13 +0000 (11:18 -0500)]
Makefile.am: Remove 'check' from release-check
It's already included in distcheck.
Søren Sandmann Pedersen [Sat, 13 Feb 2010 14:40:33 +0000 (09:40 -0500)]
Turn off asserts in development snapshots (bug 26314).
There is not much real benefit in having asserts turned on in
snapshots because it doesn't lead to any new bug reports, just to
people not installing development snapshots since they case X server
crashes. So just turn them off.
While we are at it, limit the number of messages to stderr to 5
instead of 50.
Siarhei Siamashka [Sun, 7 Feb 2010 05:33:52 +0000 (07:33 +0200)]
ARM: Remove any use of environment variables for cpu features detection
Old code assumed that all ARMv7 processors support NEON instructions
unless overrided by environment variable ARM_TRUST_HWCAP. This causes
X server to die with SIGILL if NEON support is disabled in the kernel
configuration. Additionally, ARMv7 processors lacking NEON unit are
going to become available eventually.
The problem was reported by user bearsh at irc.freenode.net #gentoo-embedded
Alexander Larsson [Tue, 9 Feb 2010 14:57:18 +0000 (15:57 +0100)]
Add pixman_image_get_destroy_data()
This way you can get back user data that was set using
pixman_image_set_destroy_function().
Alexander Larsson [Tue, 9 Feb 2010 12:22:38 +0000 (13:22 +0100)]
Add extern "C" guards for c++
Søren Sandmann Pedersen [Sun, 13 Sep 2009 08:28:20 +0000 (04:28 -0400)]
Move checks for src/mask repeat right before walking the region.
Also add a couple of additional checks to the src/mask repeat check.
Søren Sandmann Pedersen [Sun, 13 Sep 2009 07:43:16 +0000 (03:43 -0400)]
Compute src, mask, dest flags and base fast path decisions on them.
This makes sets the stage for caching the information by image instead
of computing it on each composite invocation.
This patch also computes format codes for images such as PIXMAN_solid,
so that we can no longer end up in the situation that a fast path is
selected for a 1x1 solid image, when that fast path doesn't actually
understand repeating.
Søren Sandmann Pedersen [Sun, 13 Sep 2009 06:34:32 +0000 (02:34 -0400)]
Add src_, mask_, and dest_flags fields to fast path arrays
Update all the fast path tables to match using a new
PIXMAN_STD_FAST_PATH macro.
For now, use 0 for the flags fields.
Søren Sandmann Pedersen [Sat, 12 Sep 2009 09:26:50 +0000 (05:26 -0400)]
Move calls to source_is_fastpathable() into get_source_format()
Søren Sandmann Pedersen [Sat, 12 Sep 2009 09:09:53 +0000 (05:09 -0400)]
Fold get_fast_path() into _pixman_run_fast_path()
Also factor out the source format code computation to its own
function.
Søren Sandmann Pedersen [Sat, 12 Sep 2009 08:30:22 +0000 (04:30 -0400)]
Consolidate the source and mask sanity checks in a function
Søren Sandmann Pedersen [Sat, 12 Sep 2009 08:10:30 +0000 (04:10 -0400)]
Move pixbuf checks after src_format and mask_format have been computed.
Søren Sandmann Pedersen [Sat, 12 Sep 2009 08:03:25 +0000 (04:03 -0400)]
Move the sanity checks for src, mask and destination into get_fast_path()
Søren Sandmann Pedersen [Wed, 27 Jan 2010 12:11:11 +0000 (07:11 -0500)]
Turn some uint16_t variables to int32_t in the fast paths.
This is necessary now that we have a 32 bit version of
pixman_image_composite().
Søren Sandmann Pedersen [Thu, 21 Jan 2010 18:43:53 +0000 (13:43 -0500)]
Implement get_scanline_64() correctly for solid fill images.
Previously they would be evaluated at 8 bits and then expanded.
Benjamin Otte [Tue, 26 Jan 2010 18:37:34 +0000 (19:37 +0100)]
Make pixman_image_fill_rectangles() call pixman_image_fill_boxes()
Avoids duplication of code
Benjamin Otte [Tue, 26 Jan 2010 18:03:38 +0000 (19:03 +0100)]
Add pixman_image_fill_boxes() API
It's basically the 32bit version of pixman_image_fill_rectangles(), just
with a saner data type.
Benjamin Otte [Tue, 26 Jan 2010 17:52:27 +0000 (18:52 +0100)]
Add pixman_image_composite32()
This is equal to pixman_image_composite(), just with 32bit parameters.
pixman_image_composite() now just calls pixman_image_composite32()
Benjamin Otte [Tue, 26 Jan 2010 18:09:56 +0000 (19:09 +0100)]
Make region argument to pixman_region(32)_init_rects() const
No indenting of the header to keep git blame working
Benjamin Otte [Tue, 26 Jan 2010 18:08:29 +0000 (19:08 +0100)]
Fix typo
Søren Sandmann Pedersen [Tue, 19 Jan 2010 19:23:57 +0000 (14:23 -0500)]
Fix some warnings
Søren Sandmann Pedersen [Mon, 18 Jan 2010 00:34:27 +0000 (19:34 -0500)]
Post-release version bump
Søren Sandmann Pedersen [Sun, 17 Jan 2010 23:56:11 +0000 (18:56 -0500)]
Pre-release version bump
Søren Sandmann Pedersen [Sun, 17 Jan 2010 21:45:23 +0000 (16:45 -0500)]
bits: Print an error if someone tries to create an image with bpp < depth
Something in the X server apparently does this.
Søren Sandmann Pedersen [Sat, 16 Jan 2010 15:31:22 +0000 (10:31 -0500)]
When fetching from an alpha map, replace the alpha channel of the image
Previously it would be multiplied onto the image pixel, but the Render
specification is pretty clear that the alpha map should be used
*instead* of any alpha channel within the image.
This makes the assumption that the pixels in the image are already
premultiplied with the alpha channel from the alpha map. If we don't
make this assumption and the image has an alpha channel of its own, we
would have to first unpremultiply that pixel, and then premultiply the
alpha value onto the color channels, and then replace the alpha
channel.
Søren Sandmann Pedersen [Sat, 16 Jan 2010 15:09:25 +0000 (10:09 -0500)]
pixman_image_validate() needs to also validate the alpha map.
This is the other half of bug 25950.