profile/ivi/pixman.git
14 years agoRemove unused color_table and color_table_size fields
Søren Sandmann Pedersen [Tue, 20 Oct 2009 00:27:36 +0000 (20:27 -0400)]
Remove unused color_table and color_table_size fields

14 years agoRemove BOUNDS() macro.
Søren Sandmann Pedersen [Sun, 18 Oct 2009 07:02:28 +0000 (03:02 -0400)]
Remove BOUNDS() macro.

It was bounding the clip region to INT16_MIN, INT16_MAX, but this was
a relic from the X server. We don't need it since we are already
restricting the clip region to the geometry of the destination.

14 years ago--enable-maintainer-mode is gone from configure, so remove it
Benjamin Otte [Wed, 30 Sep 2009 06:02:39 +0000 (08:02 +0200)]
--enable-maintainer-mode is gone from configure, so remove it

14 years agoAdd default cases for all switch statements
Benjamin Otte [Thu, 17 Sep 2009 11:19:04 +0000 (13:19 +0200)]
Add default cases for all switch statements

Fixes compilation with -Wswitch-default. Compilation with -Wswitch-enums
works fine as is.

14 years agoFix compile warnings
Benjamin Otte [Thu, 17 Sep 2009 11:18:22 +0000 (13:18 +0200)]
Fix compile warnings

14 years agoARM: Removal of unused/broken NEON code
Siarhei Siamashka [Sun, 26 Jul 2009 22:21:26 +0000 (01:21 +0300)]
ARM: Removal of unused/broken NEON code

14 years agoFix double semicolon; pointed out by Travis Griggs
Søren Sandmann Pedersen [Thu, 8 Oct 2009 17:01:27 +0000 (13:01 -0400)]
Fix double semicolon; pointed out by Travis Griggs

14 years agoFix build with Visual Studio 2008
Gerdus van Zyl [Tue, 29 Sep 2009 10:28:03 +0000 (12:28 +0200)]
Fix build with Visual Studio 2008

moved __m64 ms declaration in sse2_composite_over_x888_8_8888 to top
of function so it compiles with visual studio 2008

14 years agoFix composite on big-endian systems.
Andrea Canciani [Sun, 27 Sep 2009 09:40:52 +0000 (11:40 +0200)]
Fix composite on big-endian systems.

Data narrower than 32bpp is padded to an unsigned long and on
big-endian systems this shifts the value by the padding bits.

14 years agoFix fetch-test for big-endian systems.
Søren Sandmann Pedersen [Sat, 26 Sep 2009 17:12:14 +0000 (13:12 -0400)]
Fix fetch-test for big-endian systems.

Data narrower than 32bpp should be stored in the correct
endian. Reported by Andrea Canciani.

14 years agoAdd missing break in composite.c
Søren Sandmann Pedersen [Thu, 24 Sep 2009 12:57:26 +0000 (08:57 -0400)]
Add missing break in composite.c

14 years agopixman: Update .gitignore
Guillem Jover [Tue, 22 Sep 2009 17:51:13 +0000 (19:51 +0200)]
pixman: Update .gitignore

Generalize to catch all .pc files. Add more tests.

Signed-off-by: Guillem Jover <guillem@hadrons.org>
14 years agoIn the compositing test, Don't try to use component alpha with solid fills.
Søren Sandmann Pedersen [Thu, 24 Sep 2009 12:10:00 +0000 (08:10 -0400)]
In the compositing test, Don't try to use component alpha with solid fills.

It's not supported yet.

14 years agoUpdate CRC value in blitters-test for the new bug fixes
Søren Sandmann Pedersen [Fri, 18 Sep 2009 15:33:18 +0000 (11:33 -0400)]
Update CRC value in blitters-test for the new bug fixes

14 years agoFix bug in blitters-test with BGRA formats.
Søren Sandmann Pedersen [Fri, 18 Sep 2009 12:16:56 +0000 (08:16 -0400)]
Fix bug in blitters-test with BGRA formats.

When masking out the x bits, blitter-test would make the incorrect
assumption that the they were always in the topmost position. This is
not correct for formats of type PIXMAN_TYPE_BGRA.

14 years agoFix bugs in fetch_*_b2g3r3().
Søren Sandmann Pedersen [Fri, 18 Sep 2009 13:43:14 +0000 (09:43 -0400)]
Fix bugs in fetch_*_b2g3r3().

The red channel should only be shifted five positions, not six.

14 years agoFix bugs in a1b2g1r1.
Søren Sandmann Pedersen [Thu, 24 Sep 2009 11:48:46 +0000 (07:48 -0400)]
Fix bugs in a1b2g1r1.

The first bug is that it is treating the input as if it were a1r1g1b1;
the second one is that the red channel should only be shifted two
bits, not three.

14 years agoFix shift bug in fetch_scanline/pixel_a2b2g2r2()
Søren Sandmann Pedersen [Fri, 18 Sep 2009 12:48:04 +0000 (08:48 -0400)]
Fix shift bug in fetch_scanline/pixel_a2b2g2r2()

0x30 * 0x55 is 0xff0, so the red channel should be shifted four bits,
not six.

14 years agoFix four bit formats.
Søren Sandmann Pedersen [Fri, 18 Sep 2009 12:13:46 +0000 (08:13 -0400)]
Fix four bit formats.

The original Render code used to index pixels with their position in
bits in the image. When the scanline code was introduced pixels were
indexed in bytes, but the FETCH/STORE_4/8 macros still assumed bits.

This commit fixes that by making the FETCH/STORE_4 macros first
convert the index to bit position.

14 years agoHide PIXMAN_OP_NONE and PIXMAN_N_OPERATORS behind PIXMAN_INTERNAL_API.
Søren Sandmann Pedersen [Sun, 20 Sep 2009 20:50:37 +0000 (16:50 -0400)]
Hide PIXMAN_OP_NONE and PIXMAN_N_OPERATORS behind PIXMAN_INTERNAL_API.

These cannot sanely be used by applications since they may change in
new versions.

14 years agoAdd a few notes about testing to TODO
Søren Sandmann Pedersen [Fri, 18 Sep 2009 12:06:32 +0000 (08:06 -0400)]
Add a few notes about testing to TODO

14 years agoFix alpha handling for 10 bpc formats.
Søren Sandmann Pedersen [Fri, 18 Sep 2009 13:11:04 +0000 (09:11 -0400)]
Fix alpha handling for 10 bpc formats.

These generally extracted the 2 bits of alpha, then shifted them 62
bits and replicated across 16 bits. Then they were shifted another 48
bits, making the resulting alpha channel 0.

14 years agoReturn result from pixman_image_set_transform().
Søren Sandmann Pedersen [Thu, 24 Sep 2009 09:22:33 +0000 (05:22 -0400)]
Return result from pixman_image_set_transform().

Previously it would always return TRUE, even when malloc() had failed.

14 years agoRevert "Enable component alpha on solid masks."
Søren Sandmann Pedersen [Tue, 15 Sep 2009 11:43:23 +0000 (07:43 -0400)]
Revert "Enable component alpha on solid masks."

For consistency we will probably want to allow component alpha to be
set on all masks at some point, but this commit only enabled it for
solid images.

This reverts commit 29e22cf38e8abc54b9dddbdeb3909d02866a82a0.

14 years ago[Makefile] Set the SIMD specific CFLAGS for inspecting asm.
Chris Wilson [Tue, 15 Sep 2009 12:16:17 +0000 (13:16 +0100)]
[Makefile] Set the SIMD specific CFLAGS for inspecting asm.

14 years agoRemove optimization for 0xffffffff and 0xff the add_n_8888_8888_ca fast path
Søren Sandmann Pedersen [Mon, 14 Sep 2009 22:48:32 +0000 (18:48 -0400)]
Remove optimization for 0xffffffff and 0xff the add_n_8888_8888_ca fast path

This is an ADD operation, not an OVER. Fixes bug 23934, reported by
Siarhei Siamashka.

14 years agoDon't prefetch from NULL in the SSE2 fast paths.
M Joonas Pihlaja [Mon, 14 Sep 2009 19:52:29 +0000 (22:52 +0300)]
Don't prefetch from NULL in the SSE2 fast paths.

On an Athlon64 box prefetch from NULL slows down
the rgba OVER rgba fast for predominantly solid sources
by up to 3.5x in the one-rounded-rectangle test case
when run using a tiling polygon renderer.  This patch
conditionalises the prefetches of the mask everywhere
where the mask pointer may be NULL in a fast path.

14 years agoReformat test/composite.c to follow the standard coding style.
Søren Sandmann Pedersen [Mon, 14 Sep 2009 10:58:03 +0000 (06:58 -0400)]
Reformat test/composite.c to follow the standard coding style.

14 years ago[test] Exercise repeating patterns for composite.
Chris Wilson [Sun, 13 Sep 2009 17:02:10 +0000 (18:02 +0100)]
[test] Exercise repeating patterns for composite.

14 years ago[build] Add rule to generate asm for inspection.
Chris Wilson [Sun, 13 Sep 2009 14:04:30 +0000 (15:04 +0100)]
[build] Add rule to generate asm for inspection.

14 years ago[sse2] Don't emit prefetch 0 for an absent mask
Chris Wilson [Sun, 13 Sep 2009 14:04:54 +0000 (15:04 +0100)]
[sse2] Don't emit prefetch 0 for an absent mask

14 years ago[test] Add composite test from rendercheck
Chris Wilson [Sun, 13 Sep 2009 14:07:08 +0000 (15:07 +0100)]
[test] Add composite test from rendercheck

Iterate over all destination formats for dst, src and composite and
compare the result of all oprators with a selection of colours.

14 years agobuild: Suppress verbose compile lines
Chris Wilson [Thu, 27 Aug 2009 08:19:14 +0000 (09:19 +0100)]
build: Suppress verbose compile lines

Compile warnings are being lost in the sea of noise. Automake-1.11 finally
introduced AM_SILENT_RULES to suppress the echoing of the compile line for
every object. Enable this to bring sanity to the pixman build.

14 years agoMerge branch '0.16'
Chris Wilson [Sun, 13 Sep 2009 15:32:27 +0000 (16:32 +0100)]
Merge branch '0.16'

Conflicts:
configure.ac
pixman/pixman-sse2.c

14 years agoRemove duplicated declaration
Chris Wilson [Sun, 16 Aug 2009 11:16:46 +0000 (12:16 +0100)]
Remove duplicated declaration

The pixman_tranform_pixman_f_transform() declaration is repeated 4 lines
down.

14 years agoEnable component alpha on solid masks.
Chris Wilson [Sun, 13 Sep 2009 15:26:29 +0000 (16:26 +0100)]
Enable component alpha on solid masks.

14 years ago[sse2] Bit-reversing typo: src != dst
Chris Wilson [Sun, 13 Sep 2009 15:26:52 +0000 (16:26 +0100)]
[sse2] Bit-reversing typo: src != dst

14 years agoFix off-by-one error in source_image_needs_out_of_bounds_workaround()
Søren Sandmann Pedersen [Fri, 11 Sep 2009 01:33:24 +0000 (21:33 -0400)]
Fix off-by-one error in source_image_needs_out_of_bounds_workaround()

If extents->x2/y2 are equal to image->width/height, then the clip is
still inside the drawable, so no workaround is necessary.

14 years agoRemove unused generated libcomp.pc #23801
Gaetan Nadon [Wed, 9 Sep 2009 00:06:19 +0000 (20:06 -0400)]
Remove unused generated libcomp.pc #23801

14 years agoChange CFLAGS order for PPC and ARM configure tests
Siarhei Siamashka [Fri, 4 Sep 2009 11:14:00 +0000 (14:14 +0300)]
Change CFLAGS order for PPC and ARM configure tests

CFLAGS are always appended to the end of gcc options when compiling
sources in autotools based projects. Configure tests should do the
same. Otherwise build fails on PPC when using CFLAGS="-O2 -mno-altivec"
for example. Similar problem affects ARM.

14 years agoARM: Remove fallback to ARMv6 implementation from NEON delegate chain
Siarhei Siamashka [Wed, 2 Sep 2009 16:46:47 +0000 (19:46 +0300)]
ARM: Remove fallback to ARMv6 implementation from NEON delegate chain

This can help to fix build problems with '-mthumb' gcc option in CFLAGS.
ARMv6 optimized code can't be compiled for thumb (because of its inline
assembly) and gets automatically disabled in configure. Reference
to it from NEON optimized code resulted in linking problems.

Every ARMv6 optimized fast path function also has a better NEON
counterpart, so there is no need to fallback to ARMv6. Shorter
delegate chain should additionally result in a bit better performance.

14 years agoChange CFLAGS order for PPC and ARM configure tests
Siarhei Siamashka [Fri, 4 Sep 2009 11:14:00 +0000 (14:14 +0300)]
Change CFLAGS order for PPC and ARM configure tests

CFLAGS are always appended to the end of gcc options when compiling
sources in autotools based projects. Configure tests should do the
same. Otherwise build fails on PPC when using CFLAGS="-O2 -mno-altivec"
for example. Similar problem affects ARM.

14 years agoARM: Remove fallback to ARMv6 implementation from NEON delegate chain
Siarhei Siamashka [Wed, 2 Sep 2009 16:46:47 +0000 (19:46 +0300)]
ARM: Remove fallback to ARMv6 implementation from NEON delegate chain

This can help to fix build problems with '-mthumb' gcc option in CFLAGS.
ARMv6 optimized code can't be compiled for thumb (because of its inline
assembly) and gets automatically disabled in configure. Reference
to it from NEON optimized code resulted in linking problems.

Every ARMv6 optimized fast path function also has a better NEON
counterpart, so there is no need to fallback to ARMv6. Shorter
delegate chain should additionally result in a bit better performance.

14 years agoDefault to optimised builds when using a Sun Studio compiler.
M Joonas Pihlaja [Mon, 31 Aug 2009 22:02:53 +0000 (23:02 +0100)]
Default to optimised builds when using a Sun Studio compiler.

Autoconf's AC_PROG_CC sets the default CFLAGS to -O2 -g for
gcc and -g for every other compiler.  This patch defaults
CFLAGS to the equivalent -O -g when we're using Sun Studio's cc
if the user or site admin hasn't already set CFLAGS.

14 years agoWork around a Sun Studio 12 code generation bug involving _mm_set_epi32().
M Joonas Pihlaja [Mon, 31 Aug 2009 19:27:32 +0000 (20:27 +0100)]
Work around a Sun Studio 12 code generation bug involving _mm_set_epi32().

Calling a static function wrapper around _mm_set_epi32() when not
using optimisation causes Sun Studio 12's cc to emit a spurious
floating point load which confuses the assembler.  Using a macro wrapper
rather than a function steps around the problem.

14 years agoWork around differing _mm_prefetch() prototypes on Solaris.
M Joonas Pihlaja [Mon, 31 Aug 2009 19:24:04 +0000 (20:24 +0100)]
Work around differing _mm_prefetch() prototypes on Solaris.

Sun Studio 12 expects the address to prefetch to be
a const char pointer rather than a __m128i pointer or
void pointer.

14 years agoDefault to optimised builds when using a Sun Studio compiler.
M Joonas Pihlaja [Mon, 31 Aug 2009 22:02:53 +0000 (23:02 +0100)]
Default to optimised builds when using a Sun Studio compiler.

Autoconf's AC_PROG_CC sets the default CFLAGS to -O2 -g for
gcc and -g for every other compiler.  This patch defaults
CFLAGS to the equivalent -O -g when we're using Sun Studio's cc
if the user or site admin hasn't already set CFLAGS.

14 years agoWork around a Sun Studio 12 code generation bug involving _mm_set_epi32().
M Joonas Pihlaja [Mon, 31 Aug 2009 19:27:32 +0000 (20:27 +0100)]
Work around a Sun Studio 12 code generation bug involving _mm_set_epi32().

Calling a static function wrapper around _mm_set_epi32() when not
using optimisation causes Sun Studio 12's cc to emit a spurious
floating point load which confuses the assembler.  Using a macro wrapper
rather than a function steps around the problem.

14 years agoWork around differing _mm_prefetch() prototypes on Solaris.
M Joonas Pihlaja [Mon, 31 Aug 2009 19:24:04 +0000 (20:24 +0100)]
Work around differing _mm_prefetch() prototypes on Solaris.

Sun Studio 12 expects the address to prefetch to be
a const char pointer rather than a __m128i pointer or
void pointer.

14 years agoARM: workaround for gcc bug in vshll_n_u8 intrinsic
Siarhei Siamashka [Fri, 28 Aug 2009 19:34:21 +0000 (22:34 +0300)]
ARM: workaround for gcc bug in vshll_n_u8 intrinsic

Some versions of gcc (cs2009q1, 4.4.1) incorrectly reject
shift operand having value >= 8, claiming that it is out of
range. So inline assembly is used as a workaround.

14 years agoARM: workaround for gcc bug in vshll_n_u8 intrinsic
Siarhei Siamashka [Fri, 28 Aug 2009 19:34:21 +0000 (22:34 +0300)]
ARM: workaround for gcc bug in vshll_n_u8 intrinsic

Some versions of gcc (cs2009q1, 4.4.1) incorrectly reject
shift operand having value >= 8, claiming that it is out of
range. So inline assembly is used as a workaround.

14 years agoEnable the x888_8_8888 sse2 fast path.
Søren Sandmann Pedersen [Tue, 2 Jun 2009 12:27:33 +0000 (08:27 -0400)]
Enable the x888_8_8888 sse2 fast path.

14 years agoSet version number to 0.16.1
Søren Sandmann Pedersen [Wed, 2 Sep 2009 20:09:32 +0000 (16:09 -0400)]
Set version number to 0.16.1

14 years agoAdd CPU detection for VC++ x64
Makoto Kato [Tue, 1 Sep 2009 01:59:05 +0000 (10:59 +0900)]
Add CPU detection for VC++ x64

VC++ x64 has no inline assembler and x64 mode supports SSE2.
So, it is unnecessary to call cpuid.

14 years agoAdd CPU detection for VC++ x64
Makoto Kato [Tue, 1 Sep 2009 01:59:05 +0000 (10:59 +0900)]
Add CPU detection for VC++ x64

VC++ x64 has no inline assembler and x64 mode supports SSE2.
So, it is unnecessary to call cpuid.

14 years agoChange names of add_8888_8_8 fast paths to add_n_8_8
Søren Sandmann Pedersen [Tue, 1 Sep 2009 12:23:23 +0000 (08:23 -0400)]
Change names of add_8888_8_8 fast paths to add_n_8_8

The source is solid in those.

14 years agoPost-release version bump
Søren Sandmann Pedersen [Fri, 28 Aug 2009 12:14:04 +0000 (08:14 -0400)]
Post-release version bump

14 years agoPre-release version bump
Søren Sandmann Pedersen [Fri, 28 Aug 2009 11:55:30 +0000 (07:55 -0400)]
Pre-release version bump

14 years ago_pixman_run_fast_path: typo
Chris Wilson [Fri, 28 Aug 2009 10:31:06 +0000 (06:31 -0400)]
_pixman_run_fast_path: typo

This is one example of a compiler warning that was lost amit the build
noise.

The error here is that in a list of required conditions we used ';'
instead of '&&' with the result of continuing to use the fast-path
even if we had a wide mask.

Another error is that it was testing src, not mask as it should.

14 years agoRemove spurious spaces in pixman-x64-mmx-emulation.h
Makoto Kato [Fri, 28 Aug 2009 08:09:15 +0000 (04:09 -0400)]
Remove spurious spaces in pixman-x64-mmx-emulation.h

14 years agoCheck if we have posix_memalign() in configure.ac. [23260, 23261]
Søren Sandmann Pedersen [Wed, 12 Aug 2009 18:08:58 +0000 (14:08 -0400)]
Check if we have posix_memalign() in configure.ac. [23260, 23261]

Fall back to malloc() in blitters-test.c if we don't.

14 years agoARM: a fix to pass blitters-test for 'neon_composite_over_n_8_0565'
Siarhei Siamashka [Wed, 12 Aug 2009 17:22:24 +0000 (20:22 +0300)]
ARM: a fix to pass blitters-test for 'neon_composite_over_n_8_0565'

Inline assembly for handling <8 pixels width did not pass blitters-test.
Fortunately gcc has no problems compiling alternative implementation
which is using RVCT style intrinsics, so it can be used instead.

14 years agoPost-release version bump
Søren Sandmann Pedersen [Tue, 11 Aug 2009 18:03:24 +0000 (14:03 -0400)]
Post-release version bump

14 years agoPre-release version-bump
Søren Sandmann Pedersen [Tue, 11 Aug 2009 17:56:16 +0000 (13:56 -0400)]
Pre-release version-bump

14 years agoMerge branch 'blitter-test'
Søren Sandmann Pedersen [Tue, 11 Aug 2009 06:04:40 +0000 (02:04 -0400)]
Merge branch 'blitter-test'

14 years agoFix x/y mixup in bits_image_fetch_pixel_convolution()
Søren Sandmann Pedersen [Tue, 11 Aug 2009 00:47:36 +0000 (20:47 -0400)]
Fix x/y mixup in bits_image_fetch_pixel_convolution()

Bug 23224, reported by Michel Dänzer.

14 years agoUpdate CRC value in blitters-test.
Søren Sandmann Pedersen [Fri, 7 Aug 2009 04:45:53 +0000 (00:45 -0400)]
Update CRC value in blitters-test.

At this point, the SIMD, SSE2, MMX and general implementations all
agree.

14 years agoVarious formatting fixes
Søren Sandmann Pedersen [Fri, 7 Aug 2009 04:25:56 +0000 (00:25 -0400)]
Various formatting fixes

14 years agoAdd the ability to print intermediate CRC values
Søren Sandmann Pedersen [Wed, 5 Aug 2009 20:28:10 +0000 (16:28 -0400)]
Add the ability to print intermediate CRC values

14 years agoReenable commented-out tests in blitter-test.
Søren Sandmann Pedersen [Wed, 5 Aug 2009 19:53:33 +0000 (15:53 -0400)]
Reenable commented-out tests in blitter-test.

The crashes and valgrind issues are all fixed at this point.

14 years agoOne more update to blitters-test - use aligned memory
Siarhei Siamashka [Sun, 2 Aug 2009 21:01:01 +0000 (00:01 +0300)]
One more update to blitters-test - use aligned memory
allocations in order in order to make reproducibility
of alignment sensitive bugs more deterministic
Also testing of masks is reenabled

14 years agoHACK: updated test to better cover new neon optimizations
Siarhei Siamashka [Fri, 31 Jul 2009 23:20:12 +0000 (02:20 +0300)]
HACK: updated test to better cover new neon optimizations

14 years agoTest program for stressing the use of different formats and operators
Siarhei Siamashka [Tue, 21 Jul 2009 22:29:51 +0000 (01:29 +0300)]
Test program for stressing the use of different formats and operators

The code and overall method is mostly based on scaling-test. This one
focuses on trying to stress as many different color formats and types
of composition operations as possible.

This is an initial implementation which may need more tuning. Also
not all color format and operator combinations are actually used.

When cpu specific optimizations are disabled, this test provides
identical deterministic results on x86, PPC and ARM.

Script blitters-test-bisect.rb now works in non-stop mode, until
it finds any problem. This allows to run it for example overnight
in order to test a lot more variants of pixman calls and increase
chances of detecting problems in pixman. Just like with scaling-test,
running blitters-test binary alone with no command line arguments
runs a small predefined number of tests and compares checksum
with a reference value for quick verification.

14 years agoDelete commented out code in pixman-vmx.c
Søren Sandmann Pedersen [Fri, 7 Aug 2009 16:00:07 +0000 (12:00 -0400)]
Delete commented out code in pixman-vmx.c

14 years agoMisc formatting fixes for pixman-vmx.c
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:53:50 +0000 (11:53 -0400)]
Misc formatting fixes for pixman-vmx.c

14 years agoIn vmx_combine_atop_reverse_ca() extract alpha after inversing
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:48:22 +0000 (11:48 -0400)]
In vmx_combine_atop_reverse_ca() extract alpha after inversing

14 years agoReally fix vmx_combine_over_reverse_ca()
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:46:09 +0000 (11:46 -0400)]
Really fix vmx_combine_over_reverse_ca()

The inverse destination alpha is just one component, not four.

14 years agoFix vmx_combine_out_reverse_ca()
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:40:42 +0000 (11:40 -0400)]
Fix vmx_combine_out_reverse_ca()

The source alpha is just one component, not four.

14 years agoFix vmx_over_reverse_ca()
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:38:03 +0000 (11:38 -0400)]
Fix vmx_over_reverse_ca()

Destination alpha must be extracted after inversing, otherwise we end
up with 0xFFs in the rgb channels.

14 years agoMultiply with the alpha of dest, not inverse alpha
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:35:20 +0000 (11:35 -0400)]
Multiply with the alpha of dest, not inverse alpha

14 years agoFix vmx_combine_vmx_atop_ca()
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:32:31 +0000 (11:32 -0400)]
Fix vmx_combine_vmx_atop_ca()

It didn't compute the mask correct before.

14 years agoFix vmx_combine_over_ca().
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:26:23 +0000 (11:26 -0400)]
Fix vmx_combine_over_ca().

In the non-vector code, the mask needs to be multiplied with source
alpha.

14 years agoIn vmx_combine_out_ca() multiply with the alpha of the negated vdest.
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:21:43 +0000 (11:21 -0400)]
In vmx_combine_out_ca() multiply with the alpha of the negated vdest.

14 years agoFix vmx_combine_out_ca()
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:16:31 +0000 (11:16 -0400)]
Fix vmx_combine_out_ca()

It should multiply with just the destination alpha channel, not all
four channels.

14 years agoDo the full four-component IN computation in vmx_combine_in_ca().
Søren Sandmann Pedersen [Fri, 7 Aug 2009 15:07:16 +0000 (11:07 -0400)]
Do the full four-component IN computation in vmx_combine_in_ca().

14 years agoFix bug in vmx_combine_xor_ca()
Søren Sandmann Pedersen [Fri, 7 Aug 2009 14:54:16 +0000 (10:54 -0400)]
Fix bug in vmx_combine_xor_ca()

The destination needs to be inverted before the alpha channel is
extracted; otherwise, the RGB channels of da will be 0xff.

14 years agoMake pix_multiply bit-exact
Søren Sandmann Pedersen [Fri, 7 Aug 2009 05:07:01 +0000 (01:07 -0400)]
Make pix_multiply bit-exact

14 years agoChange the SSE2 versions of pix_add_multiply() to produce bit-exact results.
Søren Sandmann Pedersen [Fri, 7 Aug 2009 03:50:32 +0000 (23:50 -0400)]
Change the SSE2 versions of pix_add_multiply() to produce bit-exact results.

14 years agoFix a couple of alpha==0 vs src==0 issues in pixman-sse2.c
Søren Sandmann Pedersen [Fri, 7 Aug 2009 03:52:11 +0000 (23:52 -0400)]
Fix a couple of alpha==0 vs src==0 issues in pixman-sse2.c

14 years agoRename mmx_composite_add_8888_8_8() to mmx_composite_add_n_8_8().
Søren Sandmann Pedersen [Fri, 7 Aug 2009 03:05:36 +0000 (23:05 -0400)]
Rename mmx_composite_add_8888_8_8() to mmx_composite_add_n_8_8().

14 years agoFix a couple more alpha==0 vs src==0 bugs in pixman-mmx.c
Søren Sandmann Pedersen [Fri, 7 Aug 2009 02:46:50 +0000 (22:46 -0400)]
Fix a couple more alpha==0 vs src==0 bugs in pixman-mmx.c

14 years agoMake pix_add_mul() in pixman-mmx.c produce exact results.
Søren Sandmann Pedersen [Fri, 7 Aug 2009 02:42:25 +0000 (22:42 -0400)]
Make pix_add_mul() in pixman-mmx.c produce exact results.

Previously this routine would compute (x * a + y * b) / 255. Now it
computes (x * a) / 255 + (y * b) / 255, so that the results are
bitwise equivalent to the non-mmx versions.

14 years agoRewrite the two-component arithmetic macros.
Søren Sandmann Pedersen [Fri, 7 Aug 2009 00:29:44 +0000 (20:29 -0400)]
Rewrite the two-component arithmetic macros.

Previously they were not bit-for-bit equivalent to the one-component
versions. The new code is also simpler and easier to read because it
factors out some common sub-macros.

The x * a + y * b macro now only uses four multiplications - the
previous version used eight.

14 years agoFix a bunch of srca == 0 checks that should be src == 0 in pixman-mmx.c
Søren Sandmann Pedersen [Fri, 7 Aug 2009 00:41:04 +0000 (20:41 -0400)]
Fix a bunch of srca == 0 checks that should be src == 0 in pixman-mmx.c

14 years agoDon't run fast paths if the format requires wide compositing.
Søren Sandmann Pedersen [Thu, 6 Aug 2009 01:24:50 +0000 (21:24 -0400)]
Don't run fast paths if the format requires wide compositing.

This could happen because the wide formats would still be considered
solid if the image was 1x1 and repeating.

14 years agoFix bug in combine_mask_alpha_ca()
Søren Sandmann Pedersen [Thu, 6 Aug 2009 01:16:14 +0000 (21:16 -0400)]
Fix bug in combine_mask_alpha_ca()

If the mask was 0xffffffff, the source would end up being shifted
twice by A_SHIFT.

14 years agoFix another case of changing the solid source.
Søren Sandmann Pedersen [Thu, 6 Aug 2009 00:40:36 +0000 (20:40 -0400)]
Fix another case of changing the solid source.

This time in fast_path_composite_n_8888_8888().

14 years agoFix incorrect optimization in combine_over_ca().
Søren Sandmann Pedersen [Thu, 6 Aug 2009 00:31:41 +0000 (20:31 -0400)]
Fix incorrect optimization in combine_over_ca().

Previously the code assumed that an alpha of 0 meant that no change
would take place. This is incorrect because an alpha of 0 can happen
as the result of the source having alpha=0, but rgb != 0.

14 years agoDon't change the constant source in fast_composite_over_n_8888_0565.
Søren Sandmann Pedersen [Wed, 5 Aug 2009 22:18:37 +0000 (18:18 -0400)]
Don't change the constant source in fast_composite_over_n_8888_0565.

14 years agoFix bugs in combine_over_reverse_ca().
Søren Sandmann Pedersen [Wed, 5 Aug 2009 20:17:52 +0000 (16:17 -0400)]
Fix bugs in combine_over_reverse_ca().

The computation cannot be optimized away when alpha is 0 because that
can happen when the source has alpha zero and rgb non-zero.