Skip to content

Commit

Permalink
SIMD. fix list (+6 squashed commits)
Browse files Browse the repository at this point in the history
Squashed commits:
[c45b871] update for Pillow-SIMD 3.4.0
[bedd83f] no alpha compositing in this release
[e8fe730] update results for latest version
add Skia results
[a16ff97] add SIMD changes
[82ffbd6] fix readme (+4 squashed commits)
Squashed commits:
[85677f9] fix error
[f44ebb1] update results for unrolled implementation
[83968c3] fix #4
[cd73c51] update link (+11 squashed commits)
Squashed commits:
[5882178] correct spelling
[a0e5956] Why Pillow-SIMD is even faster
[108e72e] Why Pillow itself is so fast
[e8eeda1] spelling fixes
[e816e9c] spelling
[d2eefef] methodology, why not contributed
[2e55786] installation and conclusion
[9f6415e] more info
[67e55b7] more benchmarks
test files
[471d4c5] remove spaces
[904d89d] add performance tests
[4fe17fe] simple readme

SIMD. clarify Following fork

SIMD. update readme

SIMD. update versions in readme

SIMD. Changes

SIMD. version

SIMD. version

SIMD. version

SIMD. version

SIMD. version

SIMD. version

SIMD. Rewritten the Pillow-SIMD readme

SIMD. Updated according to the review

SIMD. fix markup

SIMD. replace benchmarks with link to pillow-perf

SIMD. for resizing

SIMD. Update readme

SIMD. fix mark

SIMD. Update Uploadcare logo in readme

SIMD. pypi readme, update setup

Add x86 info
  • Loading branch information
homm committed Aug 10, 2024
1 parent 2045906 commit 643d55a
Show file tree
Hide file tree
Showing 6 changed files with 286 additions and 128 deletions.
144 changes: 144 additions & 0 deletions CHANGES.SIMD.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
Changelog (Pillow-SIMD)
=======================

9.0.0.post1
-----------

- Fixed possible overflow in LUT processing
- Restored compatibility with Visual C Compiler


7.0.0.post4
-----------

- Filter: fixed wrong offset handling for 3x3 single-band version

7.0.0.post3
-----------

- ColorLUT: fixed potential access violation, up to 2x faster

7.0.0.post2
-----------

- ColorLUT: SSE4 & AVX2

7.0.0.post1 & 6.2.2.post1 & 6.1.0.post1 & 6.0.0.post2
-----------------------------------------------------

- Bands: access violation in getband in some environments

7.0.0.post0
-----------

- Reduce: SSE4

6.0.0.post1
-----------

- GCC 9.0+: fixed unaligned read for ``_**_cvtepu8_epi32`` functions.

6.0.0.post0 and 5.3.0.post1
---------------------------

- Resampling: Correct max coefficient calculation. Some rare combinations of
initial and requested sizes lead to black lines.

4.3.0.post0
-----------

- Float-based filters, single-band: 3x3 SSE4, 5x5 SSE4
- Float-based filters, multi-band: 3x3 SSE4 & AVX2, 5x5 SSE4
- Int-based filters, multi-band: 3x3 SSE4 & AVX2, 5x5 SSE4 & AVX2
- Box blur: fast path for radius < 1
- Alpha composite: fast div approximation
- Color conversion: RGB to L SSE4, fast div in RGBa to RGBA
- Resampling: optimized coefficients loading
- Split and get_channel: SSE4

3.4.1.post1
-----------

- Critical memory error for some combinations of source/destination
sizes is fixed.

3.4.1.post0
-----------

- A lot of optimizations in resampling including 16-bit
intermediate color representation and heavy unrolling.

3.3.2.post0
-----------

- Maintenance release

3.3.0.post2
-----------

- Fixed error in RGBa -> RGBA conversion

3.3.0.post1
-----------

Alpha compositing
~~~~~~~~~~~~~~~~~

- SSE4 and AVX2 fixed-point full loading implementation.
Up to 4.6x faster.

3.3.0.post0
-----------

Resampling
~~~~~~~~~~

- SSE4 and AVX2 fixed-point full loading horizontal pass.
- SSE4 and AVX2 fixed-point full loading vertical pass.

Conversion
~~~~~~~~~~

- RGBA -> RGBa SSE4 and AVX2 fixed-point full loading implementations.
Up to 2.6x faster.
- RGBa -> RGBA AVX2 implementation using gather instructions.
Up to 5x faster.


3.2.0.post3
-----------

Resampling
~~~~~~~~~~

- SSE4 and AVX2 float full loading horizontal pass.
- SSE4 float full loading vertical pass.


3.2.0.post2
-----------

Resampling
~~~~~~~~~~

- SSE4 and AVX2 float full loading horizontal pass.
- SSE4 float per-pixel loading vertical pass.


2.9.0.post1
-----------

Resampling
~~~~~~~~~~

- SSE4 and AVX2 float per-pixel loading horizontal pass.
- SSE4 float per-pixel loading vertical pass.
- SSE4: Up to 2x for downscaling. Up to 3.5x for upscaling.
- AVX2: Up to 2.7x for downscaling. Up to 3.5x for upscaling.


Box blur
~~~~~~~~

- Simple SSE4 fixed-point implementations with per-pixel loading.
- Up to 2.1x faster.
6 changes: 6 additions & 0 deletions PyPI.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

`Pillow-SIMD repo and readme <https://github.com/uploadcare/pillow-simd>`_

`Pillow-SIMD changelog <https://github.com/uploadcare/pillow-simd/blob/simd/master/CHANGES.SIMD.rst>`_

`Pillow documentation <https://pillow.readthedocs.io/>`_
Loading

0 comments on commit 643d55a

Please sign in to comment.