summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-03-21Revert "Add product_available to product available modules"HEADlineage-18.1Danny Lin
This reverts commit 8d75bdeaa660ea9a6488ab74f5a150e05a1e1b56. Android 11's Soong doesn't support product_available. Signed-off-by: Danny Lin <danny@kdrag0n.dev>
2021-02-10Upgrade libjpeg-turbo to 07a7d24ba3c91fa695d4f2b65f0788c0c80c7928 am: 561da2822fHaibo Huang
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1582228 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I89f15171623b4d6f6c5697b5f4f697a6888acecb
2021-02-09Upgrade libjpeg-turbo to 07a7d24ba3c91fa695d4f2b65f0788c0c80c7928Haibo Huang
Test: make Change-Id: Ie9d53e06f88a07f7b2b9caaa080ef3f617850c99
2021-02-02Move metadata in OWNERS files to DIR_METADATA filesEdward Lesmes
Bug: 1113033 Change-Id: I819a3c6c5337fe9183a4012d0df42bf023235a71
2021-01-29Upgrade libjpeg-turbo to fa0de07678c9828cc57b3eb086c03771912ba527 am: f7bb80dc5eHaibo Huang
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1564663 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I424422f737af06937feb673d3b347353f35e7460
2021-01-28Upgrade libjpeg-turbo to fa0de07678c9828cc57b3eb086c03771912ba527Haibo Huang
Test: make Change-Id: I5de273521ea963ae8720779874e9796e94433cd9
2021-01-18Add Arm Neon SIMD paths to MSan buildsJonathan Wright
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
2021-01-18Tidy up BUILD.gn fileJonathan Wright
Simplify conditions to use Arm Neon sources and reduce duplication for AArch64 and AArch32 Neon builds. Change-Id: I8c1f8547741db3ccc6db20e6fef9a73ca49db6d3
2021-01-12Cherry-pick Arm CLZ fixes from upstreamJonathan Wright
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
2021-01-06Upgrade libjpeg-turbo to 09efc26aff7983f4377a1743a197ca3d74796d7d am: 8091842bf9Haibo Huang
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1534067 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I4aebdc3d8a8e03fdf65f26732331bb5cb8b42924
2020-12-29Upgrade libjpeg-turbo to 09efc26aff7983f4377a1743a197ca3d74796d7dHaibo Huang
Test: make Change-Id: I81d381e5dcef8a1169021ca75ddf2cb6d505affd
2020-12-18Disable Neon Huffman encoding for WoA/Clang-clJonathan Wright
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
2020-12-10Upgrade libjpeg-turbo to e9a659a09e9600883e499c06ede04ba514d7f942 am: bbc7c083b0Elliott Hughes
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1522441 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I546dc2f1ccf4d35d5295dab3e83c082cff860a68
2020-12-09Upgrade libjpeg-turbo to e9a659a09e9600883e499c06ede04ba514d7f942Elliott Hughes
Test: make Change-Id: I7aed5163ade05029334917d4838295face7a82cb
2020-12-09Merge "Update to bbb828223e9c8f83f0e84db1e98b116029e62765." am: 7e6b8a99bbTreehugger Robot
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1519347 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: Iac62d7721c22626744e1915209646a4e1b4d3f35
2020-12-09Merge "Update to bbb828223e9c8f83f0e84db1e98b116029e62765."Treehugger Robot
2020-12-08Cherry-pick upstream fix for uninitialised readsJonathan Wright
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
2020-12-07Update to bbb828223e9c8f83f0e84db1e98b116029e62765.Elliott Hughes
Test: treehugger Change-Id: I5608ab5b6eb0f2225cd578a711ea0fa3be09f5e8
2020-12-03Switch to chromium upstream. am: 98e581f822Elliott Hughes
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1515004 Change-Id: Idbd5264fe0fb45c94218794d9a27d78b0daeb185
2020-12-02Switch to chromium upstream.Elliott Hughes
Bug: https://issuetracker.google.com/135180511 Test: treehugger Change-Id: I0c78ec9b07debdb501a96df0d6cb2f9a24b5fc84
2020-11-30Merge "Run the CtsGraphicsTestCases in presubmit for libjpeg-turbo." am: ↵Elliott Hughes
ff78ee5a32 Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1507548 Change-Id: I2bc211458fb7cdba6643ef1657526b73666b65b1
2020-11-30Merge "Run the CtsGraphicsTestCases in presubmit for libjpeg-turbo."Elliott Hughes
2020-11-30Update libjpeg-turbo to v2.0.90 (2.1 beta1)Jonathan Wright
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
2020-11-30Add product_available to product available modules am: 8d75bdeaa6Justin Yun
Original change: https://android-review.googlesource.com/c/platform/external/libjpeg-turbo/+/1511408 Change-Id: I69607cae8e5c7993262868c2db72326f624a554f
2020-11-25Add product_available to product available modulesJustin Yun
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
2020-11-20Run the CtsGraphicsTestCases in presubmit for libjpeg-turbo.Elliott Hughes
Bug: https://issuetracker.google.com/135180511 Test: treehugger Change-Id: I4245443bba3f406fba31a253bead147663e5746b
2020-09-15GCC: fix NEON type castsJose Dapena Paz
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
2020-09-14Implement accurate DCT using Arm NEON intrinsicsJonathan Wright
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
2020-09-14Expand is_linux to is_linux || is_chromeos.Hidehiko Abe
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
2020-09-11Implement fast DCT using Arm NEON intrinsicsJonathan Wright
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
2020-09-10Specify 16-byte alignment for assembly functionsJonathan Wright
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
2020-09-03Implement quantization using Arm NEON intrinsicsJonathan Wright
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
2020-09-03Implement sample conversion using Arm NEON intrinsicsJonathan Wright
Adds an Arm NEON intrinsics implementation of 'convsamp'. Removes the NEON assembly implementations for both AArch32 and AArch64. Bug: 922430 Change-Id: I77a705c6ebb1eb6be5ec9b73fc440046b84df76e
2020-08-25Add compiler-independent alignment macroJonathan Wright
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
2020-08-10Add Arm NEON implementation of RGB->GrayscaleJonathan Wright
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
2020-08-10Implement RGB->YCbCr using Arm NEON intrinsicsJonathan Wright
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
2020-08-10Add Arm NEON implementation of h2v2_downsampleJonathan Wright
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
2020-08-10Add Arm NEON implementation of h2v1_downsampleJonathan Wright
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
2020-08-10Remove duplicate MSan checkJonathan Wright
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
2020-08-10Refactor floating-point test parametersJonathan Wright
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
2020-08-07Update libjpeg-turbo to v2.0.5Jonathan Wright
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
2020-08-06Use hidden visibility for jpeg_nbits_table.Elliott Hughes
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
2020-07-23Fix file path manipulation on WindowsJonathan Wright
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
2020-07-15Fix header dependency chains in BUILD.gn fileJonathan Wright
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
2020-07-15Fix guard for unit test targetJonathan Wright
Guards the libjpeg_turbo_unittests target using the same condition that imports test.gni. Bug: 993876 Change-Id: I3cb6d7f31c9118aaca5f151780ee4e57397c5f37
2020-07-15Factor common gtest utility codeJonathan Wright
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
2020-07-15Move gtest files to separate folderJonathan Wright
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
2020-07-15Add gtest wrapper for djpeg testsJonathan Wright
Add gtests to test JPEG decompression code paths. Bug: 993876 Change-Id: I8ff99a8e4f81cacb80cdcaff5bcab318eabc96cd
2020-06-29Refactor djpeg.c to provide test interfaceJonathan Wright
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
2020-06-29Add gtest wrapper for jpegtran testsJonathan Wright
Add gtests to test JPEG transcoding code paths. Bug: 993876 Change-Id: I4acd1379f83ca9e61c9f80109bdc42769919e16c