Skip to content
This repository has been archived by the owner on Aug 4, 2022. It is now read-only.

Commit

Permalink
Bug 809821. Update pixman to 0.29.2
Browse files Browse the repository at this point in the history
Ben Avison (7):
      Tweaks to lowlevel-blt-bench
      ARMv6: Lay the groundwork for later patches in the series
      ARMv6: New fill routines
      ARMv6: New blit routines
      ARMv6: New conversion routines
      ARMv6: Replacement add_8_8, over_8888_8888, over_8888_n_8888 and over_n_8_8888 routines
      Improve L1 and L2 benchmark tests for caches that don't use allocate-on-write

Benjamin Gilbert (1):
      Fix thread safety on mingw-w64 and clang

Chris Wilson (6):
      sse2: Add a fast path for add_n_8888
      sse2: Add a fast path for add_n_8_8888
      sse2: Add fast paths for bilinear source with a solid mask
      Always return a valid function from lookup_composite()
      Always return a valid function from lookup_combiner()
      Eliminate duplicate copies of channel flags for pixman_image_composite32()

Jeff Muizelaar (1):
      Add a version of bilinear_interpolation for precision <=4

Joshua Root (1):
      Fix undeclared variable use and sysctlbyname error handling on ppc

Marko Lindqvist (1):
      Fix build with automake-1.13

Matt Turner (2):
      Add new demos and tests to .gitignore
      Convert INCLUDES to AM_CPPFLAGS

Nemanja Lukic (5):
      MIPS: DSPr2: Added more fast-paths for SRC operation:
      MIPS: DSPr2: Added more fast-paths for OVER operation:
      MIPS: DSPr2: Added several nearest neighbor fast paths with a8 mask:
      MIPS: DSPr2: Added more fast-paths for REVERSE operation:      - out_reverse_8_0565      - out_reverse_8_8888
      MIPS: DSPr2: Added more fast-paths:      - over_reverse_n_8888      - in_n_8_8

Siarhei Siamashka (21):
      test: Change is_little_endian() into inline function
      test: Added a better PRNG (pseudorandom number generator)
      test: Search/replace 'lcg_*' -> 'prng_*'
      test: Switch to the new PRNG instead of old LCG
      test: Get rid of the obsolete 'prng_rand_N' and 'prng_rand_u32'
      Improve performance of combine_over_u
      test: Workaround unaligned MOVDQA bug (http://gcc.gnu.org/PR55614)
      test: add "src_0565_8888" to lowlevel-blt-bench
      Change CONVERT_XXXX_TO_YYYY macros into inline functions
      Faster conversion from a8r8g8b8 to r5g6b5 in C code
      ARM: make use of UQADD8 instruction even in generic C code paths
      Rename 'xor' variable to 'filler' (because 'xor' is a C++ keyword)
      Define SIZE_MAX if it is not provided by the standard C headers
      Use more appropriate types and remove a magic constant
      Added C variants of r5g6b5 fetch/write-back iterators
      Faster write-back for the C variant of r5g6b5 dest iterator
      Faster fetch for the C variant of r5g6b5 src/dest iterator
      Add higher precision "pixman_transform_point_*" functions
      configure.ac: Added detection for __float128 support
      test: Added matrix-test for testing projective transform accuracy
      Use pixman_transform_point_31_16() from pixman_transform_point()

Stefan Weil (3):
      Always use xmmintrin.h for 64 bit Windows
      pixman: Use uintptr_t in type casts from pointer to integral value
      test: Fix compiler warnings caused by unused code

Søren Sandmann Pedersen (37):
      Post-release version bump to 0.27.5
      Pre-release version bump to 0.28.0
      Post-release version bump to 0.29.1
      pixman_image_composite: Reduce opaque masks to NULL
      pixman.h: Add typedefs for pixman_f_transform and pixman_f_vector
      Allow src and dst to be identical in pixman_f_transform_invert()
      Round fixed-point multiplication
      Convolution filter: round color values instead of truncating
      Add text file rounding.txt describing how rounding works
      Add new filter PIXMAN_FILTER_SEPARABLE_CONVOLUTION
      rounding.txt: Describe how SEPARABLE_CONVOLUTION filter works
      Add new pixman_filter_create_separable_convolution() API
      demos/gtk-utils.[ch]: Add pixman_image_from_file()
      demos: Add new demo program, "scale"
      Add demos/zone_plate.png
      Add demo program for conical gradients
      Add fast paths for separable convolution
      demos/radial-test: Add zero-radius circles to demonstrate rendering bugs
      radial: When comparing t to mindr, use >= rather than >
      test/utils.[ch]: Add utility function to draw a checkerboard
      demos/conical-test: Use the draw_checkerboard() utility function
      demos/radial-test: Add checkerboard to display the alpha channel
      Add testing of trapezoids to stress-test
      pixman_composite_trapezoids: Return early if mask_format is not of TYPE_ALPHA
      pixman_composite_trapezoids(): Check for NULL return from create_bits()
      float-combiner.c: Change tests for x == 0.0 tests to - FLT_MIN < x < FLT_MIN
      Handle solid images in the noop iterator
      pixman-filter.c: Cope with NULL returns from malloc()
      README: Add guidelines on how to contribute patches
      test/utils.[ch]: Add new function operator_name()
      utils.[ch]: Add new format_name() function
      test: Use operator_name() and format_name() in composite.c
      demo/scale: Add a spin button to set the number of subsample bits
      pixman-combine-float.c: Use IS_ZERO() in clip_color() and set_sat()
      Change default GPGKEY to 3892336E, which is soren.sandmann@gmail.com
      stresstest: Ensure that the rasterizer is only given alpha formats
      Pre-release version bump to 0.29.2
  • Loading branch information
jrmuizel committed Feb 18, 2013
1 parent 10a0aad commit e246185
Show file tree
Hide file tree
Showing 37 changed files with 4,907 additions and 1,338 deletions.
3 changes: 2 additions & 1 deletion gfx/cairo/libpixman/src/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ CSRCS = \
pixman-edge.c \
pixman-edge-accessors.c \
pixman-fast-path.c \
pixman-filter.c \
pixman-general.c \
pixman-gradient-walker.c \
pixman-glyph.c \
Expand Down Expand Up @@ -129,7 +130,7 @@ endif

ifdef USE_ARM_SIMD_GCC
CSRCS += pixman-arm-simd.c
SSRCS += pixman-arm-simd-asm.S
SSRCS += pixman-arm-simd-asm.S pixman-arm-simd-asm-scaled.S
DEFINES += -DUSE_ARM_SIMD
endif

Expand Down
2 changes: 2 additions & 0 deletions gfx/cairo/libpixman/src/pixman-access.c
Original file line number Diff line number Diff line change
Expand Up @@ -1345,8 +1345,10 @@ static const format_info_t accessors[] =

/* sRGB formats */
{ PIXMAN_a8r8g8b8_sRGB,
NULL,
fetch_scanline_a8r8g8b8_32_sRGB, fetch_scanline_a8r8g8b8_sRGB_float,
fetch_pixel_a8r8g8b8_32_sRGB, fetch_pixel_a8r8g8b8_sRGB_float,
NULL,
store_scanline_a8r8g8b8_32_sRGB, store_scanline_a8r8g8b8_sRGB_float,
},

Expand Down
165 changes: 165 additions & 0 deletions gfx/cairo/libpixman/src/pixman-arm-simd-asm-scaled.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
/*
* Copyright © 2008 Mozilla Corporation
* Copyright © 2010 Nokia Corporation
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Mozilla Corporation not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Mozilla Corporation makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
* SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*
* Author: Jeff Muizelaar (jeff@infidigm.net)
*
*/

/* Prevent the stack from becoming executable */
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif

.text
.arch armv6
.object_arch armv4
.arm
.altmacro
.p2align 2

/* Supplementary macro for setting function attributes */
.macro pixman_asm_function fname
.func fname
.global fname
#ifdef __ELF__
.hidden fname
.type fname, %function
#endif
fname:
.endm

/*
* Note: This code is only using armv5te instructions (not even armv6),
* but is scheduled for ARM Cortex-A8 pipeline. So it might need to
* be split into a few variants, tuned for each microarchitecture.
*
* TODO: In order to get good performance on ARM9/ARM11 cores (which don't
* have efficient write combining), it needs to be changed to use 16-byte
* aligned writes using STM instruction.
*
* Nearest scanline scaler macro template uses the following arguments:
* fname - name of the function to generate
* bpp_shift - (1 << bpp_shift) is the size of pixel in bytes
* t - type suffix for LDR/STR instructions
* prefetch_distance - prefetch in the source image by that many
* pixels ahead
* prefetch_braking_distance - stop prefetching when that many pixels are
* remaining before the end of scanline
*/

.macro generate_nearest_scanline_func fname, bpp_shift, t, \
prefetch_distance, \
prefetch_braking_distance

pixman_asm_function fname
W .req r0
DST .req r1
SRC .req r2
VX .req r3
UNIT_X .req ip
TMP1 .req r4
TMP2 .req r5
VXMASK .req r6
PF_OFFS .req r7
SRC_WIDTH_FIXED .req r8

ldr UNIT_X, [sp]
push {r4, r5, r6, r7, r8, r10}
mvn VXMASK, #((1 << bpp_shift) - 1)
ldr SRC_WIDTH_FIXED, [sp, #28]

/* define helper macro */
.macro scale_2_pixels
ldr&t TMP1, [SRC, TMP1]
and TMP2, VXMASK, VX, asr #(16 - bpp_shift)
adds VX, VX, UNIT_X
str&t TMP1, [DST], #(1 << bpp_shift)
9: subpls VX, VX, SRC_WIDTH_FIXED
bpl 9b

ldr&t TMP2, [SRC, TMP2]
and TMP1, VXMASK, VX, asr #(16 - bpp_shift)
adds VX, VX, UNIT_X
str&t TMP2, [DST], #(1 << bpp_shift)
9: subpls VX, VX, SRC_WIDTH_FIXED
bpl 9b
.endm

/* now do the scaling */
and TMP1, VXMASK, VX, asr #(16 - bpp_shift)
adds VX, VX, UNIT_X
9: subpls VX, VX, SRC_WIDTH_FIXED
bpl 9b
subs W, W, #(8 + prefetch_braking_distance)
blt 2f
/* calculate prefetch offset */
mov PF_OFFS, #prefetch_distance
mla PF_OFFS, UNIT_X, PF_OFFS, VX
1: /* main loop, process 8 pixels per iteration with prefetch */
pld [SRC, PF_OFFS, asr #(16 - bpp_shift)]
add PF_OFFS, UNIT_X, lsl #3
scale_2_pixels
scale_2_pixels
scale_2_pixels
scale_2_pixels
subs W, W, #8
bge 1b
2:
subs W, W, #(4 - 8 - prefetch_braking_distance)
blt 2f
1: /* process the remaining pixels */
scale_2_pixels
scale_2_pixels
subs W, W, #4
bge 1b
2:
tst W, #2
beq 2f
scale_2_pixels
2:
tst W, #1
ldrne&t TMP1, [SRC, TMP1]
strne&t TMP1, [DST]
/* cleanup helper macro */
.purgem scale_2_pixels
.unreq DST
.unreq SRC
.unreq W
.unreq VX
.unreq UNIT_X
.unreq TMP1
.unreq TMP2
.unreq VXMASK
.unreq PF_OFFS
.unreq SRC_WIDTH_FIXED
/* return */
pop {r4, r5, r6, r7, r8, r10}
bx lr
.endfunc
.endm

generate_nearest_scanline_func \
pixman_scaled_nearest_scanline_0565_0565_SRC_asm_armv6, 1, h, 80, 32

generate_nearest_scanline_func \
pixman_scaled_nearest_scanline_8888_8888_SRC_asm_armv6, 2, , 48, 32
Loading

0 comments on commit e246185

Please sign in to comment.