diff options
-rw-r--r-- | lib/pixman/ChangeLog | 1181 |
1 files changed, 1165 insertions, 16 deletions
diff --git a/lib/pixman/ChangeLog b/lib/pixman/ChangeLog index bb9e1eb48..e62658980 100644 --- a/lib/pixman/ChangeLog +++ b/lib/pixman/ChangeLog @@ -1,16 +1,987 @@ -commit f8a0812b1c4d5a4e24939da5ad6229f5adcafb34 +commit 4b3a66b05ed69507b297ed62574fc97eb9472e1e +Author: Matt Turner <mattst88@gmail.com> +Date: Sun Nov 17 17:46:52 2013 -0800 + + Pre-release version bump to 0.32.4 + +commit 97a655d5cafc07e9185155c885b2d4564986ef85 +Author: Søren Sandmann <ssp@redhat.com> +Date: Sat Nov 16 18:57:01 2013 -0500 + + test/utils.c: Make the stack unaligned only on 32 bit Windows + + The call_test_function() contains some assembly that deliberately + causes the stack to be aligned to 32 bits rather than 128 bits on + x86-32. The intention is to catch bugs that surface when pixman is + called from code that only uses a 32 bit alignment. + + However, recent versions of GCC apparently make the assumption (either + accidentally or deliberately) that that the incoming stack is aligned + to 128 bits, where older versions only seemed to make this assumption + when compiling with -msse2. This causes the vector code in the PRNG to + now segfault when called from call_test_function() on x86-32. + + This patch fixes that by only making the stack unaligned on 32 bit + Windows, where it would definitely be incorrect for GCC to assume that + the incoming stack is aligned to 128 bits. + + V2: Put "defined(...)" around __GNUC__ + + Reviewed-and-Tested-by: Matt Turner <mattst88@gmail.com> + Bugzilla: https://bugs.gentoo.org/show_bug.cgi?id=491110 + (cherry picked from commit f473fd1e7553a4e92a0d72bea360f05d005c9a88) + +commit 5a313af74e9afe7524909c019daebfded3bef1fa +Author: Jakub Bogusz <qboosh@pld-linux.org> +Date: Tue Nov 12 12:59:42 2013 -0800 + + Fix the SSSE3 CPUID detection. + + SSSE3 is detected by bit 9 of ECX, but we were checking bit 9 of EDX + which is APIC leading to SSSE3 routines being called on CPUs without + SSSE3. + + Reviewed-by: Matt Turner <mattst88@gmail.com> + (cherry picked from commit 8487dfbcd056eff066939dc253fcf361b391592a) + +commit 917a52003d0705ac0076bd1ed4e390374f56c262 +Author: Søren Sandmann <ssp@redhat.com> +Date: Mon Nov 11 19:55:18 2013 -0500 + + Post-release version bump to 0.32.3 + +commit a980f83a6827109aad789d4c8c664f2770d0aaa1 +Author: Søren Sandmann <ssp@redhat.com> +Date: Mon Nov 11 19:44:54 2013 -0500 + + Pre-release version bump to 0.32.2 + +commit e2e381702172abfd50b48a73cd183635e138ff99 +Author: Søren Sandmann <ssp@redhat.com> +Date: Mon Nov 11 19:13:31 2013 -0500 + + demos/Makefile.am: Move EXTRA_DIST outside "if HAVE_GTK" + + Without this, if tarballs are generated on a system that doesn't have + GTK+ 2 development headers available, the files in EXTRA_DIST will not + be included, which then causes builds from the tarball to fail on + systems that do have GTK+ 2 headers available. + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=71465 + +commit 950d1310f7c6db202a1a4eaf4761667968b81645 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 11 11:21:23 2013 +0100 + + test: Fix the win32 build + + The win32 build has no config.h, so HAVE_CONFIG_H should be checked + before including it, as in utils.h. + +commit 7a00965d7aa861da39a781ea2df1b5f54c48dbb7 +Author: Søren Sandmann <ssp@redhat.com> +Date: Mon Nov 11 19:07:19 2013 -0500 + + Post-release version bump to 0.32.1 + +commit 895e7e05b7a51a8d578c523bf6c0c6649e06ab5e +Author: Søren Sandmann <ssp@redhat.com> +Date: Sun Nov 10 18:05:47 2013 -0500 + + Pre-release version bump to 0.32.0 + +commit 8cbc7da4e525c96a8e089e4c1baee75dc8315218 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Nov 1 20:52:00 2013 -0400 + + Post-release version bump to 0.31.3 + +commit 99e8605be08d4fa46eabf76355fc4e953f60b44f +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Nov 1 20:39:46 2013 -0400 + + Pre-release version bump to 0.31.2 + +commit 5e14da97f16e421d084a9e735be21b1025150f0c +Author: Ritesh Khadgaray <khadgaray@gmail.com> +Date: Wed Oct 23 17:29:07 2013 -0400 + + pixman_trapezoid_valid(): Fix underflow when bottom is close to MIN_INT + + If t->bottom is close to MIN_INT (probably invalid value), subtracting + top can lead to underflow which causes crashes. Attached patch will + fix the issue. + + This fixes bug 67484. + +commit 2f876cf86718d3dd9b3b04ae9552530edafe58a1 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Oct 23 17:28:11 2013 -0400 + + test/trap-crasher.c: Add trapezoid that demonstrates a crash + + This trapezoid causes a crash due to an underflow in the + pixman_trapezoid_valid(). + + Test case from Ritesh Khadgaray. + +commit 8ef7e0d18e00291da14c69d3034896235875d019 +Author: Brad Smith <brad@comstyle.com> +Date: Thu Oct 17 23:22:02 2013 -0400 + + Fix pixman build with older GCC releases + + The following patch fixes building pixman with older GCC releases + such as GCC 3.3 and older (OpenBSD; some older archs use GCC 3.3.6) + by changing the method of detecting the presence of __builtin_clz + to utilizing an autoconf check to determine its presence. Compilers + that pretend to be GCC, implement __builtin_clz and are already + utilizing the intrinsic include LLVM/Clang, Open64, EKOPath and + PCC. + +commit 3c2f4b651747c1ac484c39d5128cae5483094342 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Oct 11 00:49:44 2013 -0400 + + pixman-glyph.c: Add __force_align_arg_pointer to composite functions + + The functions pixman_composite_glyphs_no_mask() and + pixman_composite_glyphs() can call into code compiled with -msse2, + which requires the stack to be aligned to 16 bytes. Since the ABIs on + Windows and Linux for x86-32 don't provide this guarantee, we need to + use this attribute to make GCC generate a prologue that realigns the + stack. + + This fixes the crash introduced in the previous commit and also + + https://bugs.freedesktop.org/show_bug.cgi?id=70348 + + and + + https://bugs.freedesktop.org/show_bug.cgi?id=68300 + +commit 3dce229772354877ef297dd9979097fe8ebaebf4 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Oct 2 14:38:16 2013 -0400 + + utils.c: On x86-32 unalign the stack before calling test_function + + GCC when compiling with -msse2 and -mssse3 will assume that the stack + is aligned to 16 bytes even on x86-32 and accordingly issue movdqa + instructions for stack allocated variables. + + But despite what GCC thinks, the standard ABI on x86-32 only requires + a 4-byte aligned stack. This is true at least on Windows, but there + also was (and maybe still is) Linux code in the wild that assumed + this. When such code calls into pixman and hits something compiled + with -msse2, we get a segfault from the unaligned movdqas. + + Pixman has worked around this issue in the past with the gcc attribute + "force_align_arg_pointer" but the problem has resurfaced now in + + https://bugs.freedesktop.org/show_bug.cgi?id=68300 + + because pixman_composite_glyphs() is missing this attribute. + + This patch makes fuzzer_test_main() call the test_function through a + trampoline, which, on x86-32, has a bit of assembly that deliberately + avoids aligning the stack to 16 bytes as GCC normally expects. The + result is that glyph-test now crashes. + + V2: Mark caller-save registers as clobbered, rather than using + noinline on the trampoline. + +commit 9e81419ed5c0ee490ddacf7bada516a25cae87eb +Author: Siarhei Siamashka <siarhei.siamashka@gmail.com> +Date: Sat Oct 5 22:00:26 2013 +0300 + + configure.ac: check and use -Wdeclaration-after-statement GCC option + + The accidental use of declaration after statement breaks compilation + with C89 compilers such as MSVC. Assuming that MSVC is one of the + supported compilers, it makes sense to ask GCC to at least report + warnings for such problematic code. + +commit a863bbcce0924f8d4004a352c670a9f774012463 +Author: Siarhei Siamashka <siarhei.siamashka@gmail.com> +Date: Wed Oct 2 00:54:30 2013 +0000 + + sse2: bilinear fast path for src_x888_8888 + + Running cairo-perf-trace benchmark on Intel Core2 T7300: + + Before: + [ 0] image t-firefox-canvas-swscroll 1.989 2.008 0.43% 8/8 + [ 1] image firefox-canvas-scroll 4.574 4.609 0.50% 8/8 + + After: + [ 0] image t-firefox-canvas-swscroll 1.404 1.418 0.51% 8/8 + [ 1] image firefox-canvas-scroll 4.228 4.259 0.36% 8/8 + +commit 8f75f638ab03078546cc89edfbec4f6801b77e5e +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Oct 9 22:12:23 2013 -0400 + + configure.ac: Add check for pmulhuw assembly + + Clang 3.0 chokes on the following bit of assembly + + asm ("pmulhuw %1, %0\n\t" + : "+y" (__A) + : "y" (__B) + ); + + from pixman-mmx.c with this error message: + + fatal error: error in backend: Unsupported asm: input constraint + with a matching output constraint of incompatible type! + + So add a check in configure to only enable MMX when the compiler can + deal with it. + +commit 09a62d4dbc9a1a86ef7671c2abc9b7f753b86f64 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Oct 9 22:05:59 2013 -0400 + + scale.c: Use int instead of kernel_t for values in named_int_t + + The 'value' field in the 'named_int_t' struct is used for both + pixman_repeat_t and pixman_kernel_t values, so the type should be int, + not pixman_kernel_t. + + Fixes some warnings like this + + scale.c:124:33: warning: implicit conversion from enumeration + type 'pixman_repeat_t' to different enumeration type + 'pixman_kernel_t' [-Wconversion] + { "None", PIXMAN_REPEAT_NONE }, + ~ ^~~~~~~~~~~~~~~~~~ + + when compiled with clang. + +commit 93672438012b63f585dfcd76992099740e0500b8 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Oct 4 16:45:21 2013 -0400 + + pixman-combine32.c: Make Color Burn routine follow the math more closely + + For superluminescent destinations, the old code could underflow in + + uint32_t r = (ad - d) * as / s; + + when (ad - d) was negative. The new code avoids this problem (and + therefore causes changes in the checksums of thread-test and + blitters-test), but it is likely still buggy due to the use of + unsigned variables and other issues in the blend mode code. + +commit 105fa74faddcb83e7779c035f8c41ec4924acfd8 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Oct 4 16:40:17 2013 -0400 + + pixman-combine32: Make Color Dodge routine follow the math more closely + + Change blend_color_dodge() to follow the math in the comment more + closely. + + Note, the new code here is in some sense worse than the old code + because it can now underflow the unsigned variables when the source is + superluminescent and (as - s) is therefore negative. The old code was + careful to clamp to 0. + + But for superluminescent variables we really need the ability for the + blend function to become negative, and so the solution the underflow + problem is to just use signed variables. The use of unsigned variables + is a general problem in all of the blend mode code that will have to + be solved later. + + The CRC32 values in thread-test and blitters-test are updated to + account for the changes in output. + +commit 2527a72432adcaa9752a9138272d53063ee7484f +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Oct 4 16:35:35 2013 -0400 + + pixman-combine32: Rename a number of variable from sa/sca to as/s + + There are no semantic changes, just variables renames. The motivation + for these renames is so that the names are shorter and better match + the one used in the comments. + +commit eaa4778c42557c7cb9f081c861f8c22b24298db8 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Oct 4 16:27:39 2013 -0400 + + pixman-combine32: Improve documentation for blend mode operators + + This commit overhauls the comments in pixman-comine32.c regarding + blend modes: + + - Add a link to the PDF supplement that clarifies the specification of + ColorBurn and ColorDodge + + - Clarify how the formulas for premultiplied colors are derived form + the ones in the PDF specifications + + - Write out the derivation of the formulas in each blend routine + +commit 4bf1502fe81e740cb2bb8f0b538967513dd8e4e5 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Oct 4 16:40:23 2013 -0400 + + pixman-combine32.c: Formatting fixes + + Fix a bunch of spacing issues. + + V2: More spacing issues, in the _ca combiners + +commit 54be1a52f710b8b4abb05c074c066c389d8f89a8 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Oct 9 18:23:27 2013 +0200 + + Fix thread-test on non-OpenMP systems + + The non-reentrant versions of prng_* functions are thread-safe only in + OpenMP-enabled builds. + + Fixes thread-test failing when compiled with Clang (both on Linux and + on MacOS). + +commit 0af2fcaebc4835ecf52d6002fcaacb09cbbcbaad +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Sep 26 09:23:41 2013 +0200 + + Add support for SSSE3 to the MSVC build system + + Handle SSSE3 just like MMX and SSE2. + +commit e4d9c623d3baee50a5bfbc87cba81b0d2d87ee26 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Sep 26 09:26:17 2013 +0200 + + Fix build of check-formats on MSVC + + Fixes + + check-formats.obj : error LNK2019: unresolved external symbol + _strcasecmp referenced in function _format_from_string + + check-formats.obj : error LNK2019: unresolved external symbol + _snprintf referenced in function _list_operators + +commit 96ad6ebd8b8481aaa603d14953edb96504658eb7 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Sep 26 09:12:31 2013 +0200 + + Fix building of "other" programs on MSVC + + In d1434d112ca5cd325e4fb85fc60afd1b9e902786 the benchmarks have been + extended to include other programs as well and the variable names have + been updated accordingly in the autotools-based build system, but not + in the MSVC one. + +commit 31ac784f3427a189e34ef6fdc937441b613407b9 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Sep 26 09:16:41 2013 +0200 + + Fix build on MSVC + + After a4c79d695d52c94647b1aff78548e5892d616b70 the MMX and SSE2 code + has some declarations after the beginning of a block, which is not + allowed by MSVC. + + Fixes multiple errors like: + + pixman-mmx.c(3625) : error C2275: '__m64' : illegal use of this type + as an expression + + pixman-sse2.c(5708) : error C2275: '__m128i' : illegal use of this + type as an expression + +commit c89f4c826695dbb5df0817d84f845dbd3e28b7a7 Author: Søren Sandmann Pedersen <ssp@redhat.com> -Date: Wed Aug 7 10:07:35 2013 -0400 +Date: Wed Oct 2 17:51:36 2013 -0400 - Pre-release version bump to 0.30.2 + fast: Swap image and iter flags in generated fast paths + + The generated fast paths that were moved into the 'fast' + implementation in ec0e38cbb746a673f8e989ab8eae356c8c77dac7 had their + image and iter flag arguments swapped; as a result, none of the fast + paths were ever called. -commit b5167b8a5439d30bde8a178568cb3fe1c95b509a +commit 7d05a7f4dc825f9c778e534fdabb749199c2e439 +Author: Siarhei Siamashka <siarhei.siamashka@gmail.com> +Date: Sat Sep 28 04:51:21 2013 +0300 + + vmx: there is no need to handle unaligned destination anymore + + So the redundant variables, memory reads/writes and reshuffles + can be safely removed. For example, this makes the inner loop + of 'vmx_combine_add_u_no_mask' function much more simple. + + Before: + + 7a20:7d a8 48 ce lvx v13,r8,r9 + 7a24:7d 80 48 ce lvx v12,r0,r9 + 7a28:7d 28 50 ce lvx v9,r8,r10 + 7a2c:7c 20 50 ce lvx v1,r0,r10 + 7a30:39 4a 00 10 addi r10,r10,16 + 7a34:10 0d 62 eb vperm v0,v13,v12,v11 + 7a38:10 21 4a 2b vperm v1,v1,v9,v8 + 7a3c:11 2c 6a eb vperm v9,v12,v13,v11 + 7a40:10 21 4a 00 vaddubs v1,v1,v9 + 7a44:11 a1 02 ab vperm v13,v1,v0,v10 + 7a48:10 00 0a ab vperm v0,v0,v1,v10 + 7a4c:7d a8 49 ce stvx v13,r8,r9 + 7a50:7c 00 49 ce stvx v0,r0,r9 + 7a54:39 29 00 10 addi r9,r9,16 + 7a58:42 00 ff c8 bdnz+ 7a20 <.vmx_combine_add_u_no_mask+0x120> + + After: + + 76c0:7c 00 48 ce lvx v0,r0,r9 + 76c4:7d a8 48 ce lvx v13,r8,r9 + 76c8:39 29 00 10 addi r9,r9,16 + 76cc:7c 20 50 ce lvx v1,r0,r10 + 76d0:10 00 6b 2b vperm v0,v0,v13,v12 + 76d4:10 00 0a 00 vaddubs v0,v0,v1 + 76d8:7c 00 51 ce stvx v0,r0,r10 + 76dc:39 4a 00 10 addi r10,r10,16 + 76e0:42 00 ff e0 bdnz+ 76c0 <.vmx_combine_add_u_no_mask+0x120> + +commit b6c5ba06f0c5c0bd8d186e7a4879fd3b33e7e13f +Author: Siarhei Siamashka <siarhei.siamashka@gmail.com> +Date: Sat Sep 28 03:48:07 2013 +0300 + + vmx: align destination to fix valgrind invalid memory writes + + The SIMD optimized inner loops in the VMX/Altivec code are trying + to emulate unaligned accesses to the destination buffer. For each + 4 pixels (which fit into a 128-bit register) the current + implementation: + 1. first performs two aligned reads, which cover the needed data + 2. reshuffles bytes to get the needed data in a single vector register + 3. does all the necessary calculations + 4. reshuffles bytes back to their original location in two registers + 5. performs two aligned writes back to the destination buffer + + Unfortunately in the case if the destination buffer is unaligned and + the width is a perfect multiple of 4 pixels, we may have some writes + crossing the boundaries of the destination buffer. In a multithreaded + environment this may potentially corrupt the data outside of the + destination buffer if it is concurrently read and written by some + other thread. + + The valgrind report for blitters-test is full of: + + ==23085== Invalid write of size 8 + ==23085== at 0x1004B0B4: vmx_combine_add_u (pixman-vmx.c:1089) + ==23085== by 0x100446EF: general_composite_rect (pixman-general.c:214) + ==23085== by 0x10002537: test_composite (blitters-test.c:363) + ==23085== by 0x1000369B: fuzzer_test_main._omp_fn.0 (utils.c:733) + ==23085== by 0x10004943: fuzzer_test_main (utils.c:728) + ==23085== by 0x10002C17: main (blitters-test.c:397) + ==23085== Address 0x5188218 is 0 bytes after a block of size 88 alloc'd + ==23085== at 0x4051DA0: memalign (vg_replace_malloc.c:581) + ==23085== by 0x4051E7B: posix_memalign (vg_replace_malloc.c:709) + ==23085== by 0x10004CFF: aligned_malloc (utils.c:833) + ==23085== by 0x10001DCB: create_random_image (blitters-test.c:47) + ==23085== by 0x10002263: test_composite (blitters-test.c:283) + ==23085== by 0x1000369B: fuzzer_test_main._omp_fn.0 (utils.c:733) + ==23085== by 0x10004943: fuzzer_test_main (utils.c:728) + ==23085== by 0x10002C17: main (blitters-test.c:397) + + This patch addresses the problem by first aligning the destination + buffer at a 16 byte boundary in each combiner function. This trick + is borrowed from the pixman SSE2 code. + + It allows to pass the new thread-test on PowerPC VMX/Altivec systems and + also resolves the "make check" failure reported for POWER7 hardware: + http://lists.freedesktop.org/archives/pixman/2013-August/002871.html + +commit 0438435b9c915b61af21446b2cb2f77a2b98a3b9 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Sat Sep 28 01:10:24 2013 -0400 + + test: Add new thread-test program + + This test program allocates an array of 16 * 7 uint32_ts and spawns 16 + threads that each use 7 of the allocated uint32_ts as a destination + image for a large number of composite operations. Each thread then + computes and returns a checksum for the image. Finally, the main + thread computes a checksum of the checksums and verifies that it + matches expectations. + + The purpose of this test is catch errors where memory outside images + is read and then written back. Such out-of-bounds accesses are broken + when multiple threads are involved, because the threads will race to + read and write the shared memory. + + V2: + - Incorporate fixes from Siarhei for endianness and undefined behavior + regarding argument evaluation + - Make the images 7 pixels wide since the bug only happens when the + composite width is greater than 4. + - Compute a checksum of the checksums so that you don't have to + update 16 values if something changes. + + V3: Remove stray dollar sign + +commit 65829504073425362fc56995a1dcc8cc464b751a +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Sat Sep 28 01:03:55 2013 -0400 + + Rename HAVE_PTHREAD_SETSPECIFIC to HAVE_PTHREADS + + The test for pthread_setspecific() can be used as a general test for + whether pthreads are available, so rename the variable from + HAVE_PTHREAD_SETSPECIFIC to HAVE_PTHREADS and run the test even when + better support for thread local variables are available. + + However, the pthread arguments are still only added to CFLAGS and + LDFLAGS when pthread_setspecific() is used for thread local variables. + + V2: AC_SUBST(PTHREAD_CFLAGS) + +commit b513b3dffe979056dbbbdc8e0659f8018c51c5f5 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Sun Sep 29 16:47:53 2013 -0400 + + blitters-test: Remove unused variable + +commit fa0559eb710ef6252dea5a70ade28a2c167a7a85 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Thu Sep 26 18:56:07 2013 -0400 + + utils.c: Make image_endian_swap() deal with negative strides + + Use a temporary variable s containing the absolute value of the stride + as the upper bound in the inner loops. + + V2: Do this for the bpp == 16 case as well + +commit ff682089ce1128079c06827a80647fa3284ca2a2 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri Sep 20 02:45:32 2013 -0400 + + utils.c: Make print_image actually cope with negative strides + + Commit 4312f077365bf9f59423b1694136089c6da6216b claimed to have made + print_image() work with negative strides, but it didn't actually + work. When the stride was negative, the image buffer would be accessed + as if the stride were positive. + + Fix the bug by not changing the stride variable and instead using a + temporary, s, that contains the absolute value of stride. + +commit ec0e38cbb746a673f8e989ab8eae356c8c77dac7 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Sat Aug 31 16:54:51 2013 -0400 + + Move generated affine fetchers into pixman-fast-path.c + + The generated fetchers for NEAREST, BILINEAR, and + SEPARABLE_CONVOLUTION filters are fast paths and so they belong in + pixman-fast-path.c + +commit 96e163d2fd1f8127ad15df3785bb85b4bc7f8e9a +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Sat Aug 31 16:40:43 2013 -0400 + + Move bits_image_fetch_bilinear_no_repeat_8888 into pixman-fast-path.c + + This iterator is really a fast path, so it belongs in the fast path + implementation. + +commit 8d465c2a5d62affc8bdc54980f7c1de9355d1fd5 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Sep 11 00:24:23 2013 -0400 + + fast, ssse3: Simplify logic to fetch lines in the bilinear iterators + + Instead of having logic to swap the lines around when one of them + doesn't match, store the two lines in an array and use the least + significant bit of the y coordinate as the index into that + array. Since the two lines always have different least significant + bits, they will never collide. + + The effect is that lines corresponding to even y coordinates are + stored in info->lines[0] and lines corresponding to odd y coordinates + are stored in info->lines[1]. + +commit aa5c45254eb60ce4c85a25b5343474fb160ffa7c +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Sep 11 22:17:33 2013 -0400 + + test: Test negative strides + + Pixman supports negative strides, but up until now they haven't been + tested outside of stress-test. This commit adds testing of negative + strides to blitters-test, scaling-test, affine-test, rotate-test, and + composite-traps-test. + +commit 4312f077365bf9f59423b1694136089c6da6216b +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Thu Sep 12 12:52:02 2013 -0400 + + test: Share the image printing code + + The affine-test, blitters-test, and scaling-test all have the ability + to print out the bytes of the destination image. Share this code by + moving it to utils.c. + + At the same time make the code work correctly with negative strides. + +commit 51d71354568a54114ced87d8ae1529c88a53f635 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Thu Sep 12 12:24:52 2013 -0400 + + {scaling,affine,composite-traps}-test: Use compute_crc32_for_image() + + By using this function instead of compute_crc32() the alpha masking + code and the call to image_endian_swap() are not duplicated. + +commit 75506e63677208c1ec4364ab1a4b4fb73a0ca6c8 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Tue Sep 10 09:44:40 2013 -0400 + + pixman-filter.c: Use 65536, not 65535, for fixed point conversion + + Converting a double precision number to 16.16 fixed point should be + done by multiplying with 65536.0, not 65535.0. + + The bug could potentially cause certain filters that would otherwise + leave the image bit-for-bit unchanged under an identity + transformation, to not do so, but the numbers are close enough that + there weren't any visual differences. + +commit 9899a7bae8a00c6a92ed27d4dc2fe6f178c8acc8 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Tue Sep 10 09:37:38 2013 -0400 + + demos/scale.ui: Allow subsample_bits to be 0 + + The separable convolution filter supports a subsample_bits of 0 which + corresponds to no subsampling at all, so allow this value to be used + in the scale demo. + +commit 58a79dfe6d1fd62c2b66c69fdb64f6b8ecf61da5 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Thu Jun 6 16:15:39 2013 -0400 + + ssse3: Add iterator for separable bilinear scaling + + This new iterator uses the SSSE3 instructions pmaddubsw and pabsw to + implement a fast iterator for bilinear scaling. + + There is a graph here recording the per-pixel time for various + bilinear scaling algorithms as reported by scaling-bench: + + http://people.freedesktop.org/~sandmann/ssse3.v2/ssse3.v2.png + + As the graph shows, this new iterator is clearly faster than the + existing C iterator, and when used with an SSE2 combiner, it is also + faster than the existing SSE2 fast paths for upscaling, though not for + downscaling. + + Another graph: + + http://people.freedesktop.org/~sandmann/ssse3.v2/movdqu.png + + shows the difference between writing to iter->buffer with movdqa, + movdqu on an aligned buffer, and movdqu on a deliberately unaligned + buffer. Since the differences are very small, the patch here avoids + using movdqa because imposing alignment restrictions on iter->buffer + may interfere with other optimizations, such as writing directly to + the destination image. + + The data was measured with scaling-bench on a Sandy Bridge Core + i3-2350M @ 2.3GHz and is available in this directory: + + http://people.freedesktop.org/~sandmann/ssse3.v2/ + + where there is also a Gnumeric spreadsheet ssse3.v2.gnumeric + containing the per-pixel values and the graph. + + V2: + - Use uintptr_t instead of unsigned long in the ALIGN macro + - Use _mm_storel_epi64 instead of _mm_cvtsi128_si64 as the latter form + is not available on x86-32. + - Use _mm_storeu_si128() instead of _mm_store_si128() to avoid + imposing alignment requirements on iter->buffer + +commit f1792b32215d3b62084ee99fca5c448f1c7f8e1d +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Thu Jun 6 16:32:59 2013 -0400 + + Add empty SSSE3 implementation + + This commit adds a new, empty SSSE3 implementation and the associated + build system support. + + configure.ac: detect whether the compiler understands SSSE3 + intrinsics and set up the required CFLAGS + + Makefile.am: Add libpixman-ssse3.la + + pixman-x86.c: Add X86_SSSE3 feature flag and detect it in + detect_cpu_features(). + + pixman-ssse3.c: New file with an empty SSSE3 implementation + + V2: Remove SSSE3_LDFLAGS since it isn't necessary unless Solaris + support is added. + +commit f10b5449a8b22a26839c58a716b74d6b7a8bcb80 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Aug 28 15:36:13 2013 -0400 + + general: Ensure that iter buffers are aligned to 16 bytes + + At the moment iter buffers are only guaranteed to be aligned to a 4 + byte boundary. SIMD implementations benefit from the buffers being + aligned to 16 bytes, so ensure this is the case. + + V2: + - Use uintptr_t instead of unsigned long + - allocate 3 * SCANLINE_BUFFER_LENGTH byte on stack rather than just + SCANLINE_BUFFER_LENGTH + - use sizeof (stack_scanline_buffer) instead of SCANLINE_BUFFER_LENGTH + to determine overflow + +commit 700db9d872bdc49399a95565ffe0d345db11717a +Author: Siarhei Siamashka <siarhei.siamashka@gmail.com> +Date: Tue Sep 3 04:39:54 2013 +0300 + + sse2: faster bilinear scaling (pack 4 pixels to write with MOVDQA) + + The loops are already unrolled, so it was just a matter of packing + 4 pixels into a single XMM register and doing aligned 128-bit + writes to memory via MOVDQA instructions for the SRC compositing + operator fast path. For the other fast paths, this XMM register + is also directly routed to further processing instead of doing + extra reshuffling. This replaces "8 PACKSSDW/PACKUSWB + 4 MOVD" + instructions with "3 PACKSSDW/PACKUSWB + 1 MOVDQA" per 4 pixels, + which results in a clear performance improvement. + + There are also some other (less important) tweaks: + + 1. Convert 'pixman_fixed_t' to 'intptr_t' before using it as an + index for addressing memory. The problem is that 'pixman_fixed_t' + is a 32-bit data type and it has to be extended to 64-bit + offsets, which needs extra instructions on 64-bit systems. + + 2. Allow to recalculate the horizontal interpolation weights only + once per 4 pixels by treating the XMM register as four pairs + of 16-bit values. Each of these 16-bit/16-bit pairs can be + replicated to fill the whole 128-bit register by using PSHUFD + instructions. So we get "3 PADDW/PSRLW + 4 PSHUFD" instructions + per 4 pixels instead of "12 PADDW/PSRLW" per 4 pixels + (or "3 PADDW/PSRLW" per each pixel). + + Now a good question is whether replacing "9 PADDW/PSRLW" with + "4 PSHUFD" is a favourable exchange. As it turns out, PSHUFD + instructions are very fast on new Intel processors (including + Atoms), but are rather slow on the first generation of Core2 + (Merom) and on the other processors from that time or older. + A good instructions latency/throughput table, covering all the + relevant processors, can be found at: + http://www.agner.org/optimize/instruction_tables.pdf + + Enabling this optimization is controlled by the PSHUFD_IS_FAST + define in "pixman-sse2.c". + + 3. One use of PSHUFD instruction (_mm_shuffle_epi32 intrinsic) in + the older code has been also replaced by PUNPCKLQDQ equivalent + (_mm_unpacklo_epi64 intrinsic) in PSHUFD_IS_FAST=0 configuration. + The PUNPCKLQDQ instruction is usually faster on older processors, + but has some side effects (instead of fully overwriting the + destination register like PSHUFD does, it retains half of the + original value, which may inhibit some compiler optimizations). + + Benchmarks with "lowlevel-blt-bench -b src_8888_8888" using GCC 4.8.1 on + x86-64 system and default optimizations. The results are in MPix/s: + + ====== Intel Core2 T7300 (2GHz) ====== + + old: src_8888_8888 = L1: 128.69 L2: 125.07 M:124.86 + over_8888_8888 = L1: 83.19 L2: 81.73 M: 80.63 + over_8888_n_8888 = L1: 79.56 L2: 78.61 M: 77.85 + over_8888_8_8888 = L1: 77.15 L2: 75.79 M: 74.63 + + new (PSHUFD_IS_FAST=0): src_8888_8888 = L1: 168.67 L2: 163.26 M:162.44 + over_8888_8888 = L1: 102.91 L2: 100.43 M: 99.01 + over_8888_n_8888 = L1: 97.40 L2: 95.64 M: 94.24 + over_8888_8_8888 = L1: 98.04 L2: 95.83 M: 94.33 + + new (PSHUFD_IS_FAST=1): src_8888_8888 = L1: 154.67 L2: 149.16 M:148.48 + over_8888_8888 = L1: 95.97 L2: 93.90 M: 91.85 + over_8888_n_8888 = L1: 93.18 L2: 91.47 M: 90.15 + over_8888_8_8888 = L1: 95.33 L2: 93.32 M: 91.42 + + ====== Intel Core i7 860 (2.8GHz) ====== + + old: src_8888_8888 = L1: 323.48 L2: 318.86 M:314.81 + over_8888_8888 = L1: 187.38 L2: 186.74 M:182.46 + + new (PSHUFD_IS_FAST=0): src_8888_8888 = L1: 373.06 L2: 370.94 M:368.32 + over_8888_8888 = L1: 217.28 L2: 215.57 M:211.32 + + new (PSHUFD_IS_FAST=1): src_8888_8888 = L1: 401.98 L2: 397.65 M:395.61 + over_8888_8888 = L1: 218.89 L2: 217.56 M:213.48 + + The most interesting benchmark is "src_8888_8888" (because this code can + be reused for a generic non-separable SSE2 bilinear fetch iterator). + + The results shows that PSHUFD instructions are bad for Intel Core2 T7300 + (Merom core) and good for Intel Core i7 860 (Nehalem core). Both of these + processors support SSSE3 instructions though, so they are not the primary + targets for SSE2 code. But without having any other more relevant hardware + to test, PSHUFD_IS_FAST=0 seems to be a reasonable default for SSE2 code + and old processors (until the runtime CPU features detection becomes + clever enough to recognize different microarchitectures). + + (Rebased on top of patch that removes support for 8-bit bilinear + filtering -ssp) + +commit e43cc9c9024957dcc7f160f6abe7be218667dfa2 +Author: Siarhei Siamashka <siarhei.siamashka@gmail.com> +Date: Thu Sep 5 08:07:52 2013 +0300 + + test: safeguard the scaling-bench test against COW + + The calloc call from pixman_image_create_bits may still + rely on http://en.wikipedia.org/wiki/Copy-on-write + Explicitly initializing the destination image results in + a more predictable behaviour. + + V2: + - allocate 16 bytes aligned buffer with aligned stride instead + of delegating this to pixman_image_create_bits + - use memset for the allocated buffer instead of pixman solid fill + - repeat tests 3 times and select best results in order to filter + out even more measurement noise + +commit a4c79d695d52c94647b1aff78548e5892d616b70 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Sep 4 22:32:15 2013 -0400 + + Drop support for 8-bit precision in bilinear filtering + + The default has been 7-bit for a while now, and the quality + improvement with 8-bit precision is not enough to justify keeping the + code around as a compile-time option. + +commit 80a232db68fcff6460e8704da6a97ee2e6971e99 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Sat Aug 31 22:59:53 2013 -0400 + + Make the first argument to scanline fetchers have type bits_image_t * + + Scanline fetchers haven't been used for images other than bits for a + long time, so by making the type reflect this fact, a bit of casting + can be saved in various places. + +commit 8ad63f90cd8392a40f115c56b16c54d45012070e +Author: Matt Turner <mattst88@gmail.com> +Date: Tue Jul 30 13:22:29 2013 -0700 + + iwmmxt: Disallow if gcc version is < 4.8. + + Later versions of gcc-4.7.x are capable of generating iwMMXt + instructions properly, but gcc-4.8 contains better support and other + fixes, including iwMMXt in conjunction with hardfp. The existing 4.5 + requirement was based on attempts to have OLPC use a patched gcc to + build pixman. Let's just require gcc-4.8. + +commit 02906e57bd801e20b3094ca348fad563c6b5a922 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Aug 28 00:38:22 2013 -0400 + + fast_bilinear_cover_init: Don't install a finalizer on the error path + + No memory is allocated in the error case, so a finalizer is not + necessary, and will cause problems if the data pointer is not + initialized to NULL. + +commit 3518a0dafa63098d41e466f73d105b7e3e4b12de +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Thu May 24 02:49:05 2012 -0400 + + Add an iterator that can fetch bilinearly scaled images + + This new iterator works in a separable way; that is, for a destination + scaline, it scales the two involved source scanlines and then caches + them so that they can be reused for the next destination scanlines. + + There are two versions of the code, one that uses 64 bit arithmetic, + and one that uses 32 bit arithmetic only. The latter version is + used on 32 bit systems, where it is expected to be faster. + + This scheme saves a substantial amount of arithmetic for larger + scalings; the per-pixel times for various configurations as reported + by scaling-bench are graphed here: + + http://people.freedesktop.org/~sandmann/separable.v2/v2.png + + The "sse2" graph is current default on x86, "mmx" is with sse2 + disabled, "old c" is with sse2 and mmx disabled. The "new 32" and "new + 64" graphs show times for the new code. As the graphs show, the 64 bit + version of the new code beats the "old c" for all scaling ratios. + + The data was taken on a Sandy Bridge Core i3-2350M CPU @ 2.0 GHz + running in 64 bit mode. + + The data used to generate the graph is available in this directory: + + http://people.freedesktop.org/~sandmann/separable.v2/ + + There is also a Gnumeric spreadsheet v2.gnumeric containing the + per-pixel values and the graph. + + V2: + - Add error message in the OOM/bad matrix case + - Save some shifts by storing the cached scanlines in AGBR order + - Special cased version that uses 32 bit arithmetic when sizeof(long) <= 4 + +commit 146116eff4874500e4499e4bf4954c8e6b9c174a +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Fri May 25 11:38:41 2012 -0400 + + Add support for iter finalizers + + Iterators may sometimes need to allocate auxillary memory. In order to + be able to free this memory, optional iterator finalizers are + required. + +commit 1be9208e0404fcf41b4e83734d8e33437f50c2bd +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed May 22 18:48:08 2013 -0400 + + test/scaling-bench.c: New benchmark for bilinear scaling + + This new benchmark scales a 320 x 240 test a8r8g8b8 image by all + ratios from 0.1, 0.2, ... up to 10.0 and reports the time it to took + to do each of the scaling operations, and the time spent per + destination pixel. + + The times reported for the scaling operations are given in + milliseconds, the times-per-pixel are in nanoseconds. + + V2: Format output better + +commit fedd6b192d4b30dcf4ecabed43a5ddbfe6007629 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed Aug 7 10:21:20 2013 -0400 + + RELEASING: Add note about changing the topic of the #cairo IRC channel + +commit d87601ffc3d1583528ce52448fbb3659d0b1d1b0 Author: Siarhei Siamashka <siarhei.siamashka@gmail.com> Date: Sat Jul 27 19:25:32 2013 +0300 test: fix matrix-test on big endian systems -commit a82b95a26487344023623ead34f26af235dfd24e +commit 1e4932933342140402f744631f2a87b867162806 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jul 17 16:14:20 2012 +0200 @@ -25,13 +996,7 @@ Date: Tue Jul 17 16:14:20 2012 +0200 alpha-loop.c(XX) : error C2275: 'pixman_image_t' : illegal use of this type as an expression -commit 4c04a86c684d929ff734170eff8be8fea74b4c51 -Author: Søren Sandmann Pedersen <ssp@redhat.com> -Date: Thu Aug 1 07:19:21 2013 -0400 - - Version bump to 0.30.1 - -commit 63004529526db1ba1ba5a95a93522fa0cf385ec5 +commit 279bdcda7ec3af8ac06312f4514b1b082a279544 Author: Alexander Troosh <trush@yandex.ru> Date: Tue Jun 11 15:55:34 2013 +0400 @@ -61,7 +1026,7 @@ Date: Tue Jun 11 15:55:34 2013 +0400 version of GTK+. Need do support old GTK+ (rewrite scale.c) or simple demand of high version of GTK+, like this: -commit 02869a1229833a3272355f3d9e1206936b430fa1 +commit 889f1189469e139473d0a88742ddfbbcaf485bef Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sat Jun 8 18:07:20 2013 +0200 @@ -70,7 +1035,176 @@ Date: Sat Jun 8 18:07:20 2013 +0200 Reviewed-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr> -commit 35da06c828049d90975c08655bb9b77184cdab68 +commit 2acfac5f8e097ee2ae225d986f981b55d65dd152 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed May 22 09:01:36 2013 -0400 + + Consolidate all the iter_init_bits_stride functions + + The SSE2, MMX, and fast implementations all have a copy of the + function iter_init_bits_stride that computes an image buffer and + stride. + + Move that function to pixman-utils.c and share it among all the + implementations. + +commit 533f54430a73199020ce49208d50f448c871a481 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Tue May 21 06:40:59 2013 -0400 + + Delete the old src/dest_iter_init() functions + + Now that we are using the new _pixman_implementation_iter_init(), the + old _src/_dest_iter_init() functions are no longer needed, so they can + be deleted, and the corresponding fields in pixman_implementation_t + can be removed. + +commit 125a4fd36f94a06d220bc6709f3ddfd23bdb6ef9 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Tue May 21 08:15:41 2013 -0400 + + Add _pixman_implementation_iter_init() and use instead of _src/_dest_init() + + A new field, 'iter_info', is added to the implementation struct, and + all the implementations store a pointer to their iterator tables in + it. A new function, _pixman_implementation_iter_init(), is then added + that searches those tables, and the new function is called in + pixman-general.c and pixman-image.c instead of the old + _pixman_implementation_src_init() and _pixman_implementation_dest_init(). + +commit 245d0090c596eb3ca50294d0dec0fb0933eff0db +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed May 22 08:05:55 2013 -0400 + + general: Store the iter initializer in a one-entry pixman_iter_info_t table + + In preparation for sharing all iterator initialization code from all + the implementations, move the general implementation to use a table of + pixman_iter_info_t. + + The existing src_iter_init and dest_iter_init functions are + consolidated into one general_iter_init() function that checks the + iter_flags for whether it is dealing with a source or destination + iterator. + + Unlike in the other implementations, the general_iter_init() function + stores its own get_scanline() and write_back() functions in the + iterator, so it relies on the initializer being called after + get_scanline and write_back being copied from the struct to the + iterator. + +commit 9c15afb105ee0c5b166b9bd07c28857927b1aecb +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Tue May 21 03:59:06 2013 -0400 + + fast: Replace the fetcher_info_t table with a pixman_iter_info_t table + + Similar to the SSE2 and MMX patches, this commit replaces a table of + fetcher_info_t with a table of pixman_iter_info_t, and similar to the + noop patch, both fast_src_iter_init() and fast_dest_iter_init() are + now doing exactly the same thing, so their code can be shared in a new + function called fast_iter_init_common(). + +commit 71c2d519d0abb8217b7ddb20148861e2ef71f3e6 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Tue May 21 03:32:32 2013 -0400 + + mmx: Replace the fetcher_info_t table with a pixman_iter_info_t table + + Similar to the SSE2 commit, information about the iterators is stored + in a table of pixman_iter_info_t. + +commit 78f437d61e20476fa1c2324b14744aa62a232a43 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Tue May 21 03:29:09 2013 -0400 + + sse2: Replace the fetcher_info_t table with a pixman_iter_info_t table + + Similar to the changes to noop, put all the iterators into a table of + pixman_iter_info_t and then do a generic search of that table during + iterator initialization. + +commit c7b0da8a96c9196f751dab2af42adb5560ba6557 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Tue May 21 08:14:44 2013 -0400 + + noop: Keep information about iterators in an array of pixman_iter_info_t + + Instead of having a nest of if statements, store the information about + iterators in a table of a new struct type, pixman_iter_info_t, and + then walk that table when initializing iterators. + + The new struct contains a format, a set of image flags, and a set of + iter flags, plus a pixman_iter_get_scanline_t, a + pixman_iter_write_back_t, and a new function type + pixman_iter_initializer_t. + + If the iterator matches an entry, it is first initialized with the + given get_scanline and write_back functions, and then the provided + iter_initializer (if present) is run. Running the iter_initializer + after setting get_scanline and write_back allows the initializer to + override those fields if it wishes. + + The table contains both source and destination iterators, + distinguished based on the recently-added ITER_SRC and ITER_DEST; + similarly, wide iterators are recognized with the ITER_WIDE + flag. Having both source and destination iterators in the table means + the noop_src_iter_init() and noop_dest_iter_init() functions become + identical, so this patch factors out their code in a new function + noop_iter_init_common() that both calls. + + The following patches in this series will change all the + implementations to use an iterator table, and then move the table + search code to pixman-implementation.c. + +commit 3b96ee4e77ff01217f7fefc4718babbf68a13147 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Mon May 20 09:44:05 2013 -0400 + + Always set the FAST_PATH_NO_ALPHA_MAP flag for non-BITS images + + We only support alpha maps for BITS images, so it's always to ignore + the alpha map for non-BITS image. This makes it possible get rid of + the check for SOLID images since it will now be subsumed by the check + for FAST_PATH_NO_ALPHA_MAP. + + Opaque masks are reduced to NULL images in pixman.c, and those can + also safely be treated as not having an alpha map, so set the + FAST_PATH_NO_ALPHA_MAP bit for those as well. + +commit 52ff5f0cd992e0384fa2babcb25780c3182548e6 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Thu Dec 6 02:25:35 2012 -0500 + + Add ITER_WIDE iter flag + + This will be useful for putting iterators into tables where they can + be looked up by iterator flags. Without this flag, wide iterators can + only be recognized by the absence of ITER_NARROW, which makes testing + for a match difficult. + +commit e8a180797c726a8990291158be8db843c26b98d3 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Mon May 20 09:04:22 2013 -0400 + + Add ITER_SRC and ITER_DEST iter flags + + These indicate whether the iterator is for a source or a destination + image. Note iterator initializers are allowed to rely on one of these + being set, so they can't be left out the way it's generally harmless + (aside from potentil performance degradation) to leave out a + particular fast path flag. + +commit 2320f0520b71c5d30b30125971df6a4245ce5207 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Sat May 18 11:39:34 2013 -0400 + + Make use of image flag in noop iterators + + Similar to c2230fe2aff, simply check against SAMPLES_COVER_CLIP_NEAREST + instead of comparing all the x/y/width/height parameters. + +commit d77d75cc6e5de14d027d22b70389a4d0c71048b9 Author: Markos Chandras <markos.chandras@imgtec.com> Date: Wed May 15 09:51:20 2013 -0700 @@ -85,7 +1219,16 @@ Date: Wed May 15 09:51:20 2013 -0700 Reviewed-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> -commit e14f5a739f3ea1a3a6cff9bd5681677f05962314 +commit a74be759a18831c738dc4d1346a3f053ccdb5991 +Author: Matt Turner <mattst88@gmail.com> +Date: Tue May 14 12:40:50 2013 -0700 + + mmx: Document implementation(s) of pix_multiply(). + + I look at that function and can never remember what it does or how it + manages to do it. + +commit cb5d131ff4172a9bb455970cc15d93d8c1d14c4e Author: ingmar@irsoft.de <ingmar@irsoft.de> Date: Sat May 11 11:55:04 2013 +0200 @@ -93,6 +1236,12 @@ Date: Sat May 11 11:55:04 2013 +0200 Build fix for platforms without a generated config.h, for example Win32. +commit d70141955e9f85b80f193bf4b453b698f5115734 +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed May 8 19:40:12 2013 -0400 + + Post-release version bump to 0.31.1 + commit 41daf50aaeca71e70bc27aa4bf27ae4812c6eecf Author: Søren Sandmann Pedersen <ssp@redhat.com> Date: Wed May 8 19:31:22 2013 -0400 @@ -19945,7 +21094,7 @@ commit 9a0639650e276c4c0da5dfe37a8d3ba5a6b81712 Author: Vladimir Vukicevic <vladimir@pobox.com> Date: Tue Nov 6 16:15:01 2007 -0800 - Remove last CVS $Id: ChangeLog,v 1.7 2013/08/25 17:42:39 matthieu Exp $ tags + Remove last CVS $Id: ChangeLog,v 1.8 2013/12/26 16:13:01 matthieu Exp $ tags commit df964790e893a8b511e9322e7161087d8ba182cc Author: Søren Sandmann <sandmann@redhat.com> |