1. 18 Nov, 2015 2 commits
    • Frank Barchard's avatar
      port I411 movzx 2 byte reader to gcc · 50f8cb2d
      Frank Barchard authored
      previously the I411 format used movd to read U, V pixels.
      But this reads 4 bytes, and can cause a memory exception.
      pinsrw can be used, but fails on drmemory 1.5, and is slow.
      So in this change a movzxw is used to read 2 bytes into EBX,
      then copy to xmm0 with movd.
      Slightly slower, but no memory exception
      Was LibYUVConvertTest.I411ToARGB_Opt (577 ms)
      Now LibYUVConvertTest.I411ToARGB_Opt (608 ms)
      
      TBR=harryjin@google.com
      BUG=libyuv:525
      
      Review URL: https://codereview.chromium.org/1457783004 .
      50f8cb2d
    • Frank Barchard's avatar
      Fix for drmemory failure on I411ToARGB · 5eefbe23
      Frank Barchard authored
      Before
      I420ToARGB_Opt (594 ms)
      I422ToARGB_Opt (483 ms)
      I411ToARGB_Opt (748 ms) ***
      I444ToARGB_Opt (452 ms)
      I400ToARGB_Opt (218 ms)
      
      After
      I420ToARGB_Opt (591 ms)
      I422ToARGB_Opt (454 ms)
      I411ToARGB_Opt (502 ms)  ***
      I444ToARGB_Opt (441 ms)
      I400ToARGB_Opt (216 ms)
      
      TBR=harryjin@google.com
      BUG=libyuv:525
      
      Review URL: https://codereview.chromium.org/1459513002 .
      5eefbe23
  2. 17 Nov, 2015 2 commits
  3. 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
  4. 13 Nov, 2015 1 commit
  5. 10 Nov, 2015 2 commits
  6. 09 Nov, 2015 1 commit
  7. 06 Nov, 2015 1 commit
  8. 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
  9. 04 Nov, 2015 7 commits
  10. 03 Nov, 2015 1 commit
  11. 02 Nov, 2015 2 commits
  12. 30 Oct, 2015 1 commit
  13. 29 Oct, 2015 1 commit
  14. 28 Oct, 2015 2 commits
  15. 27 Oct, 2015 3 commits
  16. 26 Oct, 2015 1 commit
  17. 23 Oct, 2015 1 commit
  18. 22 Oct, 2015 4 commits
  19. 21 Oct, 2015 2 commits
  20. 20 Oct, 2015 4 commits