/* ------------------------------------------------------------------------- */ static BOOL CALLBACK primitives_init_generic(PINIT_ONCE once, PVOID param, PVOID* context) { WINPR_UNUSED(once); WINPR_UNUSED(param); WINPR_UNUSED(context); primitives_init_add(&pPrimitivesGeneric); primitives_init_andor(&pPrimitivesGeneric); primitives_init_alphaComp(&pPrimitivesGeneric); primitives_init_copy(&pPrimitivesGeneric); primitives_init_set(&pPrimitivesGeneric); primitives_init_shift(&pPrimitivesGeneric); primitives_init_sign(&pPrimitivesGeneric); primitives_init_colors(&pPrimitivesGeneric); primitives_init_YCoCg(&pPrimitivesGeneric); primitives_init_YUV(&pPrimitivesGeneric); return TRUE; }
/* ------------------------------------------------------------------------- */ void primitives_init(void) { if (pPrimitives == NULL) { pPrimitives = calloc(1, sizeof(primitives_t)); if (pPrimitives == NULL) return; } /* Now call each section's initialization routine. */ primitives_init_add(pPrimitives); primitives_init_andor(pPrimitives); primitives_init_alphaComp(pPrimitives); primitives_init_copy(pPrimitives); primitives_init_set(pPrimitives); primitives_init_shift(pPrimitives); primitives_init_sign(pPrimitives); primitives_init_colors(pPrimitives); }
/* ------------------------------------------------------------------------- */ void primitives_init_set_opt(primitives_t* prims) { generic = primitives_get_generic(); primitives_init_set(prims); /* Pick tuned versions if possible. */ #ifdef WITH_IPP prims->set_8u = (__set_8u_t) ippsSet_8u; prims->set_32s = (__set_32s_t) ippsSet_32s; prims->set_32u = (__set_32u_t) ipp_wrapper_set_32u; prims->zero = (__zero_t) ippsZero_8u; #elif defined(WITH_SSE2) if (IsProcessorFeaturePresent(PF_SSE2_INSTRUCTIONS_AVAILABLE)) { prims->set_8u = sse2_set_8u; prims->set_32s = sse2_set_32s; prims->set_32u = sse2_set_32u; } #endif }