.gitignore | 7 ChangeLog | 2032 ++++++++++++++++++++++++++++ Makefile.win32 | 14 Makefile.win32.common | 4 TODO | 271 --- configure.ac | 45 debian/changelog | 28 debian/rules | 4 demos/Makefile.am | 8 demos/composite-test.c | 2 demos/gtk-utils.c | 51 demos/gtk-utils.h | 1 demos/radial-test.c | 2 demos/srgb-test.c | 87 + demos/srgb-trap-test.c | 119 + pixman-1.pc.in | 4 pixman/Makefile.am | 47 pixman/Makefile.sources | 26 pixman/Makefile.win32 | 2 pixman/loongson-mmintrin.h | 137 + pixman/make-combine.pl | 86 - pixman/make-srgb.pl | 115 + pixman/pixman-access.c | 714 ++++++--- pixman/pixman-arm-common.h | 24 pixman/pixman-arm-neon-asm-bilinear.S | 119 - pixman/pixman-arm-neon-asm.S | 159 +- pixman/pixman-arm-neon-asm.h | 45 pixman/pixman-arm-neon.c | 89 - pixman/pixman-arm-simd-asm.S | 47 pixman/pixman-arm.c | 225 +++ pixman/pixman-bits-image.c | 377 ++--- pixman/pixman-combine-float.c | 1010 +++++++++++++ pixman/pixman-combine.c.template | 2461 ---------------------------------- pixman/pixman-combine.h.template | 226 --- pixman/pixman-combine32.c | 2460 +++++++++++++++++++++++++++++++++ pixman/pixman-combine32.h | 225 +++ pixman/pixman-compiler.h | 4 pixman/pixman-conical-gradient.c | 7 pixman/pixman-cpu.c | 815 ----------- pixman/pixman-fast-path.c | 76 - pixman/pixman-general.c | 70 pixman/pixman-glyph.c | 676 +++++++++ pixman/pixman-image.c | 40 pixman/pixman-implementation.c | 339 +++- pixman/pixman-inlines.h | 98 - pixman/pixman-linear-gradient.c | 11 pixman/pixman-matrix.c | 6 pixman/pixman-mips-dspr2-asm.S | 1916 ++++++++++++++++++++++++++ pixman/pixman-mips-dspr2-asm.h | 112 + pixman/pixman-mips-dspr2.c | 226 ++- pixman/pixman-mips-dspr2.h | 184 ++ pixman/pixman-mips.c | 94 + pixman/pixman-mmx.c | 741 ++++++++-- pixman/pixman-noop.c | 34 pixman/pixman-ppc.c | 155 ++ pixman/pixman-private.h | 236 ++- pixman/pixman-radial-gradient.c | 9 pixman/pixman-region.c | 69 pixman/pixman-solid-fill.c | 29 pixman/pixman-sse2.c | 372 +++-- pixman/pixman-trap.c | 142 + pixman/pixman-utils.c | 297 +--- pixman/pixman-x86.c | 237 +++ pixman/pixman.c | 56 pixman/pixman.h | 86 + test/Makefile.sources | 4 test/Makefile.win32 | 10 test/affine-test.c | 28 test/blitters-test.c | 35 test/combiner-test.c | 151 ++ test/composite-traps-test.c | 2 test/composite.c | 88 - test/fuzzer-find-diff.pl | 7 test/glyph-test.c | 338 ++++ test/gradient-crash-test.c | 2 test/infinite-loop.c | 39 test/lowlevel-blt-bench.c | 64 test/pdf-op-test.c | 2 test/rotate-test.c | 113 + test/scaling-crash-test.c | 7 test/scaling-test.c | 46 test/stress-test.c | 95 - test/utils.c | 153 +- test/utils.h | 15 84 files changed, 13865 insertions(+), 5744 deletions(-)
New commits: commit 97a117ef1d94e8356d59d070da628e3631718ccb Author: Cyril Brulebois <[email protected]> Date: Tue Nov 27 14:00:27 2012 +0100 New upstream release. diff --git a/ChangeLog b/ChangeLog index d35fda1..00c3d4d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1931 @@ +commit 8a2ff3e0ef0449921d962f8b9c093c2353ffd945 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Wed Nov 7 13:40:34 2012 -0500 + + Pre-release version bump to 0.28.0 + +commit 4b91f6ca72db3e8cbd7e97e9ef44be2f8994040d +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Oct 25 10:42:26 2012 -0400 + + Post-release version bump to 0.27.5 + +commit 0de3f3344908757b61f9f51b59d4a39f7447451b +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Oct 25 10:35:27 2012 -0400 + + Pre-release version bump to 0.27.4 + +commit f0750258459580bbc9f136710f8e5c551bd01a0f +Author: Nemanja Lukic <[email protected]> +Date: Sun Oct 14 11:58:52 2012 +0200 + + MIPS: DSPr2: Added more fast-paths for ADD operation: - add_8888_8888_8888 - add_8_8 - add_8888_8888 + + Performance numbers before/after on MIPS-74kc @ 1GHz: + + lowlevel-blt-bench results + + Referent (before): + add_8888_8888_8888 = L1: 17.55 L2: 13.35 M: 8.13 ( 93.95%) HT: 6.60 VT: 6.64 R: 6.45 RT: 3.47 ( 26Kops/s) + add_8_8 = L1: 86.07 L2: 84.89 M: 62.36 ( 90.11%) HT: 36.36 VT: 34.74 R: 29.56 RT: 11.56 ( 52Kops/s) + add_8888_8888 = L1: 95.59 L2: 73.05 M: 17.62 (101.84%) HT: 15.46 VT: 15.01 R: 13.94 RT: 6.71 ( 42Kops/s) + + Optimized: + add_8888_8888_8888 = L1: 41.52 L2: 33.21 M: 11.97 (138.45%) HT: 10.47 VT: 10.19 R: 9.42 RT: 4.86 ( 32Kops/s) + add_8_8 = L1: 135.06 L2: 104.82 M: 57.13 ( 82.58%) HT: 34.79 VT: 36.60 R: 28.28 RT: 10.54 ( 51Kops/s) + add_8888_8888 = L1: 176.36 L2: 67.82 M: 17.48 (101.06%) HT: 15.16 VT: 14.62 R: 13.88 RT: 8.05 ( 45Kops/s) + +commit ca83717c63813b6f53f89dd94b5771bd32382a18 +Author: Nemanja Lukic <[email protected]> +Date: Sun Oct 14 11:58:51 2012 +0200 + + MIPS: DSPr2: Added more fast-paths for ADD operation: - add_0565_8_0565 - add_8888_8_8888 - add_8888_n_8888 + + Performance numbers before/after on MIPS-74kc @ 1GHz: + + lowlevel-blt-bench results + + Referent (before): + add_0565_8_0565 = L1: 8.89 L2: 8.37 M: 7.35 ( 29.22%) HT: 5.90 VT: 5.85 R: 5.67 RT: 3.31 ( 26Kops/s) + add_8888_8_8888 = L1: 17.22 L2: 14.17 M: 9.89 ( 65.56%) HT: 7.57 VT: 7.50 R: 7.36 RT: 4.10 ( 30Kops/s) + add_8888_n_8888 = L1: 17.79 L2: 14.87 M: 10.35 ( 54.89%) HT: 5.19 VT: 4.93 R: 4.92 RT: 1.90 ( 19Kops/s) + + Optimized: + add_0565_8_0565 = L1: 21.72 L2: 20.01 M: 14.96 ( 59.54%) HT: 12.03 VT: 11.81 R: 11.26 RT: 6.33 ( 37Kops/s) + add_8888_8_8888 = L1: 47.42 L2: 38.64 M: 15.90 (105.48%) HT: 13.34 VT: 13.03 R: 11.84 RT: 6.63 ( 38Kops/s) + add_8888_n_8888 = L1: 54.83 L2: 42.66 M: 17.36 ( 92.11%) HT: 15.20 VT: 14.82 R: 13.66 RT: 7.83 ( 41Kops/s) + +commit 52d20e692ebc605077448ab6f52fd257f83481b2 +Author: Nemanja Lukic <[email protected]> +Date: Sun Oct 14 11:58:50 2012 +0200 + + MIPS: DSPr2: Added fast-paths for ADD operation: - add_n_8_8 - add_n_8_8888 - add_8_8_8 + + Performance numbers before/after on MIPS-74kc @ 1GHz: + + lowlevel-blt-bench results + + Referent (before): + add_n_8_8 = L1: 41.37 L2: 37.83 M: 30.38 ( 60.45%) HT: 23.70 VT: 22.85 R: 21.51 RT: 10.32 ( 45Kops/s) + add_n_8_8888 = L1: 16.01 L2: 14.46 M: 11.64 ( 46.32%) HT: 5.50 VT: 5.18 R: 5.06 RT: 1.89 ( 18Kops/s) + add_8_8_8 = L1: 13.26 L2: 12.47 M: 11.16 ( 29.61%) HT: 8.09 VT: 8.04 R: 7.68 RT: 3.90 ( 29Kops/s) + + Optimized: + add_n_8_8 = L1: 96.03 L2: 79.37 M: 51.89 (103.31%) HT: 32.59 VT: 31.29 R: 28.52 RT: 11.08 ( 46Kops/s) + add_n_8_8888 = L1: 53.61 L2: 46.92 M: 23.78 ( 94.70%) HT: 19.06 VT: 18.64 R: 17.30 RT: 9.15 ( 43Kops/s) + add_8_8_8 = L1: 89.65 L2: 66.82 M: 37.10 ( 98.48%) HT: 22.10 VT: 21.74 R: 20.12 RT: 8.12 ( 41Kops/s) + +commit 9df645dfb04b5a790faabe1e9a84fc37287d91b0 +Author: Siarhei Siamashka <[email protected]> +Date: Fri Oct 19 01:59:16 2012 +0300 + + Workaround for FTBFS with gcc 4.6 (http://gcc.gnu.org/PR54965) + + GCC 4.6 has problems with force_inline, so just use normal inline instead. + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=55630 + +commit 31e5a0a393defb8e0534ab1bde29ab23fc04795d +Author: Søren Sandmann Pedersen <[email protected]> +Date: Fri Oct 12 18:34:33 2012 -0400 + + pixman_composite_trapezoids(): don't clip to extents for some operators + + pixman_composite_trapezoids() is supposed to composite across the + entire destination, but it actually only composites across the extent + of the trapezoids. For operators such as ADD or OVER this doesn't + matter since a zero source has no effect on the destination. But for + operators such as SRC or IN, it does matter. + + So for such operators where a zero source has an effect, don't clip to + the trap extents. + +commit 65db2362e2793a527c2e831cceb81d8d6ad51b8f +Author: Søren Sandmann Pedersen <[email protected]> +Date: Fri Oct 12 18:29:56 2012 -0400 + + pixman_composite_trapezoids(): Factor out extents computation + + The computation of the extents rectangle is moved to its own + function. + +commit 2d9cb563b415e90cef898de03de7ed9c6f091db1 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Fri Oct 12 18:07:29 2012 -0400 + + Add new pixman_image_create_bits_no_clear() API + + When pixman_image_create_bits() function is given NULL for bits, it + will allocate a new buffer and initialize it to zero. However, in some + cases, only a small region of the image is actually used; in that case + it is wasteful to touch all of the memory. + + The new pixman_image_create_bits_no_clear() works exactly like + _create_bits() except that it doesn't initialize any newly allocated + memory. + +commit af803be17b4ea5f53db9af57b6c6ef06db99ebbd +Author: Benny Siegert <[email protected]> +Date: Sun Oct 14 16:28:48 2012 +0200 + + configure.ac: PIXMAN_LINK_WITH_ENV fix + + (fixes bug #52101) + + On MirBSD, the compiler produces a (harmless) warning when the compiler + is called without the standard CFLAGS: + + foo.c:0: note: someone does not honour COPTS correctly, passed 0 times + + However, PIXMAN_LINK_WITH_ENV considers _any_ output on stderr as an + error, even if the exit status of the compiler is 0. Furthermore, it + resets CFLAGS and LDFLAGS at the start. On MirBSD, this will lead to a + warning in each test, making all such tests fail. In particular, the + pthread_setspecific test fails, thus pixman is compiled without thread + support. This leads to compile errors later on, or at least it did when + I tried this on pkgsrc. Re-adding the saved CFLAGS, LDFLAGS and LIBS + before the test makes it work. + + The second hunk inverts the order of the pthread flag checks. On BSD + systems (this is true at least on OpenBSD and MirBSD), both -lpthread + and -pthread work but the latter is "preferred", whatever this means. + +commit 6e56098c0338ce74228187e4c96fed1a66cb0956 +Author: Siarhei Siamashka <[email protected]> +Date: Sat Sep 29 02:29:22 2012 +0300 + + Add missing force_inline to in() function used for C fast paths + +commit 90bcafa495c1074b0ea1d35f99aa4837917494bd +Author: Siarhei Siamashka <[email protected]> +Date: Sun Jul 8 23:10:00 2012 +0300 + + MIPS: skip runtime detection for DSPr2 if -mdspr2 option is in CFLAGS + + This provides a way to enable MIPS DSP ASE optimizations if running + under qemu-user (where /proc/cpuinfo contains information about the + host processor instead of the emulated one). Can be used for running + pixman test suite in qemu-user when having no access to real MIPS + hardware. + +commit d5f2f39319fc358cccda60abe0bc927bd27131c1 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Oct 11 04:04:04 2012 -0400 + + region: Remove overlap argument from pixman_op() + + This is used to compute whether the regions in question overlap, but + nothing makes use of this information, so it can be removed. + +commit cb4f325ec0e844008075fe89ceb9f634ae41e7c9 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Oct 11 04:07:00 2012 -0400 + + region: Formatting fix + + The while part of a do/while loop was formatted as if it were a while + loop with an empty body. Probably some indent tool misinterpreted the + code at some point. + +commit 15b153d633fcfce886c30fee98599fddbf019ee8 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sun Oct 7 17:58:32 2012 -0400 + + Only regard images as pixbufs if they have identity transformations + + In order for a src/mask pair to be considered a pixbuf, they have to + have identical transformations, but we don't check for that. Since the + only fast paths we have for pixbufs require identity transformations, + it sufficies to check that both source and mask are + untransformed. + + This is also the reason that this bug can't be triggered by any test + code - if the source and mask had different transformations, we would + consider them a pixbuf, but then wouldn't take the fast path because + at least one of the transformations would be different from the + identity. + +commit 3d81d89c292058522cce91338028d9b4c4a23c24 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Oct 4 12:41:08 2012 -0400 + + Remove BUILT_SOURCES + + pixman-combine32.[ch] were the only built sources, so BUILT_SOURCES + can now be removed. + +commit ec7aa11a6e4d0d02df9b339dfce9460dce954602 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sun Sep 23 03:52:34 2012 -0400 + + Speed up pixman_expand_to_float() + + GCC doesn't move the divisions out of the loop, so do it manually by + looking up the four (1.0f / mask) values in a table. Table lookups are + used under the theory that one L2 hit plus three L1 hits is preferable + to four floating point divisions. + +commit 8ccda2be30adf9dfcc3087b38a5062258324dcce +Author: Søren Sandmann Pedersen <[email protected]> +Date: Fri Sep 21 18:36:16 2012 -0400 + + Don't auto-generate pixman-combine32.[ch] anymore + + Since pixman-combine64.[ch] are not used anymore, there is no point + generating these files from pixman-combine.[ch].template. + + Also get rid of dependency on perl in configure.ac. + +commit 4afd20cc71ba75190ebcead774b946157d0995a6 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Aug 18 14:39:29 2012 -0400 + + Remove 64 bit pipeline + + The 64 bit pipeline is not used anymore, so it can now be removed. + + Don't generate pixman-combine64.[ch] anymore. Don't generate the + pixman-srgb.c anymore. Delete all the 64 bit fetchers in + pixman-access.c, all the 64 bit iterator functions in + pixman-bits-image.c and all the functions that expand from 8 to 16 + bits. + +commit 5ff0bbd9721bb216a8332cbde18adc458af3cdec +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Aug 18 14:11:07 2012 -0400 + + Switch the wide pipeline over to using floating point + + In pixman-bits-image.c, remove bits_image_fetch_untransformed_64() and + add bits_image_fetch_untransformed_float(); change + dest_get_scanline_wide() to produce a floating point buffer, + + In the gradients, change *_get_scanline_wide() to call + pixman_expand_to_float() instead of pixman_expand(). + + In pixman-general.c change the wide Bpp to 16 instead of 8, and + initialize the buffers to 0 to prevent NaNs from causing trouble. + + In pixman-noop.c make the wide solid iterator generate floating point + pixels. + + In pixman-solid-fill.c, cache a floating point pixel, and make the + wide iterator generate floating point pixels. + + Bug fix in bits_image_fetch_untransformed_repeat_normal + +commit e75bacc5f9196c3980ce331c7d53de5b7e92d699 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Aug 18 13:22:15 2012 -0400 + + pixman-access.c: Add floating point accessor functions + + Three new function pointer fields are added to bits_image_t: + + fetch_scanline_float + fetch_pixel_float + store_scanline_float + + similar to the existing 32 and 64 bit accessors. The fetcher_info_t + struct in pixman_access similarly gets a new get_scanline_float field. + + For most formats, the new get_scanline_float field is set to a new + function fetch_scanline_generic_float() that first calls the 32 bit + fetcher uses the 32 bit scanline fetcher and then expands these pixels + to floating point. + + For the 10 bpc formats, new floating point accessors are added that + use pixman_unorm_to_float() and pixman_float_to_unorm() to convert + back and forth. + + The PIXMAN_a8r8g8b8_sRGB format is handled with a 256-entry table that + maps 8 bit sRGB channels to linear single precision floating point + numbers. The sRGB->linear direction can then be done with a simple + table lookup. + + The other direction is currently done with 4096-entry table which + works fine for 16 bit integers, but not so great for floating + point. So instead this patch uses a binary search in the sRGB->linear + table. The existing 32 bit accessors for the sRGB format are also + converted to use this method. + +commit 23252393a2dcae4dc5a7d03727dd66cdd81286ba +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Aug 18 13:02:31 2012 -0400 + + pixman-utils.c, pixman-private.h: Add floating point conversion routines + + A new struct argb_t containing a floating point pixel is added to + pixman-private.h and conversion routines are added to pixman-utils.c + to convert normalized integers to and from that struct. + + New functions: + + - pixman_expand_to_float() + Expands a buffer of integer pixels to a buffer of argb_t pixels + + - pixman_contract_from_float() + Converts a buffer of argb_t pixels to a buffer integer pixels + + - pixman_float_to_unorm() + Converts a floating point number to an unsigned normalized integer + + - pixman_unorm_to_float() + Converts an unsigned normalized integer to a floating point number + +commit 4760599ff3008ab0f1e36a7d4d362362817fd930 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sun Sep 9 17:56:53 2012 -0400 + + Add combiner test + + This test runs the new floating point combiners on random input with + divide-by-zero exceptions turned on. + + With the floating point combiners the only thing we guarantee is that + divide-by-zero exceptions are not generated, so change + enable_fp_exceptions() to only enable those, and rename accordingly. + +commit a5b459114e35c7a946362f1e5857e8a87a403ec3 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Fri May 14 00:42:04 2010 -0400 + + Add pixman-combine-float.c + + This file contains floating point implementations of combiners for all + pixman operators. These combiners operate on buffers containing single + precision floating point pixels stored in (a, r, g, b) order. + + The combiners are added to the pixman_implementation_t struct, but + nothing uses them yet. + + This commit incorporates a number of bug fixes contributed by Andrea + Canciani. + + Some notes: + + - The combiners are making sure to never divide by zero regardless of + input, so an application could enable divide-by-zero exceptions and + pixman wouldn't generate any. + + - The operators are implemented according to the Render spec. Ie., + + - If the input pixels are between 0 and 1, then so is the output. + + - The source and destination coefficients for the conjoint and + disjoint operators are clamped to [0, 1]. + + - The PDF operators are not described in the render spec, and the + implementation here doesn't do any clamping except in the final + conversion from floating point to destination format. + + All of the above will need to be rethought if we add support for pixel + formats that can support negative and greater-than-one pixels. It is + in fact already the case in principle that convolution filters can + produce pixels with negative values, but since these go through the + broken "wide" path that narrows everything to 32 bits, these negative + values don't currently survive to the combiners. + +commit 7a9c2d586b2349b5e17966a96d7fe8c390abb75a +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Jun 2 00:15:54 2012 -0400 + + blitters-test: Prepare for floating point + + Comment out some formats in blitters-test that are going to rely on + floating point in some upcoming patches. + +commit 600a06c81d3999bc6551c7e889726ed7b8bec84d +Author: Søren Sandmann Pedersen <[email protected]> +Date: Wed Jul 11 03:27:49 2012 -0400 + + glyph-test: Prepare for floating point + + In preparation for an upcoming change of the wide pipe to use floating + point, comment out some formats in glyph-test that are going to be + using floating point and update the CRC32 value to match. + +commit 2e17b6dd4ee7c32684fb7ffc70d3ad3ebf7cb2ef +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 29 10:34:17 2012 -0400 + + Make pixman.h more const-correct + + Add const to pointer arguments when the function doesn't change the + pointed-to data. + + Also in add_glyphs() in pixman-glyph.c make 'white' in add_glyphs() + static and const. + +commit 183afcf1d95625a1f237ef349a1c8931d94d000d +Author: Matt Turner <[email protected]> +Date: Sun Sep 30 11:59:23 2012 -0700 + + iwmmxt: Don't define dummy _mm_empty for >=gcc-4.8 + + Definition was not present in <4.8. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55451 + +commit d4b72eb6ccc1f004efedbc6552ee22499350be4d +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 29 18:15:54 2012 -0400 + + rotate-test: Call image_endian_swap() in make_image() + + Otherwise the test fails on big-endian. + + Tested-by: Matt Turner <[email protected]> + +commit aff796d6cee4cb81f0352c2f7d0c994229bd5ca1 +Author: Siarhei Siamashka <[email protected]> +Date: Mon Jun 25 22:36:52 2012 -0400 + + Add scaled nearest repeat fast paths + + Before this patch it was often faster to scale and repeat + in two passes because each pass used a fast path vs. + the slow path that the single pass approach takes. This + makes it so that the single pass approach has competitive + performance. + +commit 05560828c495ed9226b43b30e1824447e3d8eff3 +Author: Matt Turner <[email protected]> +Date: Fri Sep 21 16:34:24 2012 -0700 + + sse2: mark pack_565_2x128_128 as static force_inline + +commit de60e2e0e3eb6084f8f14b63f25b3cbfb012943f +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 15 03:13:09 2012 -0400 + + Fix for infinite-loop test + + The infinite loop detected by "affine-test 212944861" is caused by an + overflow in this expression: + + max_x = pixman_fixed_to_int (vx + (width - 1) * unit_x) + 1; + + where (width - 1) * unit_x doesn't fit in a signed int. This causes + max_x to be too small so that this: + + src_width = 0 + + while (src_width < REPEAT_NORMAL_MIN_WIDTH && src_width <= max_x) + src_width += src_image->bits.width; + + results in src_width being 0. Later on when src_width is used for + repeat calculations, we get the infinite loop. + + By casting unit_x to int64_t, the expression no longer overflows and + affine-test 212944861 and infinite-loop no longer loop forever. + +commit aa311a4641b79eac39fe602b75d7bee3de9b1dce +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Sep 13 19:31:29 2012 -0400 + + test: Add inifinite-loop test + + This test demonstrates a bug where a certain transformation matrix can + result in an infinite loop. It was extracted as a standalone version + of "affine-test 212944861". + + If given the option -nf, the test program will not call fail_after() + and therefore potentially run forever. + +commit d5c721768c9811ce22bc0cd50bdf1c7bccc264e0 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Sep 13 19:29:19 2012 -0400 + + affine-test: Print out the transformation matrix when verbose + + Printing out the translation and scale is a bit misleading because the + actual transformation matrix can be modified in various other ways. + + Instead simply print the whole transformation matrix that is actually + used. + +commit 292fce7a230dd253fff71bd1bb2fbf9b7996a892 +Author: Nemanja Lukic <[email protected]> +Date: Fri Sep 14 09:31:26 2012 +0200 + + MIPS: DSPr2: Added OVER combiner and two new fast paths: - over_8888_8888 - over_8888_8888_8888 + + Performance numbers before/after on MIPS-74kc @ 1GHz: + + lowlevel-blt-bench results + + Referent (before): + over_8888_8888 = L1: 19.61 L2: 17.10 M: 11.16 ( 59.20%) HT: 16.47 VT: 15.81 R: 14.82 RT: 8.90 ( 50Kops/s) + over_8888_8888_8888 = L1: 13.56 L2: 11.22 M: 7.46 ( 79.18%) HT: 6.24 VT: 6.20 R: 6.11 RT: 3.95 ( 29Kops/s) + + Optimized: + over_8888_8888 = L1: 46.42 L2: 36.70 M: 16.69 ( 88.57%) HT: 17.11 VT: 16.55 R: 15.31 RT: 9.48 ( 52Kops/s) + over_8888_8888_8888 = L1: 26.06 L2: 22.53 M: 11.49 (121.91%) HT: 9.93 VT: 9.62 R: 9.19 RT: 5.75 ( 36Kops/s) + +commit 28c9bd4866088a017a0cdf3f0fb47467b97bbc29 +Author: Nemanja Lukic <[email protected]> +Date: Fri Sep 14 09:31:25 2012 +0200 + + MIPS: DSPr2: Added fast-paths for OVER operation: - over_0565_n_0565 - over_0565_8_0565 + + Performance numbers before/after on MIPS-74kc @ 1GHz: + + lowlevel-blt-bench results + + Referent (before): + over_0565_n_0565 = L1: 7.56 L2: 7.24 M: 6.16 ( 16.38%) HT: 4.01 VT: 3.84 R: 3.79 RT: 1.66 ( 18Kops/s) + over_0565_8_0565 = L1: 7.43 L2: 7.05 M: 5.98 ( 23.85%) HT: 5.27 VT: 5.23 R: 5.09 RT: 3.14 ( 28Kops/s) + + Optimized: + over_0565_n_0565 = L1: 15.47 L2: 14.52 M: 12.30 ( 32.65%) HT: 10.76 VT: 10.57 R: 10.27 RT: 6.63 ( 46Kops/s) + over_0565_8_0565 = L1: 15.47 L2: 14.61 M: 11.78 ( 46.92%) HT: 10.00 VT: 9.84 R: 9.40 RT: 5.81 ( 43Kops/s) + +commit b660eb30b4e5f690d191b26a500a6ba224986b3a +Author: Nemanja Lukic <[email protected]> +Date: Fri Sep 14 09:31:24 2012 +0200 + + MIPS: DSPr2: Added fast-paths for OVER operation: - over_8888_n_0565 - over_8888_8_0565 + + Performance numbers before/after on MIPS-74kc @ 1GHz: + + lowlevel-blt-bench results + + Referent (before): + over_8888_n_0565 = L1: 8.95 L2: 8.33 M: 6.95 ( 27.74%) HT: 4.27 VT: 4.07 R: 4.01 RT: 1.74 ( 19Kops/s) + over_8888_8_0565 = L1: 8.86 L2: 8.11 M: 6.72 ( 35.71%) HT: 5.68 VT: 5.62 R: 5.47 RT: 3.35 ( 30Kops/s) + + Optimized: + over_8888_n_0565 = L1: 18.76 L2: 17.55 M: 13.11 ( 52.19%) HT: 11.35 VT: 11.10 R: 10.88 RT: 6.94 ( 47Kops/s) + over_8888_8_0565 = L1: 18.14 L2: 16.79 M: 12.10 ( 64.25%) HT: 10.24 VT: 9.98 R: 9.63 RT: 5.89 ( 43Kops/s) + +commit 37e3368e20cee42f1e1039bb112ed9a09d21156f +Author: Nemanja Lukic <[email protected]> +Date: Fri Sep 14 09:31:23 2012 +0200 + + MIPS: DSPr2: Added fast-paths for OVER operation: - over_8888_n_8888 - over_8888_8_8888 + + Performance numbers before/after on MIPS-74kc @ 1GHz: + + lowlevel-blt-bench results + + Referent (before): + over_8888_n_8888 = L1: 9.92 L2: 11.27 M: 8.50 ( 45.23%) HT: 4.70 VT: 4.45 R: 4.49 RT: 1.85 ( 20Kops/s) + over_8888_8_8888 = L1: 12.54 L2: 10.86 M: 8.18 ( 54.36%) HT: 6.53 VT: 6.45 R: 6.41 RT: 3.83 ( 33Kops/s) + + Optimized: + over_8888_n_8888 = L1: 28.02 L2: 24.92 M: 14.72 ( 78.15%) HT: 13.03 VT: 12.65 R: 12.00 RT: 7.49 ( 49Kops/s) + over_8888_8_8888 = L1: 26.92 L2: 23.93 M: 13.65 ( 90.58%) HT: 11.68 VT: 11.29 R: 10.56 RT: 6.37 ( 45Kops/s) + +commit f580c4c5b2a435ebe2751ce0dace6c42568557f8 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Fri Sep 21 16:52:16 2012 -0400 + + pixman-combine.c.template: Formatting clean-ups + + Various formatting fixes, and removal of some obsolete comments about + strength reduction of operators. + +commit 58f8704664d1f8c812a85b929a50818f213a8438 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Sep 20 21:43:24 2012 -0400 + + Fix bugs in pixman-image.c + + In the checks for whether the transforms are rotation matrices "-1" + and "1" were used instead of the correct -pixman_fixed_1 and + pixman_fixed_1. + + Fixes test suite failure for rotate-test. + +commit 550dfc5e7ecd5b099c1009d77c56cb91a62caeb1 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Thu Sep 20 18:41:33 2012 -0400 + + Add rotate-test.c test program + + This program exercises a bug in pixman-image.c where "-1" and "1" were + used instead of the correct "- pixman_fixed_1" and "pixman_fixed_1". + + With the fast implementation enabled: + + % ./rotate-test + rotate test failed! (checksum=35A01AAB, expected 03A24D51) + + Without it: + + % env PIXMAN_DISABLE=fast ./rotate-test + pixman: Disabled fast implementation + rotate test passed (checksum=03A24D51) + + V2: The first version didn't have lcg_srand (testnum) in test_transform(). + +commit 2ab77c97a5a3a816d6383bdc3b6c8bdceb0383b7 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Wed Sep 19 12:04:11 2012 -0400 + + Fix bugs in component alpha combiners for separable PDF operators + + In general, the component alpha version of an operator is supposed to + do this: + + - multiply source with mask in all channels + - multiply mask with source alpha in all channels + - compute the regular operator in all channels using the + mask value whenever source alpha is called for + + The first two steps are usually accomplished with the function + combine_mask_ca(), but for operators where source alpha is not used, + such as SRC, ADD and OUT, the simpler function + combine_mask_value_ca(), which doesn't compute the new mask values, + can be used. + + However, the PDF blend modes generally *do* make use of source alpha, + so they can't use combine_mask_value_ca() as they do now. They have to + use combine_mask_ca(). + + This patch fixes this in combine_multiply_ca() and the CA combiners + generated by PDF_SEPARABLE_BLEND_MODE. + +commit c4b69e706e63e01fbc70e0026c2079007c89de14 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Wed Sep 19 19:46:13 2012 -0400 + + Fix bug in fast_composite_scaled_nearest() + + The fast_composite_scaled_nearest() function can be called when the + format is x8b8g8r8. In that case pixels fetched in fetch_nearest() + need to have their alpha channel set to 0xff. + + Fixes test suite failure in scaling-test. + + Reviewed-by: Matt Turner <[email protected]> + +commit 35be7acb660228d4e350b5806c81e55606352e0d +Author: Søren Sandmann Pedersen <[email protected]> +Date: Wed Sep 19 19:26:49 2012 -0400 + + Add PIXMAN_x8b8g8r8 and PIXMAN_a8b8g8r8 formats to scaling-test + + Update the CRC values based on what the general implementation + reports. This reveals a bug in the fast implementation: + + % env PIXMAN_DISABLE="mmx sse2" ./test/scaling-test + pixman: Disabled mmx implementation + pixman: Disabled sse2 implementation + scaling test failed! (checksum=AA722B06, expected 03A23E0C) + + vs. + + % env PIXMAN_DISABLE="mmx sse2 fast" ./test/scaling-test + pixman: Disabled fast implementation + pixman: Disabled mmx implementation + pixman: Disabled sse2 implementation + scaling test passed (checksum=03A23E0C) + + Reviewed-by: Matt Turner <[email protected]> + +commit 9decb9a97975ae6bf25a42c0fd2eaa21b166c36d +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 15 19:10:56 2012 -0400 + + implementation: Rename delegate to fallback + + At this point the chain of implementations has nothing to do with the + delegation design pattern anymore, so rename the delegate pointer to + 'fallback'. + +commit b96599ccf353e89f95aa106853fcf310203c5874 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 15 13:58:45 2012 -0400 + + _pixman_implementation_create(): Initialize implementation with memset() + + All the function pointers are NULL by default now, so we can just zero + the struct. Also write the function a little more compactly. + +commit 9539a18832c278ca0f6f572d8765932be6c9ad65 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 15 13:53:17 2012 -0400 + + Rename _pixman_lookup_composite_function() to _pixman_implementation_lookup_composite() + + And move it into pixman-implementation.c which is where it belongs + logically. + +commit ee6af72dadaf9eb049bfeb35dc9ff57c3902403a +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 15 13:20:52 2012 -0400 + + Move delegation of src/dest iter init into pixman-implementation.c + + Instead of relying on each implementation to delegate when an iterator + can't be initialized, change the type of iterator initializers to + boolean and make pixman-implementation.c do the delegation whenever an + iterator initializer returns FALSE. + +commit c710d0fae2a9dc7d20913e5e39a1bb53f7c942db +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 15 13:08:51 2012 -0400 + + Move fill delegation into pixman-implementation.c + + As in the blt commit, do the delegation in pixman-implementation.c + whenever the implementation fill returns FALSE instead of relying on + each implementation to do it by itself. + + With this change there is no longer any reason for the implementations + to have one fill function that delegates and one that actually blits, + so consolidate those in the NEON, DSPr2, SSE2, and MMX + implementations. + +commit 534507ba3b00b9aaadc9f181c282b01e4e2fe415 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 15 13:03:10 2012 -0400 + + Move blt delegation into pixman-implementation.c + + Rather than require each individual implementation to do the + delegation for blt, just do it in pixman-implementation.c whenever the + implementation blt returns FALSE. + + With this change, there is no longer any reason for the + implementations to have one blt function that delegates and one that + actually blits, so consolidate those in the NEON, DSPr2, SSE2, and MMX + implementations. + +commit 7ef4436abbdb898dc656ebb5832ed5d6fd764bba +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Sep 15 12:48:42 2012 -0400 + + implementation: Write lookup_combiner() in a less convoluted way. + + Instead of initializing an array on the stack, just use a simple + switch to select which set of combiners to look up in. + +commit 3124a51abb89475b8c5045bc96e04c5852694a16 +Author: Matt Turner <[email protected]> +Date: Sun Sep 16 00:25:38 2012 -0400 + + build: Remove useless DEP_CFLAGS/DEP_LIBS variables + +commit 46e4faf8ef34d49f15e1946d105289fb06365553 +Author: Andrea Canciani <[email protected]> +Date: Thu Jun 21 06:07:07 2012 +0200 + + build: Improve win32 build system + + Handle cross-directory dependencies using PHONY targets and clean up + some redundancies. + +commit c89efdd211cf7cd3dc69a4140045ceab6f445730 +Author: Andrea Canciani <[email protected]> +Date: Tue Jul 17 16:14:20 2012 +0200 + + mmx: Fix x86 build on MSVC + + The MSVC compiler is very strict about variable declarations after + statements. + + Move all the declarations of each block before any statement in + the same block to fix multiple instances of: + + pixman-mmx.c(xxxx) : error C2275: '__m64' : illegal use of this type + as an expression + +commit 1e3e569b04f45592ce2174e48df0fcb333ce0ad3 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sun Aug 26 18:23:53 2012 -0400 + + test/utils.c: Use pow(), not powf() in sRGB conversion routines + + These functions are operating on double precision values, so use pow() + instead of powf(). + +commit 8577daba04e60c1b4c44ce01c6874a573952913a +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sun Aug 26 18:13:47 2012 -0400 + + pixel_checker: Move sRGB conversion into get_limits() + + The sRGB conversion has to be done every time the limits are being + computed. Without this fix, pixel_checker_get_min/max() will produce + the wrong results when called from somewhere other than + pixel_checker_check(). + +commit 62eb6e5e054da498e38da80ba8143f0a069b0c17 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Aug 25 17:14:50 2012 -0400 + + Remove obsolete TODO file + +commit 384846b38cfb5e1895ae49c40adbf72a85b63d95 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sun Aug 19 13:45:21 2012 -0400 + + Remove pointless declaration of _pixman_image_get_scanline_generic_64() + + This declaration used to be necessary when + _pixman_image_get_scanline_generic_64() referred to a structure that + itself referred back to _pixman_image_get_scanline_generic_64(). + +commit 09cb1ae10b1976970233c934d27c36e0a4203e1c +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Jun 9 09:15:53 2012 -0400 + + demos: Add srgb_trap_test.c + + This demo program composites a bunch of trapezoids side by side with + and without gamma aware compositing. + +commit 04e878c231ad3624c57e51a5fcdc55a177d4dc0f +Author: Søren Sandmann Pedersen <[email protected]> +Date: Sat Jun 9 09:42:56 2012 -0400 + + Make show_image() cope with more formats + + This makes show_image() deal with more formats than just a8r8g8b8, in + particular, a8r8g8b8_sRGB can now be handled. + + Images that are passed to show_image with a format of a8r8g8b8_sRGB + are displayed without modification under the assumption that the + monitor is approximately sRGB. + + Images with a format of a8r8g8b8 are also displayed without + modification since many other users of show_image() have been + generating essentially sRGB data with this format. Other formats are + also assumed to be gamma compressed; these are converted to a8r8g8b8 + before being displayed. + + With these changes, srgb-test.c doesn't need to do its own conversion + anymore. + +commit 8db9ec9814a3dcd8211ec60cd4fd3c9ae9d77924 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Tue Jul 31 15:01:16 2012 -0400 + + Define TIMER_BEGIN and TIMER_END even when timers are not enabled + + This allows code that uses these macros to build when timers are + disabled. + +commit da5268cc19e03b24737dec3e2c51296156b869a8 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Wed Aug 1 15:56:13 2012 -0400 + + Post-release version bump to 0.27.3 + +commit e8ddef78b67a0699a990f3c785396d4b1955f972 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Wed Aug 1 15:22:57 2012 -0400 + + Pre-release version bump to 0.27.2 + +commit c214ca51a00fdd0e773ace32076c3ed8a5d0d482 +Author: Sebastian Bauer <[email protected]> +Date: Tue Jul 31 07:30:32 2012 +0200 + + Use angle brackets form of including config.h + +commit 98617b3796d12c18d8306cca590160caa3c95454 +Author: Sebastian Bauer <[email protected]> +Date: Tue Jul 31 07:30:31 2012 +0200 + + Added HAVE_CONFIG_H check before including config.h + +commit 5b0563f39eb29e4ae431717696174da5e282c346 +Author: Søren Sandmann Pedersen <[email protected]> +Date: Mon Jul 30 16:21:39 2012 -0400 + + glyph-test: Avoid setting solid images as alpha maps. + + glyph-test would sometimes set a solid image as an alpha map, which is -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

