pixman_implementation_t * _pixman_implementation_create_arm_simd (void) { pixman_implementation_t *general = _pixman_implementation_create_fast_path (); pixman_implementation_t *imp = _pixman_implementation_create (general); imp->composite = arm_simd_composite; return imp; }
pixman_implementation_t * _pixman_choose_implementation (void) { pixman_implementation_t *imp; imp = _pixman_implementation_create_general(); if (!_pixman_disabled ("fast")) imp = _pixman_implementation_create_fast_path (imp); imp = _pixman_x86_get_implementations (imp); imp = _pixman_arm_get_implementations (imp); imp = _pixman_ppc_get_implementations (imp); imp = _pixman_mips_get_implementations (imp); imp = _pixman_implementation_create_noop (imp); return imp; }
pixman_implementation_t * _pixman_implementation_create_arm_neon (void) { #ifdef USE_ARM_SIMD pixman_implementation_t *fallback = _pixman_implementation_create_arm_simd (); #else pixman_implementation_t *fallback = _pixman_implementation_create_fast_path (); #endif pixman_implementation_t *imp = _pixman_implementation_create (fallback, arm_neon_fast_paths); imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u; imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u; imp->blt = arm_neon_blt; imp->fill = arm_neon_fill; return imp; }