BGRAToI420 use SSSE3 for Y but C for UV when LIBYUV_BIT_EXACT enabled

- Previously was C for both Y and UV.

Was BGRAToI420_Opt (17780 ms)
Now BGRAToI420_Opt (9546 ms)

Bug: b/253491233
Change-Id: Id103d8d5ba0fed0f7a427dd5955e1830275eff6b
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/3953131
Reviewed-by: Wan-Teh Chang <wtc@google.com>
This commit is contained in:
Frank Barchard 2022-10-13 16:20:08 -07:00 committed by Frank Barchard
parent 01925b40bc
commit cb35d5f90e
3 changed files with 43 additions and 19 deletions

View File

@ -1,6 +1,6 @@
Name: libyuv Name: libyuv
URL: http://code.google.com/p/libyuv/ URL: http://code.google.com/p/libyuv/
Version: 1845 Version: 1846
License: BSD License: BSD
License File: LICENSE License File: LICENSE

View File

@ -11,6 +11,6 @@
#ifndef INCLUDE_LIBYUV_VERSION_H_ #ifndef INCLUDE_LIBYUV_VERSION_H_
#define INCLUDE_LIBYUV_VERSION_H_ #define INCLUDE_LIBYUV_VERSION_H_
#define LIBYUV_VERSION 1845 #define LIBYUV_VERSION 1846
#endif // INCLUDE_LIBYUV_VERSION_H_ #endif // INCLUDE_LIBYUV_VERSION_H_

View File

@ -1647,16 +1647,6 @@ int BGRAToI420(const uint8_t* src_bgra,
src_bgra = src_bgra + (height - 1) * src_stride_bgra; src_bgra = src_bgra + (height - 1) * src_stride_bgra;
src_stride_bgra = -src_stride_bgra; src_stride_bgra = -src_stride_bgra;
} }
#if defined(HAS_BGRATOYROW_SSSE3) && defined(HAS_BGRATOUVROW_SSSE3)
if (TestCpuFlag(kCpuHasSSSE3)) {
BGRAToUVRow = BGRAToUVRow_Any_SSSE3;
BGRAToYRow = BGRAToYRow_Any_SSSE3;
if (IS_ALIGNED(width, 16)) {
BGRAToUVRow = BGRAToUVRow_SSSE3;
BGRAToYRow = BGRAToYRow_SSSE3;
}
}
#endif
#if defined(HAS_BGRATOYROW_NEON) #if defined(HAS_BGRATOYROW_NEON)
if (TestCpuFlag(kCpuHasNEON)) { if (TestCpuFlag(kCpuHasNEON)) {
BGRAToYRow = BGRAToYRow_Any_NEON; BGRAToYRow = BGRAToYRow_Any_NEON;
@ -1673,23 +1663,57 @@ int BGRAToI420(const uint8_t* src_bgra,
} }
} }
#endif #endif
#if defined(HAS_BGRATOYROW_SSSE3)
if (TestCpuFlag(kCpuHasSSSE3)) {
BGRAToYRow = BGRAToYRow_Any_SSSE3;
if (IS_ALIGNED(width, 16)) {
BGRAToYRow = BGRAToYRow_SSSE3;
}
}
#endif
#if defined(HAS_BGRATOUVROW_SSSE3)
if (TestCpuFlag(kCpuHasSSSE3)) {
BGRAToUVRow = BGRAToUVRow_Any_SSSE3;
if (IS_ALIGNED(width, 16)) {
BGRAToUVRow = BGRAToUVRow_SSSE3;
}
}
#endif
#if defined(HAS_BGRATOYROW_AVX2)
if (TestCpuFlag(kCpuHasAVX2)) {
BGRAToYRow = BGRAToYRow_Any_AVX2;
if (IS_ALIGNED(width, 32)) {
BGRAToYRow = BGRAToYRow_AVX2;
}
}
#endif
#if defined(HAS_BGRATOUVROW_AVX2)
if (TestCpuFlag(kCpuHasAVX2)) {
BGRAToUVRow = BGRAToUVRow_Any_AVX2;
if (IS_ALIGNED(width, 32)) {
BGRAToUVRow = BGRAToUVRow_AVX2;
}
}
#endif
#if defined(HAS_BGRATOYROW_MSA) && defined(HAS_BGRATOUVROW_MSA) #if defined(HAS_BGRATOYROW_MSA) && defined(HAS_BGRATOUVROW_MSA)
if (TestCpuFlag(kCpuHasMSA)) { if (TestCpuFlag(kCpuHasMSA)) {
BGRAToYRow = BGRAToYRow_Any_MSA; BGRAToYRow = BGRAToYRow_Any_MSA;
BGRAToUVRow = BGRAToUVRow_Any_MSA; BGRAToUVRow = BGRAToUVRow_Any_MSA;
if (IS_ALIGNED(width, 16)) { if (IS_ALIGNED(width, 16)) {
BGRAToYRow = BGRAToYRow_MSA; BGRAToYRow = BGRAToYRow_MSA;
}
if (IS_ALIGNED(width, 32)) {
BGRAToUVRow = BGRAToUVRow_MSA; BGRAToUVRow = BGRAToUVRow_MSA;
} }
} }
#endif #endif
#if defined(HAS_BGRATOYROW_LSX) && defined(HAS_BGRATOUVROW_LSX) #if defined(HAS_BGRATOYROW_LASX) && defined(HAS_BGRATOUVROW_LASX)
if (TestCpuFlag(kCpuHasLSX)) { if (TestCpuFlag(kCpuHasLASX)) {
BGRAToYRow = BGRAToYRow_Any_LSX; BGRAToYRow = BGRAToYRow_Any_LASX;
BGRAToUVRow = BGRAToUVRow_Any_LSX; BGRAToUVRow = BGRAToUVRow_Any_LASX;
if (IS_ALIGNED(width, 16)) { if (IS_ALIGNED(width, 32)) {
BGRAToYRow = BGRAToYRow_LSX; BGRAToYRow = BGRAToYRow_LASX;
BGRAToUVRow = BGRAToUVRow_LSX; BGRAToUVRow = BGRAToUVRow_LASX;
} }
} }
#endif #endif