Age | Commit message (Collapse) | Author |
|
This reverts commit 8d75bdeaa660ea9a6488ab74f5a150e05a1e1b56.
Android 11's Soong doesn't support product_available.
Signed-off-by: Danny Lin <danny@kdrag0n.dev>
|
|
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1582228
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I89f15171623b4d6f6c5697b5f4f697a6888acecb
|
|
Test: make
Change-Id: Ie9d53e06f88a07f7b2b9caaa080ef3f617850c99
|
|
Bug: 1113033
Change-Id: I819a3c6c5337fe9183a4012d0df42bf023235a71
|
|
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1564663
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I424422f737af06937feb673d3b347353f35e7460
|
|
Test: make
Change-Id: I5de273521ea963ae8720779874e9796e94433cd9
|
|
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
|
|
Cherry-pick two patches from upstream that fix the Neon intrinsics
Huffman encoding path and reduce the memory footprint on Windows on
Arm:
https://github.com/libjpeg-turbo/libjpeg-turbo/commit/d2c407995992be1f128704ae2479adfd7906c158
https://github.com/libjpeg-turbo/libjpeg-turbo/commit/74e6ea45e3547ae85cd43efcdfc24a6907a2154e
Re-enable the Neon intrinsics Huffman encoding path for WoA compiled
with clang-cl.
Bug: 1160249
Change-Id: I0849ca54b8f4f8f38c9b293ea48c9de1c60be86f
|
|
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1534067
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I4aebdc3d8a8e03fdf65f26732331bb5cb8b42924
|
|
Test: make
Change-Id: I81d381e5dcef8a1169021ca75ddf2cb6d505affd
|
|
The Neon SIMD path for Huffman encoding (baseline, not progressive)
does not work properly when compiled for Windows on Arm (WoA) using
Clang-cl.
For now - as the cause of the problem is not trivial to diagnose or
fix - disable the Neon Huffman encoding path when compiling for WoA
using Clang-cl.
Bug: 1160249
Change-Id: I6381cbe8cabc218ab6541f2b64fa07b9a83fcd12
|
|
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1522441
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I546dc2f1ccf4d35d5295dab3e83c082cff860a68
|
|
Test: make
Change-Id: I7aed5163ade05029334917d4838295face7a82cb
|
|
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1519347
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Iac62d7721c22626744e1915209646a4e1b4d3f35
|
|
|
|
Chromium fuzzers running with MSan found the use of uninitialised
values when decoding a progressive JPEG image.
This commit cherry-picks the upstream fix:
https://github.com/libjpeg-turbo/libjpeg-turbo/commit/110d8d6dcafaed517e8f77a6253169535ee3a20e
Original commit message:
decompress_smooth_data(): Fix another uninit. read
Regression introduced by 42825b6
The test case
https://user-images.githubusercontent.com/3491627/101376530-fde56180-38b0-11eb-938d-734119a5b5ba.jpg
is a malformed progressive JPEG image containing an interleaved Y/Cb/Cr
DC scan followed by two non-interleaved Y DC scans. Thus, the
prev_coef_bits[] array was initialized for the Y component but not the
other components, the uninitialized values for Cb and Cr were
transferred to the prev_coef_bits_latch[] array in smoothing_ok(), and
because cinfo->master->last_good_iMCU_row was 0,
decompress_smooth_data() read those uninitialized values when attempting
to smooth the second iMCU row.
Possibly fixes #478
Bug: 1156513
Change-Id: Iff97f04dd27ed95050b05dbd1845489555891a9e
|
|
Test: treehugger
Change-Id: I5608ab5b6eb0f2225cd578a711ea0fa3be09f5e8
|
|
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1515004
Change-Id: Idbd5264fe0fb45c94218794d9a27d78b0daeb185
|
|
Bug: https://issuetracker.google.com/135180511
Test: treehugger
Change-Id: I0c78ec9b07debdb501a96df0d6cb2f9a24b5fc84
|
|
ff78ee5a32
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1507548
Change-Id: I2bc211458fb7cdba6643ef1657526b73666b65b1
|
|
|
|
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
|
|
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1511408
Change-Id: I69607cae8e5c7993262868c2db72326f624a554f
|
|
vendor_available modules were available to product modules.
However, not all vendor_available modules are required to be
available to product modules. Some modules want to be available only
to product modules but not vendor modules.
To cover the requirement, we separate product_available from
vendor_available.
vendor_available will not provide product available module.
Bug: 150902910
Test: build
Change-Id: I736cb65964ad8201d85749856ab922a8b45745ee
|
|
Bug: https://issuetracker.google.com/135180511
Test: treehugger
Change-Id: I4245443bba3f406fba31a253bead147663e5746b
|
|
GCC9+ is more strict with the type casts, so it does not accept
implicit casting from int64x1_t to int64_t or similar. And is also
rejects implicit casting from signed to unsigned vectors.
Bug: 819194
Change-Id: I35d269108645e8eb0bd8cffbfaf69a70f82d766f
|
|
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
|
|
A previous commit that implemented h2v2 downsampling using Arm NEON
intrinsics removed ".balign 16" along with the NEON assembly
function. This function alignment was the only one of its type in
jsimd_neon.S and seems to have accidentally ensured that all of the
other functions declared in the same file also had that alignment.
Removing the 16-byte alignment specification meant that the Mac arm64
build of Chromium broke - as the remaining assembly functions did not
have the right alignment.
This commit specifies 16-byte alignment for all of the NEON assembly
functions in jsimd_neon.S
Bug: 922430
Change-Id: Ie827cf2166a6ac5e2b69db3d2140ed91ab2798e3
|
|
Adds an Arm NEON intrinsics implementation of DCT coefficient
quantization.
Removes the NEON assembly implementations for both AArch32 and
AArch64.
Bug: 922430
Change-Id: I114157f8186e6a2a3b3b78db7869fd55ce7f55b3
|
|
Adds an Arm NEON intrinsics implementation of 'convsamp'.
Removes the NEON assembly implementations for both AArch32 and
AArch64.
Bug: 922430
Change-Id: I77a705c6ebb1eb6be5ec9b73fc440046b84df76e
|
|
Some variables and structures need memory alignment and the syntax
for declaring it differs when using MSVC compared to GCC and Clang.
This commit adds a compiler-independent alignment macro and uses it
to apply 16-byte alignment for constant pools and temporary buffers
used in Arm NEON SIMD code.
Bug: 922430
Change-Id: Ic2beb7bae88504ba7f3e86e33ef31bf388774403
|
|
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 h2v2_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: Ic529dfb1533ffdd56f9d92eb521f6a4299345adc
|
|
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
|
|
Update Chromium's copy of libjpeg-turbo to the latest stable upstream
release (v2.0.5) and reapply our local changes documented in
README.chromium. This update addresses three CVEs - CVE-2018-19664,
CVE-2018-20330, CVE-2018-20330 - that do not affect Chromium. The
fixes do, however, satisfy UBSan - allowing Chromium's libjpeg-turbo
to be used in AOSP.
Cherry-pick one additional change[1] from upstream to prevent AArch64
Windows builds from failing.
[1] https://github.com/libjpeg-turbo/libjpeg-turbo/commit/6ee5d5f568fda1a7c6a49dd8995f2d89866ee42d
Bug: 922430
Bug: https://issuetracker.google.com/135180511
Change-Id: I146fe82f7a016ce393eb0d37aebe0b7c2492a9da
|
|
The non-upstream change to reuse one copy of jpeg_nbits_table rather
than inline it with the two assembler routines that use it causes issues
when generating a shared library with lld. Specifically:
movzx edx, byte [GOTOFF(ebp, jpeg_nbits_table + ecx)]
causes invalid relocations for jpeg_nbits_table.
Normally if the target symbol is local, both movl $1, foo@GOTOFF(%ecx)
and leal foo@GOTOFF(%eax), %eax will produce a R_386_GOTOFF relocation
referencing a STT_SECTION local symbol. There is no issue for GNU ld or
LLD.
If the target symbol is global and preemptible LLD will report an error
(GNU ld permissively allows it).
The fix is to make jpeg_nbits_table hidden.
Bug: http://b/162610242
Bug: https://issuetracker.google.com/135180511
Change-Id: I4fe75ca0069a047db05ab18eb36e94bf535878f5
|
|
File path manipulation code introduced in previous commits only
supported char_t[]-based POSIX pathnames. This commit adds support
for wchar_t[]-based Windows pathnames.
Bug: 993876
Change-Id: Ie51eb0a18063ad3209779d9a799309e7a7cd729e
|
|
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
|
|
djpeg.c contains a standalone program to decode JPEG images. One use
of djpeg is to generate input for libjpeg-turbo unit tests.
This commit refactors djpeg.c to provide an interface to run the
djpeg code programmatically. A gtest wrapper containing JPEG
decompression unit tests will be introduced in a subsequent commit.
Bug: 993876
Change-Id: I22e35b14b14968156dae9c74785c5e95e2c0c3cb
|
|
Add gtests to test JPEG transcoding code paths.
Bug: 993876
Change-Id: I4acd1379f83ca9e61c9f80109bdc42769919e16c
|