X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fvideo%2FSDL_blit_neon.S;h=af9af365a493ffe0aa4fc8fd0907c31371c9693e;hb=a1eff5db323aedd15ed6fbfd13d06273b54d2d6f;hp=438d9fc9d7feb627280b57a57e9584c60d0dff89;hpb=a1f340810c4f9a4a617f1757d1ff0255e0e3fe58;p=sdl_omap.git diff --git a/src/video/SDL_blit_neon.S b/src/video/SDL_blit_neon.S index 438d9fc..af9af36 100644 --- a/src/video/SDL_blit_neon.S +++ b/src/video/SDL_blit_neon.S @@ -1,5 +1,5 @@ /* - * (C) Gražvydas "notaz" Ignotas, 2011 + * (C) Gražvydas "notaz" Ignotas, 2011,2012 * * This work is licensed under the terms of any of these licenses * (at your option): @@ -28,17 +28,24 @@ b 0b .endm -@ void *dst, const void *src, int count -.macro do_argb_alpha bgr2rgb - mov r3, #0xff - vdup.i16 q12, r3 +@ void *dst, const void *src, int count, uint global_alpha +.macro do_argb_alpha bgr2rgb global_alpha + mov r12, #0xff +.if \global_alpha + vdup.16 q11, r3 +.endif + vdup.i16 q12, r12 0: + pld [r1, #64*2] + pld [r0, #64*2] vld4.8 {d4-d7}, [r1]! vld4.8 {d0-d3}, [r0] .if \bgr2rgb vswp d4, d6 @ BGR->RGB .endif +.if !\global_alpha vmovl.u8 q11, d7 +.endif @ d = (((s-d)*a+255)>>8)+d vsubl.u8 q8, d4, d0 vsubl.u8 q9, d5, d1 @@ -60,6 +67,7 @@ b 0b .endm + do_argb_finish: add r2, r2, #8 vzip.8 d4, d5 @ RRR..|GGG.. -> RGRG.. @@ -98,10 +106,18 @@ neon_ABGRtoXRGB: .global neon_ARGBtoXRGBalpha neon_ARGBtoXRGBalpha: - do_argb_alpha 0 + do_argb_alpha 0, 0 .global neon_ABGRtoXRGBalpha neon_ABGRtoXRGBalpha: - do_argb_alpha 1 + do_argb_alpha 1, 0 + +.global neon_ARGBtoXRGBalphaS +neon_ARGBtoXRGBalphaS: + do_argb_alpha 0, 1 + +.global neon_ABGRtoXRGBalphaS +neon_ABGRtoXRGBalphaS: + do_argb_alpha 1, 1 @ vim:filetype=armasm