/* ------------------------------------------------------------------------- */ void primitives_init_alphaComp_opt(primitives_t* prims) { generic = primitives_get_generic(); primitives_init_alphaComp(prims); #ifdef WITH_IPP prims->alphaComp_argb = ipp_alphaComp_argb; #elif defined(WITH_SSE2) if (IsProcessorFeaturePresent(PF_SSE2_INSTRUCTIONS_AVAILABLE) && IsProcessorFeaturePresent(PF_SSE3_INSTRUCTIONS_AVAILABLE)) /* for LDDQU */ { prims->alphaComp_argb = sse2_alphaComp_argb; } #endif }
/* ------------------------------------------------------------------------- */ 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); }