diff options
author | Ben Avison <bavison@riscosopen.org> | 2015-07-29 22:05:25 +0100 |
---|---|---|
committer | Ben Avison <bavison@riscosopen.org> | 2015-10-15 15:15:07 +0100 |
commit | 4ace79ec24be191421115fec7fa593a8829c89ef (patch) | |
tree | 6ccce1351d70706ca21e3fb0d343086a0f5b23dd | |
parent | d9a9b2e532a52210780ec1f2b41b0155ac01da83 (diff) |
armv7: Add bilinear scaled a8 fetcher
-rw-r--r-- | pixman/pixman-arm-neon-asm-bilinear.S | 20 | ||||
-rw-r--r-- | pixman/pixman-arm-neon.c | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/pixman/pixman-arm-neon-asm-bilinear.S b/pixman/pixman-arm-neon-asm-bilinear.S index c0a6e3d..1f6d801 100644 --- a/pixman/pixman-arm-neon-asm-bilinear.S +++ b/pixman/pixman-arm-neon-asm-bilinear.S @@ -1259,6 +1259,23 @@ generate_bilinear_scanline_func \ .endr .endm +.macro my_vshll qd, dm, imm + vshll.i&imm q&qd, d&dm, #imm +.endm + +.macro convert_a8_a8r8g8b8_8pix_step1 out, in + my_vshll %((out)/2+1), %(in), 8 +.endm + +.macro convert_a8_a8r8g8b8_8pix_step2 base0, base1 + my_vshll %((base0)/2), %((base0)+2), 16 + my_vshll %((base0)/2+1), %((base0)+3), 16 + .ifnc "base1","" + my_vshll %((base1)/2), %((base1)+2), 16 + my_vshll %((base1)/2+1), %((base1)+3), 16 + .endif +.endm + generate_bilinear_scaled_cover_functions \ 32, a8r8g8b8, 4, 4, 4, 4, 4, 4, 4, 4 @@ -1269,6 +1286,9 @@ generate_bilinear_scaled_cover_functions \ generate_bilinear_scaled_cover_functions \ 16, r5g6b5, 4, 4, 4, 4, 4, 4, 4, 4, convert_r5g6b5_a8r8g8b8_8pix, pack_planar +generate_bilinear_scaled_cover_functions \ + 8, a8, 4, 4, 4, 4, 4, 4, 4, 4, convert_a8_a8r8g8b8_8pix_step1, convert_a8_a8r8g8b8_8pix_step2 + /* void * pixman_get_scanline_bilinear_scaled_cover_pass2_asm_neon ( * uint32_t width, diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c index 364a896..55be3ba 100644 --- a/pixman/pixman-arm-neon.c +++ b/pixman/pixman-arm-neon.c @@ -227,6 +227,7 @@ PIXMAN_ARM_DECLARE_BILINEAR_SCALED_SUPPORT(neon) PIXMAN_ARM_BIND_GET_SCANLINE_BILINEAR_SCALED_COVER(neon, a8r8g8b8, uint32_t) PIXMAN_ARM_BIND_GET_SCANLINE_BILINEAR_SCALED_COVER(neon, x8r8g8b8, uint32_t) PIXMAN_ARM_BIND_GET_SCANLINE_BILINEAR_SCALED_COVER(neon, r5g6b5, uint16_t) +PIXMAN_ARM_BIND_GET_SCANLINE_BILINEAR_SCALED_COVER(neon, a8, uint8_t) void pixman_composite_src_n_8_asm_neon (int32_t w, @@ -543,6 +544,7 @@ static const pixman_iter_info_t arm_neon_iters[] = PIXMAN_ARM_UNTRANSFORMED_COVER_FETCHER (neon, a1r5g5b5), PIXMAN_ARM_NEAREST_SCALED_COVER_FETCHER (neon, a8), + PIXMAN_ARM_BILINEAR_SCALED_FETCHER (neon, a8), { PIXMAN_null }, }; |