Age | Commit message (Collapse) | Author |
|
MSan does not support assembly code so all SIMD paths were disabled
for MSan builds of libjpeg-turbo. Now that all Arm Neon SIMD paths
are implemented using intrinsics (and all assembly code has been
removed) we can enable these paths for MSan builds.
Change-Id: Id244fa2f710d6647a20f2a0d1c6760813623b0cf
|
|
Simplify conditions to use Arm Neon sources and reduce duplication
for AArch64 and AArch32 Neon builds.
Change-Id: I8c1f8547741db3ccc6db20e6fef9a73ca49db6d3
|
|
Update Chromium's copy of libjpeg-turbo to the latest upstream
release (v2.0.90) and re-apply our local changes documented in
README.chromium.
Cherry-pick two additional changes from upstream to fix bugs found
by fuzzers:
1) https://github.com/libjpeg-turbo/libjpeg-turbo/commit/ccaba5d7894ecfb5a8f11e48d3f86e1f14d5a469
2) https://github.com/libjpeg-turbo/libjpeg-turbo/commit/c7ca521bc85b57d41d3ad4963c13fc0100481084
Significant changes provided by this update:
1) A large performance boost to JPEG encoding due to an improved
Huffman encoding implementation.
2) The complete removal of Arm Neon assembly code. This allows Arm's
control-flow integrity security features (Armv8.3-A Pointer
Authentication and Armv8.5-A Branch Target Identification) to be
switched on with the appropriate compiler flags.
Bug: 922430
Bug: b/135180511
Bug: 919548, 1145581
Change-Id: I319fcdc55b3fd5b219425c07a4e4a03587f4e06d
|
|
Adds an Arm NEON intrinsics implementation of the slower but more
accurate Discrete Cosine Transform (DCT).
Removes the NEON assembly implementation for AArch64. There was no
NEON implementation for AArch32.
Bug: 922430
Change-Id: I5f0aa9ca9deda06b78539eb6118106df135f8fab
|
|
Currently is_linux GN variable is set to true on Chrome OS build,
but it is planned to set it false. This is the preparation to
keep the compatibility.
Bug: chromium:1110266
Test: Built locally.
Change-Id: I275a6a845eb9a5762e6dcb5be7d2f796916af51b
|
|
Adds an Arm NEON intrinsics implementation of the 'fast' not-so-
accurate Discrete Cosine Transform (DCT).
Removes the NEON assembly implementations for both AArch32 and
AArch64.
Bug: 922430
Change-Id: I9f37cd82dee36e4e1d237a031e591bac339e9239
|
|
Adds an Arm NEON intrinsics implementation of 'convsamp'.
Removes the NEON assembly implementations for both AArch32 and
AArch64.
Bug: 922430
Change-Id: I77a705c6ebb1eb6be5ec9b73fc440046b84df76e
|
|
Adds an Arm NEON implementation of RGB -> Grayscale conversion. This
is new code written using compiler intrinsics; there was no previous
NEON assembly code implementation for either AArch32 or AArch64.
Bug: 922430
Change-Id: I1ce566c1741bcd15dca97a75571380d4c09c0572
|
|
Adds an Arm NEON intrinsics implementation of RGB -> YCbCr color
conversion.
Removes the NEON assembly implementation for both AArch32 and
AArch64.
Bug: 922430
Change-Id: I83f63fb12481f4d7f9bd84ba1430e841faaf9c75
|
|
Adds an Arm NEON intrinsics implementation of h2v1_downsample. This
intrinsics implementation is used to generate code for AArch32 and
AArch64; previously there was only an AArch64 NEON assembly
implementation.
Removes the AArch64 NEON assembly implementation from jsimd_neon.S.
Bug: 922430
Change-Id: I58a83635959fa1dd4923cecdef64792ebb57b54f
|
|
Removes duplicate MSan check in the turbojpeg build target definition.
For MSan builds, the check added a second copy of the jsimd_none.c
file. This causes a linker error, and subsequently a build failure.
Bug: 993876
Change-Id: I6782650d70329eb3628c13b23bd843ef0fa43694
|
|
Floating-point test parameters differ by platform - specifically
x86/x86_64 SSE differs to x86, x86_64 scalar floating-point as well
as Arm AArch32, AArch64 and NEON SIMD.
This commit updates the floating-point test parameters to reflect the
x86/x86_64 SSE special case, rather than assuming that x86/x86_64
platforms running these tests are always executing with SSE SIMD.
Bug: 993876
Change-Id: I26df82916634a0f4abb3187aa63b2e7707b536b0
|
|
Previous commits adding the libjpeg_turbo_unittests target did not
declare some header dependencies as "public_deps", breaking builds
that relied upon the "libjpeg" target.
This commit fixes the broken header file chain and has been verified
using: gn check <build-directory>
Bug: 993876
Change-Id: I616628fb384c47063ac9fcecc86b65dc155aab6c
|
|
Guards the libjpeg_turbo_unittests target using the same condition
that imports test.gni.
Bug: 993876
Change-Id: I3cb6d7f31c9118aaca5f151780ee4e57397c5f37
|
|
Factor common file and path manipulation code from gtest wrapper
files into a single file 'gtest-utils.cpp'. The 'gtest-utils.h'
header is included in files where the functionality is required.
Bug: 993876
Change-Id: Ia6fec06ed3558e98d6ca28783114d4e69e0cd93f
|
|
Move gtest files to a separate 'gtest' folder to separate the
libjpeg-turbo C code and the gtest C++ code.
Bug: 993876
Change-Id: I2d7511237a9cfdc0ccafd076e1881d32f5eb64f0
|
|
Add gtests to test JPEG decompression code paths.
Bug: 993876
Change-Id: I8ff99a8e4f81cacb80cdcaff5bcab318eabc96cd
|
|
Add gtests to test JPEG transcoding code paths.
Bug: 993876
Change-Id: I4acd1379f83ca9e61c9f80109bdc42769919e16c
|
|
Add gtests to test JPEG compression code paths.
Bug: 993876
Change-Id: I354ab14fd6502adf432bfea32759cd8d062b888e
|
|
Add gtests for tiling unit tests that use tjbench.
Bug: 993876
Change-Id: I80fe76754bee044a7601c55f2cd25e7e4c2c7e35
|
|
Adds a gtest wrapper and GN build configuration for the unit tests in
tjunittest.c.
Bug: 993876
Change-Id: Ic33c6930de0e0005aebb70cb358823640a35c8b7
|
|
For some reason the -I. isn't working with JPEG turbo.
R=cblume
Bug: 766721
Change-Id: Ifa7fb8034bba6221a4428efe4715bdb29f909a5c
|
|
Bug: 766721
Change-Id: I436767e68406d557db3c3e85dcf65ad32c41f59a
|
|
Adds an Arm NEON intrinsics implementation of the 'fast' not-so-
accurate Inverse Discrete Cosine Transform (IDCT).
Removes the NEON assembly implementations for both AArch32 and
AArch64.
Bug: 922430
Change-Id: I0dd45eec77b0e0eb3d3819953f82ec159901c6bd
|
|
Adds an Arm NEON intrinsics implementation of the 'slow' accurate
inverse discrete cosine transform (IDCT).
The NEON assembly implementations are removed for both AArch32 and
AArch64.
Bug: 922430
Change-Id: Ic35eb8f0e5dee0a8a1f71b9ffc303be5e2d3e392
|
|
Adds an Arm NEON intrinsics implementation of the 2x2 reduced-size
Inverse Discrete Cosine Transform (IDCT).
Removes the NEON assembly implementations for both AArch32 and
AArch64.
Bug: 922430
Change-Id: I8e0d4518d742f33957252d77e5f3f0ad3f80f234
|
|
Adds an Arm NEON intrinsics implementation of h2v1_merged_upsample.
This is new code, there was no previous NEON assembly implementation
for either AArch32 or AArch64.
Bug: 922430
Change-Id: I23fa886e90c49ea8ff46897d8e8a0150a512733b
|
|
Enable optimize_speed (-O3) when building libjpeg-turbo for Arm
(AArch32 and AArch64.)
This allows the compiler to generate code better optimized for little
cores (which have in-order pipelines) since Arm NEON code is moving
to compiler intrinsics for both AArch32 and AArch64.
The increase in code size is minimal.
Bug: 922430
Change-Id: I54249b88b4c09c49ba5a3c4b844794c79f6eb745
|
|
Adds an Arm NEON intrinsics implementation of YCbCr -> RGB(A) color
conversion.
The NEON assembly implementation of YCbCr -> RGB(A) color conversion
is removed for both AArch32 and AArch64.
Bug: 922430
Change-Id: I1dbbf2c5329f9d7ea29f502c743e5824fae20f85
|
|
While doing some size analysis of chrome binaries I noticed that the
jpeg_nbits_table in the libjpeg_turbo codebase was being duplicated.
A unique copy was in the jchuff.obj and jcphuff.obj resulting in an
added 65k in .rdata in chrome.dll and chrome_child.dll. Declaring
extern const in the header instead of static const and moving the
definition to a new .c file fixes this so only one copy is referenced.
Change-Id: I57ea19dd88951b3ba6b5f978bb53fc5377956c30
|
|
Adds an Arm NEON intrinsics implementation of h2v2_fancy_usample.
There was no previous NEON assembly implementation for either AArch32
or AArch64.
Bug: 922430
Change-Id: I479dd075cdeea945c8e0c4c9c60d1b55e74cb5ab
|
|
There is code outside of third_party/libjpeg_turbo/ which includes
headers from libjpeg-turbo. However, those headers were recently moved
to a separate target, :libjpeg_headers. This was a private dependency of
libjpeg.
This means the outside code (which depends on libjpeg) didn't include
the private dependency which holds the headers they need.
The same is true for the :simd build target. That dependency is needed
for MSAN.
This CL makes those dependencies public, so external code can continue
to rely on them.
Bug:922430
Change-Id: I62ef751adf5dc8f5ab80057146d36c81a0f3ce53
|
|
Some header dependencies were not correctly inherited.
Bug: angleproject:3139
Change-Id: Id40e820453567416dea33bed0dccc4317a27362d
|
|
In order to apply some performance updates from ARM, we need to update
libjpeg-turbo. These performance updates have yielded a 50% speedup on
some devices.
This CL updates our copy of libjpeg-turbo to v2.0.1 and re-applies our
local patches. This patch also deletes some extra files which were not
being used locally.
Update our local patch that was applied to fix http://crbug.com/398235
(https://codereview.appspot.com/229430043/). The original patch
incorrectly removed "& 0xFF" which limited an array index to within
that array's bounds (effectively reverting
https://github.com/libjpeg-turbo/libjpeg-turbo/commit/fa1d18385d904d530b4aec83ab7757a33397de6e).
Restore the mask, making the array access safe and fixing a graphical
glitch which would otherwise be introduced by this change.
Bug:922430
Change-Id: I3860fdb424deecf7a17818ed09a640e632e71f8d
|
|
Also delete libjpeg.gyp.
Bug: none
Change-Id: Ic4fd984c51976c7abe0ce85a9156d5434de5e254
|