lottie/render: add neon path srcOver compostion mode for solid src. 98/188498/1
authorsubhransu mohanty <sub.mohanty@samsung.com>
Wed, 5 Sep 2018 10:37:36 +0000 (19:37 +0900)
committersubhransu mohanty <sub.mohanty@samsung.com>
Wed, 5 Sep 2018 10:37:36 +0000 (19:37 +0900)
Change-Id: I711dc309b02911de1155b0e788c6e79b6630fb7a

src/vector/vdrawhelper.cpp
src/vector/vdrawhelper_neon.cpp

index ccb1168..90f20eb 100644 (file)
@@ -674,15 +674,11 @@ void vInitDrawhelperFunctions()
 
 #if defined(__ARM_NEON__)
     // update fast path for NEON
-//    extern void comp_func_solid_SourceOver_neon(
-//        uint32_t * dest, int length, uint32_t color, uint32_t const_alpha);
-//    extern void comp_func_solid_Source_neon(
-//        uint32_t * dest, int length, uint32_t color, uint32_t const_alpha);
-
-//    COMP_functionForModeSolid_C[VPainter::CompModeSrc] =
-//        comp_func_solid_Source_neon;
-//    COMP_functionForModeSolid_C[VPainter::CompModeSrcOver] =
-//        comp_func_solid_SourceOver_neon;
+    extern void comp_func_solid_SourceOver_neon(
+        uint32_t * dest, int length, uint32_t color, uint32_t const_alpha);
+
+    COMP_functionForModeSolid_C[VPainter::CompModeSrcOver] =
+        comp_func_solid_SourceOver_neon;
 #endif
 
 #if defined(__SSE2__)
index 49502d1..806a8b5 100644 (file)
@@ -9,6 +9,13 @@ pixman_composite_src_n_8888_asm_neon (int32_t   w,
                                       int32_t   dst_stride,
                                       uint32_t  src);
 
+extern "C" void
+pixman_composite_over_n_8888_asm_neon(int32_t   w,
+                                      int32_t   h,
+                                      uint32_t *dst,
+                                      int32_t   dst_stride,
+                                      uint32_t  src);
+
 void memfill32(uint32_t *dest, uint32_t value, int length)
 {
     pixman_composite_src_n_8888_asm_neon(length,
@@ -18,4 +25,16 @@ void memfill32(uint32_t *dest, uint32_t value, int length)
                                          value);
 }
 
+void
+comp_func_solid_SourceOver_neon(uint32_t *dest, int length, uint32_t color,
+                                uint32_t const_alpha)
+{
+    if (const_alpha != 255) color = BYTE_MUL(color, const_alpha);
+
+    pixman_composite_over_n_8888_asm_neon(length,
+                                          1,
+                                          dest,
+                                          length,
+                                          color);
+}
 #endif