diff options
author | Dr.Smile <vabnick@gmail.com> | 2015-02-09 05:01:55 +0300 |
---|---|---|
committer | Dr.Smile <vabnick@gmail.com> | 2015-02-09 05:01:55 +0300 |
commit | 820b5a85f9bc56ac3361ff546331f0b318570005 (patch) | |
tree | dfc46feee5364181178dc834e7ae22a268ea92e9 /libass/x86/rasterizer.asm | |
parent | 82a5bb2040ec63aec11043d5249bac68eed6632d (diff) | |
download | libass-820b5a85f9bc56ac3361ff546331f0b318570005.tar.bz2 libass-820b5a85f9bc56ac3361ff546331f0b318570005.tar.xz |
Skip memset() when using internal rasterizer
Diffstat (limited to 'libass/x86/rasterizer.asm')
-rw-r--r-- | libass/x86/rasterizer.asm | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libass/x86/rasterizer.asm b/libass/x86/rasterizer.asm index d4941c6..bbb2921 100644 --- a/libass/x86/rasterizer.asm +++ b/libass/x86/rasterizer.asm @@ -116,12 +116,21 @@ SECTION .text ;------------------------------------------------------------------------------ ; FILL_SOLID_TILE tile_order, suffix -; void fill_solid_tile%2(uint8_t *buf, ptrdiff_t stride); +; void fill_solid_tile%2(uint8_t *buf, ptrdiff_t stride, int set); ;------------------------------------------------------------------------------ %macro FILL_SOLID_TILE 2 -cglobal fill_solid_tile%2, 2,2,1 - pcmpeqd m0, m0 +cglobal fill_solid_tile%2, 3,4,1 + mov r3d, -1 + test r2d, r2d + cmovnz r2d, r3d + movd xm0, r2d +%if mmsize == 32 + vpbroadcastd m0, xm0 +%else + pshufd m0, m0, q0000 +%endif + %rep (1 << %1) - 1 FILL_LINE r0, 0, 1 << %1 add r0, r1 |