diff options
author | Ben Avison <bavison@riscosopen.org> | 2015-07-29 20:57:53 +0100 |
---|---|---|
committer | Ben Avison <bavison@riscosopen.org> | 2015-10-15 15:14:02 +0100 |
commit | 20daf3b0221c45dcea39c7271c80a06c8336c620 (patch) | |
tree | b1ad8bd0642be416fec6e8efa5b72ccb6f6cc6c2 | |
parent | 013eb98a57f7cf59fa0dad5761d758a5e6f5ed48 (diff) |
armv7: Add bilinear scaled x8r8g8b8 fetcher
-rw-r--r-- | pixman/pixman-arm-neon-asm-bilinear.S | 22 | ||||
-rw-r--r-- | pixman/pixman-arm-neon.c | 2 |
2 files changed, 24 insertions, 0 deletions
diff --git a/pixman/pixman-arm-neon-asm-bilinear.S b/pixman/pixman-arm-neon-asm-bilinear.S index 4b1c2a4..72ddd05 100644 --- a/pixman/pixman-arm-neon-asm-bilinear.S +++ b/pixman/pixman-arm-neon-asm-bilinear.S @@ -1214,9 +1214,31 @@ generate_bilinear_scanline_func \ /******************************************************************************/ +.macro init_x8r8g8b8_a8r8g8b8 + vpush {d14-d15} + vmov.u32 q7, #0xff000000 +.endm + +.macro final_x8r8g8b8_a8r8g8b8 + vpop {d14-d15} +.endm + +.macro convert_x8r8g8b8_a8r8g8b8_8pix_internal out, in + vorr.i32 q&out, q&in, q7 +.endm + +.macro convert_x8r8g8b8_a8r8g8b8_8pix out, in + convert_x8r8g8b8_a8r8g8b8_8pix_internal %((out) / 2), %((in) / 2) + convert_x8r8g8b8_a8r8g8b8_8pix_internal %((out) / 2 + 1), %((in) / 2 + 1) +.endm + generate_bilinear_scaled_cover_functions \ 32, a8r8g8b8, 4, 4, 4, 4, 4, 4, 4, 4 +generate_bilinear_scaled_cover_functions \ + 32, x8r8g8b8, 4, 4, 4, 4, 4, 4, 4, 4, convert_x8r8g8b8_a8r8g8b8_8pix, \ + nop_macro, init_x8r8g8b8_a8r8g8b8, final_x8r8g8b8_a8r8g8b8 + /* 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 4c2ccfa..e5bdcb5 100644 --- a/pixman/pixman-arm-neon.c +++ b/pixman/pixman-arm-neon.c @@ -225,6 +225,7 @@ PIXMAN_ARM_DECLARE_BILINEAR_SCALED_SUPPORT(neon) #define PIXMAN_ARM_BILINEAR_PADDING_BITS (15 - BILINEAR_INTERPOLATION_BITS) PIXMAN_ARM_BIND_GET_SCANLINE_BILINEAR_SCALED_COVER(neon, a8r8g8b8, uint32_t) +PIXMAN_ARM_BIND_GET_SCANLINE_BILINEAR_SCALED_COVER(neon, x8r8g8b8, uint32_t) void pixman_composite_src_n_8_asm_neon (int32_t w, @@ -531,6 +532,7 @@ static const pixman_iter_info_t arm_neon_iters[] = PIXMAN_ARM_BILINEAR_SCALED_FETCHER (neon, a8r8g8b8), PIXMAN_ARM_NEAREST_SCALED_COVER_FETCHER (neon, x8r8g8b8), + PIXMAN_ARM_BILINEAR_SCALED_FETCHER (neon, x8r8g8b8), PIXMAN_ARM_UNTRANSFORMED_COVER_FETCHER (neon, r5g6b5), PIXMAN_ARM_NEAREST_SCALED_COVER_FETCHER (neon, r5g6b5), |