| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 1146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1157 } | 1157 } |
| 1158 | 1158 |
| 1159 TEST_F(LibYUVPlanarTest, ARGBBlend_Opt) { | 1159 TEST_F(LibYUVPlanarTest, ARGBBlend_Opt) { |
| 1160 int max_diff = TestBlend(benchmark_width_, benchmark_height_, | 1160 int max_diff = TestBlend(benchmark_width_, benchmark_height_, |
| 1161 benchmark_iterations_, | 1161 benchmark_iterations_, |
| 1162 disable_cpu_flags_, benchmark_cpu_info_, +1, 0); | 1162 disable_cpu_flags_, benchmark_cpu_info_, +1, 0); |
| 1163 EXPECT_LE(max_diff, 1); | 1163 EXPECT_LE(max_diff, 1); |
| 1164 } | 1164 } |
| 1165 | 1165 |
| 1166 #ifdef HAS_BLENDPLANEROW_AVX2 | 1166 #ifdef HAS_BLENDPLANEROW_AVX2 |
| 1167 // TODO(fbarchard): Switch to I420Blend. | |
| 1168 static void TestBlendPlaneRow(int width, int height, int benchmark_iterations, | 1167 static void TestBlendPlaneRow(int width, int height, int benchmark_iterations, |
| 1169 int invert, int off) { | 1168 int invert, int off) { |
| 1170 int has_ssse3 = TestCpuFlag(kCpuHasSSSE3); | 1169 int has_ssse3 = TestCpuFlag(kCpuHasSSSE3); |
| 1171 int has_avx2 = TestCpuFlag(kCpuHasAVX2); | 1170 int has_avx2 = TestCpuFlag(kCpuHasAVX2); |
| 1172 width = width * height; | 1171 width = width * height; |
| 1173 height = 1; | 1172 height = 1; |
| 1174 if (width < 256) { | 1173 if (width < 256) { |
| 1175 width = 256; | 1174 width = 256; |
| 1176 } | 1175 } |
| 1177 const int kBpp = 1; | 1176 const int kBpp = 1; |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1341 } | 1340 } |
| 1342 | 1341 |
| 1343 TEST_F(LibYUVPlanarTest, BlendPlane_Opt) { | 1342 TEST_F(LibYUVPlanarTest, BlendPlane_Opt) { |
| 1344 TestBlendPlane(benchmark_width_, benchmark_height_, benchmark_iterations_, | 1343 TestBlendPlane(benchmark_width_, benchmark_height_, benchmark_iterations_, |
| 1345 disable_cpu_flags_, benchmark_cpu_info_, +1, 0); | 1344 disable_cpu_flags_, benchmark_cpu_info_, +1, 0); |
| 1346 } | 1345 } |
| 1347 TEST_F(LibYUVPlanarTest, BlendPlane_Unaligned) { | 1346 TEST_F(LibYUVPlanarTest, BlendPlane_Unaligned) { |
| 1348 TestBlendPlane(benchmark_width_, benchmark_height_, benchmark_iterations_, | 1347 TestBlendPlane(benchmark_width_, benchmark_height_, benchmark_iterations_, |
| 1349 disable_cpu_flags_, benchmark_cpu_info_, +1, 1); | 1348 disable_cpu_flags_, benchmark_cpu_info_, +1, 1); |
| 1350 } | 1349 } |
| 1350 TEST_F(LibYUVPlanarTest, BlendPlane_Any) { |
| 1351 TestBlendPlane(benchmark_width_ - 4, benchmark_height_, benchmark_iterations_, |
| 1352 disable_cpu_flags_, benchmark_cpu_info_, +1, 1); |
| 1353 } |
| 1354 TEST_F(LibYUVPlanarTest, BlendPlane_Invert) { |
| 1355 TestBlendPlane(benchmark_width_, benchmark_height_, benchmark_iterations_, |
| 1356 disable_cpu_flags_, benchmark_cpu_info_, -1, 1); |
| 1357 } |
| 1351 | 1358 |
| 1352 #define SUBSAMPLE(v, a) ((((v) + (a) - 1)) / (a)) | 1359 #define SUBSAMPLE(v, a) ((((v) + (a) - 1)) / (a)) |
| 1353 | 1360 |
| 1354 static void TestI420Blend(int width, int height, int benchmark_iterations, | 1361 static void TestI420Blend(int width, int height, int benchmark_iterations, |
| 1355 int disable_cpu_flags, int benchmark_cpu_info, | 1362 int disable_cpu_flags, int benchmark_cpu_info, |
| 1356 int invert, int off) { | 1363 int invert, int off) { |
| 1357 width = ((width) > 0) ? (width) : 1; | 1364 width = ((width) > 0) ? (width) : 1; |
| 1358 const int kStrideUV = SUBSAMPLE(width, 2); | 1365 const int kStrideUV = SUBSAMPLE(width, 2); |
| 1359 const int kSizeUV = kStrideUV * SUBSAMPLE(height, 2); | 1366 const int kSizeUV = kStrideUV * SUBSAMPLE(height, 2); |
| 1360 align_buffer_64(src_y0, width * height + off); | 1367 align_buffer_64(src_y0, width * height + off); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1435 } | 1442 } |
| 1436 | 1443 |
| 1437 TEST_F(LibYUVPlanarTest, I420Blend_Opt) { | 1444 TEST_F(LibYUVPlanarTest, I420Blend_Opt) { |
| 1438 TestI420Blend(benchmark_width_, benchmark_height_, benchmark_iterations_, | 1445 TestI420Blend(benchmark_width_, benchmark_height_, benchmark_iterations_, |
| 1439 disable_cpu_flags_, benchmark_cpu_info_, +1, 0); | 1446 disable_cpu_flags_, benchmark_cpu_info_, +1, 0); |
| 1440 } | 1447 } |
| 1441 TEST_F(LibYUVPlanarTest, I420Blend_Unaligned) { | 1448 TEST_F(LibYUVPlanarTest, I420Blend_Unaligned) { |
| 1442 TestI420Blend(benchmark_width_, benchmark_height_, benchmark_iterations_, | 1449 TestI420Blend(benchmark_width_, benchmark_height_, benchmark_iterations_, |
| 1443 disable_cpu_flags_, benchmark_cpu_info_, +1, 1); | 1450 disable_cpu_flags_, benchmark_cpu_info_, +1, 1); |
| 1444 } | 1451 } |
| 1452 TEST_F(LibYUVPlanarTest, I420Blend_Any) { |
| 1453 TestI420Blend(benchmark_width_ - 4, benchmark_height_, benchmark_iterations_, |
| 1454 disable_cpu_flags_, benchmark_cpu_info_, +1, 0); |
| 1455 } |
| 1456 TEST_F(LibYUVPlanarTest, I420Blend_Invert) { |
| 1457 TestI420Blend(benchmark_width_, benchmark_height_, benchmark_iterations_, |
| 1458 disable_cpu_flags_, benchmark_cpu_info_, -1, 0); |
| 1459 } |
| 1445 | 1460 |
| 1446 TEST_F(LibYUVPlanarTest, TestAffine) { | 1461 TEST_F(LibYUVPlanarTest, TestAffine) { |
| 1447 SIMD_ALIGNED(uint8 orig_pixels_0[1280][4]); | 1462 SIMD_ALIGNED(uint8 orig_pixels_0[1280][4]); |
| 1448 SIMD_ALIGNED(uint8 interpolate_pixels_C[1280][4]); | 1463 SIMD_ALIGNED(uint8 interpolate_pixels_C[1280][4]); |
| 1449 | 1464 |
| 1450 for (int i = 0; i < 1280; ++i) { | 1465 for (int i = 0; i < 1280; ++i) { |
| 1451 for (int j = 0; j < 4; ++j) { | 1466 for (int j = 0; j < 4; ++j) { |
| 1452 orig_pixels_0[i][j] = i; | 1467 orig_pixels_0[i][j] = i; |
| 1453 } | 1468 } |
| 1454 } | 1469 } |
| (...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2625 | 2640 |
| 2626 TEST_F(LibYUVPlanarTest, SetPlane_Opt) { | 2641 TEST_F(LibYUVPlanarTest, SetPlane_Opt) { |
| 2627 int max_diff = TestARGBRect(benchmark_width_, benchmark_height_, | 2642 int max_diff = TestARGBRect(benchmark_width_, benchmark_height_, |
| 2628 benchmark_iterations_, | 2643 benchmark_iterations_, |
| 2629 disable_cpu_flags_, benchmark_cpu_info_, | 2644 disable_cpu_flags_, benchmark_cpu_info_, |
| 2630 +1, 0, 1); | 2645 +1, 0, 1); |
| 2631 EXPECT_EQ(0, max_diff); | 2646 EXPECT_EQ(0, max_diff); |
| 2632 } | 2647 } |
| 2633 | 2648 |
| 2634 } // namespace libyuv | 2649 } // namespace libyuv |
| OLD | NEW |