summaryrefslogtreecommitdiff
path: root/BUILD.gn
AgeCommit message (Collapse)Author
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
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-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-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-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 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-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-29Add gtest wrapper for jpegtran testsJonathan Wright
Add gtests to test JPEG transcoding code paths. Bug: 993876 Change-Id: I4acd1379f83ca9e61c9f80109bdc42769919e16c
2020-06-24Add gtest wrapper for cjpeg testsJonathan Wright
Add gtests to test JPEG compression code paths. Bug: 993876 Change-Id: I354ab14fd6502adf432bfea32759cd8d062b888e
2020-06-19Add gtest wrapper for tjbench testsJonathan Wright
Add gtests for tiling unit tests that use tjbench. Bug: 993876 Change-Id: I80fe76754bee044a7601c55f2cd25e7e4c2c7e35
2020-06-16Add gtest wrapper for tjunittestsJonathan Wright
Adds a gtest wrapper and GN build configuration for the unit tests in tjunittest.c. Bug: 993876 Change-Id: Ic33c6930de0e0005aebb70cb358823640a35c8b7
2020-03-27Fix include directories for NASM.Dale Curtis
For some reason the -I. isn't working with JPEG turbo. R=cblume Bug: 766721 Change-Id: Ifa7fb8034bba6221a4428efe4715bdb29f909a5c
2020-03-27Switch to NASM for libjpeg_turbo.Dale Curtis
Bug: 766721 Change-Id: I436767e68406d557db3c3e85dcf65ad32c41f59a
2019-12-12Implement fast IDCT using Arm NEON intrinsicsJonathan Wright
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
2019-10-19Implement slow IDCT using Arm NEON intrinsicsJonathan Wright
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
2019-09-11Implement 2x2 IDCT using Arm NEON intrinsicsMartyn Jacques
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
2019-08-06Add Arm NEON implementation of h2v1_merged_upsampleJonathan Wright
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
2019-08-05Optimize for speed on Arm platformsJonathan Wright
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
2019-07-31Implement YCbCr->RGB using Arm NEON intrinsicsJonathan Wright
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
2019-07-10Fix static const data duplicationChris Davis
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
2019-05-31Add Arm NEON implementation of h2v2_fancy_upsampleJonathan Wright
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
2019-04-17libjpeg_turbo: Fix GN checkChris Blume
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
2019-03-04Fix gn header check.Jamie Madill
Some header dependencies were not correctly inherited. Bug: angleproject:3139 Change-Id: Id40e820453567416dea33bed0dccc4317a27362d
2019-03-01Update libjpeg-turbo to v2.0.1Chris Blume
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
2018-08-28Move src.git/build/secondary/third_party/libjpeg_turbo in-tree.Nico Weber
Also delete libjpeg.gyp. Bug: none Change-Id: Ic4fd984c51976c7abe0ce85a9156d5434de5e254