1. 09 Dec, 2015 5 commits
    • Frank Barchard's avatar
      fix typo in avx2 gcc blend. · cb449364
      Frank Barchard authored
      was using wrong register on 32 pixel version.
      
      R=harryjin@google.com, dhrosa@google.com
      BUG=libyuv:527
      
      Review URL: https://codereview.chromium.org/1511433006 .
      cb449364
    • Frank Barchard's avatar
      fix for gcc compile error: variable duplicate define · 353ffbab
      Frank Barchard authored
      TBR=harryjin@google.com
      BUG=libyuv:529
      
      Review URL: https://codereview.chromium.org/1512793002 .
      353ffbab
    • Frank Barchard's avatar
      BlendPlane any width. · a2ea9056
      Frank Barchard authored
      Benchmark
      out\release\libyuv_unittest --libyuv_width=1279 --libyuv_height=719 --libyuv_repeat=999 --libyuv_flags=-1 --gtest_filter=*Blend* | sortms
      
      Was
      I420Blend_Any (2321 ms)
      I420Blend_Unaligned (1684 ms)
      I420Blend_Opt (1675 ms)
      I420Blend_Invert (1653 ms)
      BlendPlane_Invert (1556 ms)
      BlendPlane_Any (1552 ms)
      BlendPlane_Unaligned (1548 ms)
      BlendPlane_Opt (1535 ms)
      ARGBBlend_Unaligned (659 ms)
      ARGBBlend_Any (596 ms)
      ARGBBlend_Invert (591 ms)
      ARGBBlend_Opt (508 ms)
      BlendPlaneRow_Unaligned (186 ms)
      BlendPlaneRow_Opt (171 ms)
      
      Now
      ARGBBlend_Any (621 ms)
      ARGBBlend_Unaligned (585 ms)
      ARGBBlend_Invert (564 ms)
      ARGBBlend_Opt (512 ms)
      I420Blend_Unaligned (347 ms)
      I420Blend_Invert (345 ms)
      I420Blend_Any (337 ms)
      I420Blend_Opt (327 ms)
      BlendPlane_Unaligned (187 ms)
      BlendPlaneRow_Unaligned (187 ms)
      BlendPlane_Invert (186 ms)
      BlendPlane_Any (186 ms)
      BlendPlaneRow_Opt (173 ms)
      BlendPlane_Opt (171 ms)
      
      which is comparable to aligned case
      out\release\libyuv_unittest --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1 --gtest_filter=*Blend* | sortms
      ARGBBlend_Any (625 ms)
      ARGBBlend_Unaligned (602 ms)
      ARGBBlend_Invert (508 ms)
      ARGBBlend_Opt (506 ms)
      I420Blend_Any (353 ms)
      I420Blend_Unaligned (322 ms)
      I420Blend_Invert (304 ms)
      I420Blend_Opt (301 ms)
      BlendPlaneRow_Unaligned (188 ms)
      BlendPlane_Unaligned (186 ms)
      BlendPlane_Invert (185 ms)
      BlendPlane_Any (184 ms)
      BlendPlaneRow_Opt (173 ms)
      BlendPlane_Opt (169 ms)
      
      R=dhrosa@google.com, harryjin@google.com
      BUG=libyuv:527
      
      Review URL: https://codereview.chromium.org/1513443002 .
      a2ea9056
    • Frank Barchard's avatar
      Optimize yuv alpha blend AVX2 code to do 32 pixels at time. · dee77a4e
      Frank Barchard authored
      out/Release/libyuv_unittest --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=9999 --libyuv_flags=-1 --gtest_filter=*I420Blend_Opt
      
      Was LibYUVPlanarTest.I420Blend_Opt (2335 ms)
      Now LibYUVPlanarTest.I420Blend_Opt (1937 ms)
      
      vs SSSE3
      LibYUVPlanarTest.I420Blend_Opt (2599 ms)
      
      BUG=libyuv:527
      R=dhrosa@google.com
      
      Review URL: https://codereview.chromium.org/1505673003 .
      dee77a4e
    • Frank Barchard's avatar
      Work around bug in xgetbv for Visual Studio. · fae1a105
      Frank Barchard authored
      xgetbv is generating bad code, falsely disabling AVX2 and AVX512.
      disable optimization for the function affected on older versions of Visual C 32 bit.
      
      R=brucedawson@chromium.org, dhrosa@google.com, harryjin@google.com
      BUG=libyuv:529
      
      Review URL: https://codereview.chromium.org/1503393004 .
      fae1a105
  2. 07 Dec, 2015 3 commits
  3. 06 Dec, 2015 1 commit
  4. 04 Dec, 2015 1 commit
  5. 02 Dec, 2015 1 commit
  6. 26 Nov, 2015 1 commit
  7. 20 Nov, 2015 1 commit
  8. 19 Nov, 2015 2 commits
  9. 18 Nov, 2015 3 commits
  10. 17 Nov, 2015 2 commits
  11. 14 Nov, 2015 1 commit
    • Frank Barchard's avatar
      port I444ToARGB avx2 code from Visual C to GCC. · 1019e453
      Frank Barchard authored
      SSSE3
      Note: Google Test filter = *I444ToARGB*
      [==========] Running 8 tests from 1 test case.
      [----------] Global test environment set-up.
      [----------] 8 tests from LibYUVConvertTest
      [ RUN      ] LibYUVConvertTest.I444ToARGB_Any
      [       OK ] LibYUVConvertTest.I444ToARGB_Any (435 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_Unaligned
      [       OK ] LibYUVConvertTest.I444ToARGB_Unaligned (418 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_Invert
      [       OK ] LibYUVConvertTest.I444ToARGB_Invert (417 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_Opt
      [       OK ] LibYUVConvertTest.I444ToARGB_Opt (411 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_ARGB_Any
      [       OK ] LibYUVConvertTest.I444ToARGB_ARGB_Any (419 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_ARGB_Unaligned
      [       OK ] LibYUVConvertTest.I444ToARGB_ARGB_Unaligned (432 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_ARGB_Invert
      [       OK ] LibYUVConvertTest.I444ToARGB_ARGB_Invert (435 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_ARGB_Opt
      [       OK ] LibYUVConvertTest.I444ToARGB_ARGB_Opt (421 ms)
      [----------] 8 tests from LibYUVConvertTest (3389 ms total)
      
      AVX2
      Note: Google Test filter = *I444ToARGB*
      [==========] Running 8 tests from 1 test case.
      [----------] Global test environment set-up.
      [----------] 8 tests from LibYUVConvertTest
      [ RUN      ] LibYUVConvertTest.I444ToARGB_Any
      [       OK ] LibYUVConvertTest.I444ToARGB_Any (340 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_Unaligned
      [       OK ] LibYUVConvertTest.I444ToARGB_Unaligned (325 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_Invert
      [       OK ] LibYUVConvertTest.I444ToARGB_Invert (316 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_Opt
      [       OK ] LibYUVConvertTest.I444ToARGB_Opt (316 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_ARGB_Any
      [       OK ] LibYUVConvertTest.I444ToARGB_ARGB_Any (315 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_ARGB_Unaligned
      [       OK ] LibYUVConvertTest.I444ToARGB_ARGB_Unaligned (341 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_ARGB_Invert
      [       OK ] LibYUVConvertTest.I444ToARGB_ARGB_Invert (331 ms)
      [ RUN      ] LibYUVConvertTest.I444ToARGB_ARGB_Opt
      [       OK ] LibYUVConvertTest.I444ToARGB_ARGB_Opt (329 ms)
      [----------] 8 tests from LibYUVConvertTest (2615 ms total)
      
      TBR=harryjin@google.com
      BUG=libyuv:492
      
      Review URL: https://codereview.chromium.org/1445893002 .
      1019e453
  12. 13 Nov, 2015 1 commit
  13. 10 Nov, 2015 2 commits
  14. 09 Nov, 2015 1 commit
  15. 06 Nov, 2015 1 commit
  16. 05 Nov, 2015 1 commit
    • Frank Barchard's avatar
      YUV to RGB for x64 use registers instead of memory. · 431cb366
      Frank Barchard authored
      On Arm the YVU to RGB conversions move constants into registers.
      This change does the same for 64 bit intel builds where additional
      registers are available.
      The AVX2 saves 3 instructions by because the 2nd argument needs to be a register, so a vmovdqu was avoided.
      
      x64 builds using memory:
      AVX2  I420ToARGB_Opt (3059 ms)
      SSSE3 I420ToARGB_Opt (3959 ms)
      
      Now using registers
      AVX2  I420ToARGB_Opt (2906 ms)
      SSSE3 I420ToARGB_Opt (3928 ms)
      
      TBR=harryjin@google.com
      BUG=libyuv:520
      
      Review URL: https://codereview.chromium.org/1407353010 .
      431cb366
  17. 04 Nov, 2015 7 commits
  18. 03 Nov, 2015 1 commit
  19. 02 Nov, 2015 2 commits
  20. 30 Oct, 2015 1 commit
  21. 29 Oct, 2015 1 commit
  22. 28 Oct, 2015 1 commit