#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__)
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,
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