aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-31Add //third_party/cpu_features to DEPSPrashanth Swaminathan
Chromium is migrating uses of //third_party/android_ndk:cpu_features to //third_party/cpu_features:ndk_compat upstream. Add the repository here to fix the roller. Bug: 1446042 Change-Id: I89344ed308b8168547f26f217f05013c87b60bb1 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4576444 Reviewed-by: Mirko Bonadei <mbonadei@chromium.org> Commit-Queue: Prashanth Swaminathan <prashanthsw@google.com>
2023-05-30Handle DEPS targets that target the HEAD revisionPrashanth Swaminathan
Some targets in DEPS files do not specify a revision and always pull the HEAD revision instead. In these cases, the URL is not split by '@'. Handle these cases by assuming HEAD. Test: Verified local roll attempt does not fail when processing DEPS. Change-Id: I649195d90933ed58a18d76c20ac7d80ab01c295d Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4568777 Commit-Queue: Prashanth Swaminathan <prashanthsw@google.com> Reviewed-by: Mirko Bonadei <mbonadei@chromium.org>
2023-05-30[RVV] Use LMUL=2 for I4{44,22}To{ARGB,RGB24,RGBA} conversionBruce Lai
Replace vv+m1(LMUL=1) with vx+m2(LMUL=2). Some kernels' asm code might contain register spill(1~2). Change-Id: Ie3655f250d17f37c1ba9039474ece43ede98ede0 Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4573159 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-30[RVV] Enable CopyRow_RVV, InterpolateRow_RVV, {Merge,Split}UVRow_RVVDarren Hsieh
* Run on SiFive internal FPGA: MergeUVPlane_Opt(~6x vs scalar) SplitUVPlane_Opt(~6x vs scalar) TestCopyPlane(~8x vs scalar) ARGBInterpolate0_Opt(~10x vs scalar) ARGBInterpolate64_Opt(~9x vs scalar) ARGBInterpolate168_Opt(~9x vs scalar) ARGBInterpolate192_Opt(~8.5x vs scalar) ARGBInterpolate255_Opt(~8x vs scalar) Bug: libyuv:956 Change-Id: I8372341865f75f42e30371ef943d5c2e4be7b79a Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4574186 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-05-30Remove extraneous quote from clobber listFrank Barchard
Bug: None Change-Id: Ie20574d0f9c8c2f074247405b294b49c3406448d Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4568770 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Mirko Bonadei <mbonadei@chromium.org>
2023-05-26Wrap neon registers in {} for the neon MT2T unpack implementation. Some ↵Justin Green
compilers throw a syntax error otherwise. Change-Id: Ic169dcfe4d9bb9bf6d0dcae977d6cf510a7a60bf Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4568904 Commit-Queue: Justin Green <greenjustin@google.com> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-24Fix SplitRGB clobber list to include all registers usedFrank Barchard
Bug: None Change-Id: Icac4becb0537903ab87495fb0e2a2b750e1eca4f Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4563355 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: David Gao <davidgao@google.com>
2023-05-22Save boxwidth - minboxwidth in a local variableWan-Teh Chang
Avoid repetitions of the expression boxwidth - minboxwidth. Change-Id: Ib53fb6b06a926b80ff9a64cc5d499aeef0894c99 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4408062 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-22Manually remove rounding value inside yb(yuvconstant) in row_rvv.ccBruce Lai
After libyuv:961 is completed, yb(yuvconstant) will no longer contain rounding bias +32 for fixed-point. This CL removes rounding bias(-32) manmually in row_rvv.cc. Hence, all fixed-point related codes' rounding mode is changed to round-to-nearest-up "0" in row_rvv.cc. Also, replace vwmul+vnsrl w/ vmulh in I400ToARGBRow_RVV. Bug: libyuv:956, libyuv:961 Change-Id: I10e34668a2332e38393e9d68414f07aafb6c7cf7 Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4550591 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-20Enable {J400/I400}ToARGBRow_RVVWan-Teh Chang
Run on SiFive internal FPGA*: I400ToARGB_Opt (~8x vs scalar) J400ToARGB_Opt (~10x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 Bug: libyuv:956, libyuv:961 Change-Id: If4e21ec85c4ff79083ec16a6faae0e457129a8de Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4544972 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Wan-Teh Chang <wtc@google.com>
2023-05-19Optimize the following 19 functions with LSX in row_lsx.cc.Lu Wang
UYVYToYRow_LSX, UYVYToUVRow_LSX, UYVYToUV422Row_LSX, ARGBToUVRow_LSX, ARGBToRGB24Row_LSX, ARGBToRAWRow_LSX, ARGBToRGB565Row_LSX, ARGBToARGB1555Row_LSX, ARGBToARGB4444Row_LSX, ARGBToUV444Row_LSX, ARGBMultiplyRow_LSX, ARGBAddRow_LSX, ARGBSubtractRow_LSX, ARGBAttenuateRow_LSX, ARGBToRGB565DitherRow_LSX, ARGBShuffleRow_LSX, ARGBShadeRow_LSX, ARGBGrayRow_LSX, ARGBSepiaRow_LSX Bug: libyuv:913 Change-Id: I02c0c9d68b229c4a66c96837e9b928c2f5dda1f3 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4546814 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-05-17ARGBToI420Alpha function to convert ARGB to I420 with AlphaFrank Barchard
Bug: b/281866362 Change-Id: Ic1093a887fb483f134c78909cf1ee7495e7345ba Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4534100 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Wan-Teh Chang <wtc@google.com>
2023-05-16Enable I{422,444}AlphaToARGBRow_RVV & ARGBAttentuateRow_RVVBruce Lai
Run on SiFive internal FPGA: I444AlphaToARGB_Opt (~16x vs scalar) I422AlphaToARGB_Opt (~10x vs scalar) ARGBAttenuate_Opt (~3x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 Change-Id: I0046eb7af8104bc8e13cee1cb91a19f90940d5b0 Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4535657 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-11Bump version and apply clang formatFrank Barchard
Bug: libyuv:956 Change-Id: I2375a02583789af2a5f13f8dba6c663d5975aaa9 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4522352 Reviewed-by: Mirko Bonadei <mbonadei@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-05-11Enable ARGBToYMatrixRow_RVV/RGBAToYMatrixRow_RVV/RGBToYMatrixRow_RVVBruce Lai
Run on SiFive internal FPGA: ARGBToJ400_Opt (~6x vs scalar) RGBAToJ400_Opt (~6x vs scalar) RGB24ToJ400_Opt (~5.5x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 Change-Id: Ia3ce8cea7962fbd8618cc23e850a7913c9cabf4f Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4521783 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-05-10Enable I444To{ARGB,RGB24}Row_RVVDarren Hsieh
Run on SiFive internal FPGA: I444ToARGB_Opt (~16x vs scalar) I444ToRGB24_Opt (~10x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 Change-Id: Idae7dc46ef648beaa14b58ba3eb56b67b17c9b3b Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4520761 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-10Enable I422To{ARGB,RGBA,RGB24}Row_RVVDarren Hsieh
Run on SiFive internal FPGA: I422ToARGB_Opt (~10x vs scalar) I422ToRGBA_Opt (~10x vs scalar) I420ToRGB24_Opt (~8x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 This CL manually sets rounding mode, since we use fixed-point vector narrowing clip. There is no definition about default value for fixed-point rounding mode. https://github.com/riscv/riscv-v-spec/blob/master/v-spec.adoc#38-vector-fixed-point-rounding-mode-register-vxrm The behavior could be different on differet paltforms. To avoid unexpected behavior, we set rounding mode manually. Change-Id: I90f0dcb90c37f7da7caab8eb1df6c9c7a3c874a8 Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4512373 Reviewed-by: Wan-Teh Chang <wtc@google.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-10Optimize the following functions with LSX.Lu Wang
MirrorRow_LSX, MirrorUVRow_LSX, ARGBMirrorRow_LSX, I422ToYUY2Row_LSX, I422ToUYVYRow_LSX, I422ToARGBRow_LSX, I422ToRGBARow_LSX, I422AlphaToARGBRow_LSX, I422ToRGB24Row_LSX, I422ToRGB565Row_LSX, I422ToARGB4444Row_LSX, I422ToARGB1555Row_LSX, YUY2ToYRow_LSX, YUY2ToUVRow_LSX, YUY2ToUV422Row_LSX Bug: libyuv:913 Change-Id: I46cec605001d7ddd73846eed6d0a77f936b6dc53 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4515191 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-09row_win.cc: fix ARM64EC buildJames Zern
include intrin.h rather than emmintrin.h; fixes: C:\...\VC\Tools\MSVC\14.35.32215\include\emmintrin.h(28,1): fatal error C1189: #error: this header should only be included through Change-Id: Ief9c81f6f1971e552c8aac301d678b64fe5bd7cc Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4513825 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-09MergeUVRow_AVX2 implementation is consistent in row_win.cc and ↵shaodiwei
row_gcc.cc,the commit can fix memory is wrote out of bounds Change-Id: I4b771a46fc853effc4c0fa3ae8032322a8369dc9 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4514810 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-05-09yuvconstants.c: fix double->float conv warningsJames Zern
under Visual Studio: ...\util\yuvconstants.c(57,14): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data ...\util\yuvconstants.c(58,14): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data Change-Id: I3c49e670d9e4217ef3ed0acd31a9a86fc54c4694 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4513826 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-09Add RVV files to Android and GN buildsPrashanth Swaminathan
Include row_rvv.cc source file and support for riscv64 builds in Android and GN builds. Adds GN build flag to disable RISC-V vector operations. Switches dynamic linker to 64-bit by default, with exceptions for 32-bit targets as defined in //build/config/android/abi.gni. Bug: b/280364043 Test: Verified local build via Android and GN. Change-Id: I1bbd36f16aafa16d4bfd117de03354be79743a9d Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4501727 Reviewed-by: Mirko Bonadei <mbonadei@chromium.org> Commit-Queue: Prashanth Swaminathan <prashanthsw@google.com> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-05-08Roll chromium_revision d4adab061f..84f3f93bac (1109888:1140362)Mirko Bonadei
Change log: https://chromium.googlesource.com/chromium/src/+log/d4adab061f..84f3f93bac Full diff: https://chromium.googlesource.com/chromium/src/+/d4adab061f..84f3f93bac Changed dependencies: * src/base: https://chromium.googlesource.com/chromium/src/base/+log/d0fee1a372..9d22e0aa98 * src/build: https://chromium.googlesource.com/chromium/src/build/+log/60a5c0d8b7..76a2b25f9d * src/buildtools: https://chromium.googlesource.com/chromium/src/buildtools/+log/d1127a2c8d..a26ff314e9 * src/buildtools/third_party/libc++/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git/+log/e136ec5032..f8279b0108 * src/buildtools/third_party/libc++abi/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git/+log/ff8e691cbc..66967963e9 * src/buildtools/third_party/libunwind/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git/+log/c5e861c7b4..88bd83fe09 * src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/09f48d9955..4acfa83682 * src/testing: https://chromium.googlesource.com/chromium/src/testing/+log/ce7bc51b4d..1db5c29c08 * src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/7cfb60d8ce..223a8c15c8 * src/third_party/boringssl/src: https://boringssl.googlesource.com/boringssl.git/+log/ca1690e221..1b724a6b8c * src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/9c6c41afcf..e2a65ffc7d * src/third_party/colorama/src: https://chromium.googlesource.com/external/colorama.git/+log/799604a104..3de9f013df * src/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+log/eee53367c1..bcb9577a46 * src/third_party/freetype/src: https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/3f01161ff2..9127c68f59 * src/third_party/harfbuzz-ng/src: https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git/+log/2822b589bc..2175f5d050 * src/third_party/icu: https://chromium.googlesource.com/chromium/deps/icu.git/+log/1e49ac26dd..d8daa943f6 * src/third_party/libjpeg_turbo: https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git/+log/0b6e6a1522..aa4075f116 * src/third_party/mockito/src: https://chromium.googlesource.com/external/mockito/mockito.git/+log/04a2a289a4..7c3641bcef * src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/fce3426afe..da6696c8e4 DEPS diff: https://chromium.googlesource.com/chromium/src/+/d4adab061f..84f3f93bac/DEPS Clang version changed llvmorg-17-init-2387-g68e81d7e:llvmorg-17-init-10134-g3da83fba Details: https://chromium.googlesource.com/chromium/src/+/d4adab061f..84f3f93bac/tools/clang/scripts/update.py BUG=None Change-Id: Ieadd3303702702e27e3581f8abde3472e4a33fac Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4510026 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-05-04Fix compile error for riscv scalar & simplify cmake cross build flowBruce Lai
1. Fix compile error when build riscv without using vector 2. Fix run_qemu.sh misused v=true for USE_RVV=OFF case 3. [cmake] Fix warning by rename TEST to UNIT_TEST Warning log: CMake Warning (dev) at CMakeLists.txt:57 (if): [54/1931] Policy CMP0064 is not set: Support new TEST if() operator. Run "cmake --help-policy CMP0064" for policy details. Use the cmake_policy command to set the policy and suppress this warning. TEST will be interpreted as an operator when the policy is set to NEW. Since the policy is not set the OLD behavior will be used. This warning is for project developers. Use -Wno-dev to suppress it. 4. [cmake] Simplify logic for cross-build Bug: libyuv:956 Change-Id: I120402fc7d6d86403e7d974180b81f4f9c663e36 Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4486239 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Mirko Bonadei <mbonadei@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-05-04Fix TestLinuxRVV test failBruce Lai
Fail log: [ RUN ] LibYUVBaseTest.TestLinuxRVV Note: testing to load "../../unit_test/testdata/riscv64.txt" /scratch/brucel/libyuv/src/unit_test/cpu_test.cc:290: Failure Expected equality of these values: kCpuHasRVV | kCpuHasRVVZVFH Which is: 1610612736 RiscvCpuCaps("../../unit_test/testdata/riscv64_rvv_zvfh.txt") Which is: 536870912 [ FAILED ] LibYUVBaseTest.TestLinuxRVV (17 ms) Reason: The root cause is "\n" may be contained in the ext variable. The last of extension substring contains "\n". For instance, test case riscv64_rvv_zvfh.txt, the last substring is "zvfh\n" instead of "zvfh". Solved this failure by removing "\n" which is at the end of line. NOTE: We avoid using strstr() to solve the problem here. Becasue using strstr() will violate the parsing rule, if future extension contains "zvfh"(e.g zvfhxxx). Log after modification: [ RUN ] LibYUVBaseTest.TestLinuxRVV Note: testing to load "../../unit_test/testdata/riscv64.txt" [ OK ] LibYUVBaseTest.TestLinuxRVV (38 ms) Change-Id: I7b7db98dbc5388cbc148423da6892b8f0be64599 Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4498101 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-05-03Define enable_safe_libcxx in build_overrides/build.gni.Daniel Cheng
enable_safe_libcxx will be overridable by projects that embed Chrome's //build using the build_overrides mechanism. All downstream projects will need to define this new variable so Chrome can stop conditionally defining enable_safe_libcxx upstream. Bug: chromium:1385662 Change-Id: Iffae78c07a5c9b58db90ac037ab6d99577fd439c Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4264580 Commit-Queue: Mirko Bonadei <mbonadei@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Mirko Bonadei <mbonadei@chromium.org>
2023-04-28Add Split/Merge RGB/ARGB/XRGB Row_RVVDarren Hsieh
* Run on SiFive internal FPGA: SplitRGBPlane_Opt (~6.87x vs scalar) SplitARGBPlane_Opt (~10.77x vs scalar) SplitXRGBPlane_Opt (~18.69x vs scalar) MergeRGBPlane_Opt (~3.63x vs scalar) MergeARGBPlane_Opt (~3.50x vs scalar) MergeXRGBPlane_Opt (~2.90x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 - include a fix to avoid implict conversion warning between size_t & int. Bug: libyuv:956 Change-Id: Icd79b282b04ea3981e7fd4e6d547da6708d82516 Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4443411 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-04-27cpuid for arm/mips/riscv initialize bufferFrank Barchard
- change cpu printf to hex to better show flags util/cpuid: Cpu Flags 0x30000001 Has RISCV 0x10000000 Has RVV 0x20000000 [ RUN ] LibYUVBaseTest.TestCpuHas Cpu Flags 0x30000001 Has RISCV 0x10000000 Has RVV 0x20000000 Has RVVZVFH 0x0 [ OK ] LibYUVBaseTest.TestCpuHas (1 ms) [ RUN ] LibYUVBaseTest.TestCompilerMacros __ATOMIC_RELAXED 0 __cplusplus 201703 __clang_major__ 9999 __clang_minor__ 0 __GNUC__ 4 __GNUC_MINOR__ 2 __riscv 1 __riscv_vector 1 __clang__ 1 __llvm__ 1 __pic__ 2 INT_TYPES_DEFINED __has_feature Bug: libyuv:956 Change-Id: Iee4f1f34799434390e756de1e6c2c4596d82ace5 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4484957 Reviewed-by: Wan-Teh Chang <wtc@google.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-26Rename variables to match layout of ABGRFrank Barchard
Bug: None Change-Id: Ia1d596b6e108307fe042a03c34162b25152293d4 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4461967 Reviewed-by: Justin Green <greenjustin@google.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-20Optimized AR64/AB64 <-> ARGB with RVVBruce Lai
* Run on SiFive internal FPGA: ARGBToAR64_Opt (~13.7x vs scalar) ARGBToAB64_Opt (~5.81x vs scalar) AR64ToARGB_Opt (~15.8x vs scalar) AB64ToARGB_Opt (~2.40x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 Bug: libyuv:956 Change-Id: Ida642a5077f59d25fb7c5328f671956b2293dadd Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4442913 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-20[ios-blink] Enabled JPEG for ios-blinkAbhijeet Kandalkar
MJPGToI420 and MJPGToNV12 are needed for successfully compiling /m/c/v/m/sample_buffer_transformer_mac.cc on ios-blink port. This CL enables JPEG support for ios-blink port of chromium. Bug: 1411704 Change-Id: I2009b371a35fa881b9e95ad4fad22356992cef52 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4454847 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-19Remove out-of-date description for testing RVV on QEMUBruce Lai
Aafter commit in CL: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4429570 We don't need to hack the code for testing RVV on QEMU at all. Change-Id: Ic123d88b7ccc8dd54768e33cb0db363472be6ffc Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4442914 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-18Enable RVV if qemu is detectedFrank Barchard
- include a fix for jpeg unittests to do at least 1 iteration - include a fix for scale uv to only use linearup2 if filter is linear Tested on qemu with Intel host: [ RUN ] LibYUVBaseTest.TestCpuHas Cpu Flags 805306369 Has RISCV 268435456 Has RVV 536870912 Has RVVZVFH 0 Has X86 0 Bug: libyuv:956, libyuv:959, libyuv:960 Change-Id: I4a1b66f83d82ba127780f52526153d586db90111 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4429570 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Randall Bosetti <rlb@google.com>
2023-04-13Add ARGBToRAWRow_RVV, ARGBToRGB24Row_RVV, RGB24ToARGBRow_RVVDarren Hsieh
* Run on SiFive internal FPGA: ARGBToRAW_Opt (~1.55x vs scalar) ARGBToRGB24_Opt (~1.44x vs scalar) RGB24ToARGB_Opt (~1.77x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 Bug: libyuv:956 Change-Id: I26722f6848cd68684d95d9a7ee06ce0416e7985d Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4413083 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-12UVScale down by 2 fix for C and optimize for NEONFrank Barchard
- update cpu_id to use "re" for fopen to avoid leaking handles if a thread is started while the file is open. Bug: libyuv:958 Change-Id: I1af9de68fce12e440e1226fc8070634ccb1bf090 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4417176 Reviewed-by: Wan-Teh Chang <wtc@google.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-10Any functions use memset(vin, 0, sizeof(vin)) for GCC warning fixFrank Barchard
- Fix -Wmemset-elt-size warning for GCC - Use vin for inputs and vout for outputs Bug: None Change-Id: Iefd418dc884b4d062e1fdd9215319c8838c49eaa Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4412065 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Justin Green <greenjustin@google.com>
2023-04-10Fix macro define typo in scale_uv.ccDarren Hsieh
The correct define can be found in scale_row.h Change-Id: I633ed47006c7bd8014038493005c2d934489ff18 Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4411353 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-10Enable RISC-V cmake build & qemu testBruce Lai
1. Provide script to build qemu & clang locally 2. Enable risc-v cmake build with clang 3. Enable test with qemu 4. Update doc to introduce how to cross-build & test with qemu Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Change-Id: I7ce8315993b0e8300e8fd5b1632610a91a4e9f52 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4401740 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-08row_any,ANYDETILE: fix -Wmemset-elt-size warningJames Zern
under gcc 12.2.0 using -Wall: source/row_any.cc: In function ‘void libyuv::DetileRow_16_Any_SSE2(const uint16_t*, ptrdiff_t, uint16_t*, int)’: source/row_any.cc:2287:11: warning: ‘memset’ used with length equal to number of elements without multiplication by element size [-Wmemset-elt-size] 2287 | memset(temp, 0, 16 * BPP); /* for msan */ | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ source/row_any.cc:2308:1: note: in expansion of macro ‘ANYDETILE’ 2308 | ANYDETILE(DetileRow_16_Any_SSE2, DetileRow_16_SSE2, uint16_t, 2, 15) This increases the memset to the full buffer size, which may not be strictly necessary. Change-Id: Iea2fc649990ee84ea9aa8020d6f6b25e012b18fb Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4406599 Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-04-07Add RAWToARGBRow_RVV,RAWToRGBARow_RVV,RAWToRGB24Row_RVVDarren Hsieh
* Run on SiFive internal FPGA: RAWToARGB_Opt (~2x vs scalar) RAWToRGBA_Opt (~2x vs scalar) RAWToRGB24_Opt (~1.5x vs scalar) LIBYUV_WIDTH=1280 LIBYUV_HEIGHT=720 LIBYUV_REPEAT=10 Change-Id: I21a13d646589ea2aa3822cb9225f5191068c285b Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com> Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4408357 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-07Enable cross_build gtest in CMake build flowBruce Lai
Signed-off-by: Bruce Lai <bruce.lai@sifive.com> Change-Id: Ibdc742040940ee6c6402de103759f979f9429419 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4401739 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-04-06Add riscv cpu info detection.Darren Hsieh
* Supports: * The standard single-letter Vector detection. * Vector fp16 detection. Signed-off-by: Darren Hsieh <darren.hsieh@sifive.com> Change-Id: Ia7ee1bd8ec1a990f1b2b1700805942e99c0aa87b Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4401738 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-04-05Add assertions for the Clang static analyzerWan-Teh Chang
The Clang static analyzer (scan-build) in LLVM 14 warns about array index out of bounds in scaletbl[boxwidth - minboxwidth] in ScaleAddCols2_C() and ScaleAddCols2_16_C(). The scaletbl array has two elements. It's not clear the index boxwidth - minboxwidth is either 0 or 1. Change-Id: I072476e86950154beffe6b1a89915755118b3cbd Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4403882 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org> Commit-Queue: Wan-Teh Chang <wtc@google.com>
2023-03-24AArch32 YUVTORGB_SETUP use load and dup to avoid modifying pointerFrank Barchard
- Allows code to be optimized with clang 17 -flto-thin - Bump version number to 1864 to allow detection of fix - Apply clang format to standardize formatting; No impact on code generated Bug: chromium:1424089 Change-Id: Ib745836b27915a5e4cb1d7d928ee52659360612b Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4370052 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Justin Green <greenjustin@google.com>
2023-03-24clang 17 -flto-thin bug fix for Neon YUVtoRGB and ARGBToRGB565DitherFrank Barchard
- YUV to RGB AArch32 kRGBCoeffBias rewind pointer - ARGBToRGB565Dither declare width and source pointers as modified Bug: chromium:1424089 Change-Id: I987180652331bab16ce27d8d166399a687ee890e Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4370099 Reviewed-by: Mirko Bonadei <mbonadei@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-03-16GCC warning fix for MT2TFrank Barchard
- Fix redundent assignment compile warning in GCC - Apply clang-format - Bump version to 1863 Bug: libyuv:955 Change-Id: If2b6588cd5a7f068a1745fe7763e90caa7277101 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4344729 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Mirko Bonadei <mbonadei@chromium.org>
2023-03-14M2T2 Unpack fixesJustin Green
Fix the algorithm for unpacking the lower 2 bits of M2T2 pixels. Bug: b:258474032 Change-Id: Iea1d63f26e3f127a70ead26bc04ea3d939e793e3 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4337978 Commit-Queue: Justin Green <greenjustin@google.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org>
2023-03-03Transpose 4x4 for SSE2 and AVX2Frank Barchard
Skylake Xeon AVX2 Transpose4x4_Opt (290 ms) SSE2 Transpose4x4_Opt (302 ms) C Transpose4x4_Opt (522 ms) AMD Zen2 AVX2 Transpose4x4_Opt (136 ms) SSE2 Transpose4x4_Opt (137 ms) C Transpose4x4_Opt (431 ms) Bug: None Change-Id: I4997dbd5c5387c22bfd6c5960b421504e4bc8a2a Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4292946 Reviewed-by: Justin Green <greenjustin@google.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2023-02-27Roll chromium_revision 504c069755..d4adab061f (1074965:1109888)Mirko Bonadei
Change log: https://chromium.googlesource.com/chromium/src/+log/504c069755..d4adab061f Full diff: https://chromium.googlesource.com/chromium/src/+/504c069755..d4adab061f Changed dependencies: * src/base: https://chromium.googlesource.com/chromium/src/base/+log/f80120ff32..d0fee1a372 * src/build: https://chromium.googlesource.com/chromium/src/build/+log/fe1231e1da..60a5c0d8b7 * src/buildtools: https://chromium.googlesource.com/chromium/src/buildtools/+log/3c8fef071e..d1127a2c8d * src/buildtools/clang_format/script: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git/+log/8b525d2747..f97059df7f * src/buildtools/third_party/libc++/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git/+log/cd0a050474..e136ec5032 * src/buildtools/third_party/libc++abi/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git/+log/1a32724f72..ff8e691cbc * src/buildtools/third_party/libunwind/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git/+log/5870472fdd..c5e861c7b4 * src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/866ec86ecb..09f48d9955 * src/testing: https://chromium.googlesource.com/chromium/src/testing/+log/b4dc828e84..ce7bc51b4d * src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/73f7282fa2..7cfb60d8ce * src/third_party/boringssl/src: https://boringssl.googlesource.com/boringssl.git/+log/f0518d4511..ca1690e221 * src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/4efb51be85..9c6c41afcf * src/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+log/2fc7e1ffd5..eee53367c1 * src/third_party/freetype/src: https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/1c44de209c..3f01161ff2 * src/third_party/icu: https://chromium.googlesource.com/chromium/deps/icu.git/+log/1b7d391f05..1e49ac26dd * src/third_party/libjpeg_turbo: https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git/+log/ed683925e4..0b6e6a1522 * src/third_party/nasm: https://chromium.googlesource.com/chromium/deps/nasm.git/+log/0873b2bae6..7fc833e889 * src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/a20d904d02..fce3426afe DEPS diff: https://chromium.googlesource.com/chromium/src/+/504c069755..d4adab061f/DEPS Clang version changed llvmorg-16-init-10736-ged9638c4:llvmorg-17-init-2387-g68e81d7e Details: https://chromium.googlesource.com/chromium/src/+/504c069755..d4adab061f/tools/clang/scripts/update.py TBR=fbarchard@google.com BUG=None Change-Id: Id8da564809809b47a7c91e3e35afdaf3d45586e7 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4291070 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Mirko Bonadei <mbonadei@chromium.org>
2023-02-22MergeUV AVX512BW use assemblyFrank Barchard
- Convert MergeUVRow_AVX512BW to assembly - Enable MergeUVRow_AVX512BW for Windows with clangcl - MergeUVRow_AVX2 use vpmovzxbw and vpsllw - MergeUVRow_16_AVX2 use vpmovzxbw and vpsllw with different shift for U and V AMD Zen 4 640x360 100000 iterations Was AVX512 MergeUVPlane_Opt (884 ms) AVX2 MergeUVPlane_Opt (945 ms) AVX2 MergeUVPlane_16_Opt (2167 ms) Now AVX512 MergeUVPlane_Opt (865 ms) AVX2 MergeUVPlane_Opt (943 ms) SSE2 MergeUVPlane_Opt (973 ms) AVX2 MergeUVPlane_16_Opt (2102 ms) Bug: None Change-Id: I658ada2a75d44c3f93be8bd3ed96f83d5fa2ab8d Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4271230 Reviewed-by: Fritz Koenig <frkoenig@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: richard winterton <rrwinterton@gmail.com>