예제 #1
0
pixman_implementation_t *
_pixman_implementation_create_vmx128 (pixman_implementation_t *fallback)
{
	pixman_implementation_t *imp = _pixman_implementation_create (fallback, vmx128_fast_paths);

    /* Set up function pointers */

    imp->combine_32[PIXMAN_OP_OVER] = vmx128_combine_over_u;
    imp->combine_32[PIXMAN_OP_OVER_REVERSE] = vmx128_combine_over_reverse_u;
    imp->combine_32[PIXMAN_OP_IN] = vmx128_combine_in_u;
    imp->combine_32[PIXMAN_OP_IN_REVERSE] = vmx128_combine_in_reverse_u;
    imp->combine_32[PIXMAN_OP_OUT] = vmx128_combine_out_u;
    imp->combine_32[PIXMAN_OP_OUT_REVERSE] = vmx128_combine_out_reverse_u;
    imp->combine_32[PIXMAN_OP_ATOP] = vmx128_combine_atop_u;
    imp->combine_32[PIXMAN_OP_ATOP_REVERSE] = vmx128_combine_atop_reverse_u;
    imp->combine_32[PIXMAN_OP_XOR] = vmx128_combine_xor_u;

    imp->combine_32[PIXMAN_OP_ADD] = vmx128_combine_add_u;

    imp->combine_32_ca[PIXMAN_OP_SRC] = vmx128_combine_src_ca;
    imp->combine_32_ca[PIXMAN_OP_OVER] = vmx128_combine_over_ca;
    imp->combine_32_ca[PIXMAN_OP_OVER_REVERSE] = vmx128_combine_over_reverse_ca;
    imp->combine_32_ca[PIXMAN_OP_IN] = vmx128_combine_in_ca;
    imp->combine_32_ca[PIXMAN_OP_IN_REVERSE] = vmx128_combine_in_reverse_ca;
    imp->combine_32_ca[PIXMAN_OP_OUT] = vmx128_combine_out_ca;
    imp->combine_32_ca[PIXMAN_OP_OUT_REVERSE] = vmx128_combine_out_reverse_ca;
    imp->combine_32_ca[PIXMAN_OP_ATOP] = vmx128_combine_atop_ca;
    imp->combine_32_ca[PIXMAN_OP_ATOP_REVERSE] = vmx128_combine_atop_reverse_ca;
    imp->combine_32_ca[PIXMAN_OP_XOR] = vmx128_combine_xor_ca;
    imp->combine_32_ca[PIXMAN_OP_ADD] = vmx128_combine_add_ca;

    return imp;
}
예제 #2
0
pixman_implementation_t *
_pixman_implementation_create_arm_simd (pixman_implementation_t *fallback)
{
    pixman_implementation_t *imp = _pixman_implementation_create (fallback, arm_simd_fast_paths);

    imp->blt = arm_simd_blt;
    imp->fill = arm_simd_fill;

    return imp;
}
예제 #3
0
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;
}
예제 #4
0
pixman_implementation_t *
_pixman_implementation_create_ssse3 (pixman_implementation_t *fallback)
{
    pixman_implementation_t *imp =
	_pixman_implementation_create (fallback, ssse3_fast_paths);

    imp->iter_info = ssse3_iters;

    return imp;
}
예제 #5
0
pixman_implementation_t *
_pixman_implementation_create_noop (pixman_implementation_t *fallback)
{
    pixman_implementation_t *imp =
	_pixman_implementation_create (fallback, noop_fast_paths);

    imp->src_iter_init = noop_src_iter_init;
    imp->dest_iter_init = noop_dest_iter_init;

    return imp;
}
예제 #6
0
pixman_implementation_t *
_pixman_implementation_create_general (void)
{
    pixman_implementation_t *imp = _pixman_implementation_create (NULL, general_fast_path);

    _pixman_setup_combiner_functions_32 (imp);
    _pixman_setup_combiner_functions_float (imp);

    imp->iter_info = general_iters;

    return imp;
}
예제 #7
0
pixman_implementation_t *
_pixman_implementation_create_mips_dspr2 (pixman_implementation_t *fallback)
{
    pixman_implementation_t *imp =
        _pixman_implementation_create (fallback, mips_dspr2_fast_paths);

    imp->combine_32[PIXMAN_OP_OVER] = mips_dspr2_combine_over_u;

    imp->blt = mips_dspr2_blt;
    imp->fill = mips_dspr2_fill;

    return imp;
}
예제 #8
0
pixman_implementation_t *
_pixman_implementation_create_general (void)
{
    pixman_implementation_t *imp = _pixman_implementation_create (NULL, general_fast_path);

    _pixman_setup_combiner_functions_32 (imp);
    _pixman_setup_combiner_functions_64 (imp);

    imp->blt = general_blt;
    imp->fill = general_fill;

    return imp;
}
예제 #9
0
pixman_implementation_t *
_pixman_implementation_create_general (void)
{
    pixman_implementation_t *imp = _pixman_implementation_create (NULL, general_fast_path);

    _pixman_setup_combiner_functions_16 (imp);
    _pixman_setup_combiner_functions_32 (imp);
    _pixman_setup_combiner_functions_float (imp);

    imp->src_iter_init = general_src_iter_init;
    imp->dest_iter_init = general_dest_iter_init;

    return imp;
}
pixman_implementation_t *
_pixman_implementation_create_arm_neon (pixman_implementation_t *fallback)
{
    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;
}
예제 #11
0
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;
}