diff --git a/libfreerdp/codec/neon/nsc_neon.c b/libfreerdp/codec/neon/nsc_neon.c index 5d9887b9a..9526752a8 100644 --- a/libfreerdp/codec/neon/nsc_neon.c +++ b/libfreerdp/codec/neon/nsc_neon.c @@ -18,6 +18,7 @@ * limitations under the License. */ +#include #include #include #include @@ -27,9 +28,15 @@ #define TAG FREERDP_TAG("codec.nsc.neon") +#if defined(WITH_NEON) +#if defined(_M_ARM64) || defined(_M_ARM) +#define NEON_ENABLED +#endif +#endif + void nsc_init_neon(NSC_CONTEXT* context) { -#if defined(WITH_NEON) +#if defined(NEON_ENABLED) if (!IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE)) return; diff --git a/libfreerdp/codec/neon/rfx_neon.c b/libfreerdp/codec/neon/rfx_neon.c index 677b55856..709610b06 100644 --- a/libfreerdp/codec/neon/rfx_neon.c +++ b/libfreerdp/codec/neon/rfx_neon.c @@ -17,6 +17,7 @@ limitations under the License. */ +#include #include #include @@ -26,6 +27,12 @@ #define TAG FREERDP_TAG("codec.rfx.neon") #if defined(WITH_NEON) +#if defined(_M_ARM64) || defined(_M_ARM) +#define NEON_ENABLED +#endif +#endif + +#if defined(NEON_ENABLED) #include #include @@ -520,11 +527,11 @@ static void rfx_dwt_2d_extrapolate_decode_neon(INT16* buffer, INT16* temp) rfx_dwt_2d_decode_extrapolate_block_neon(&buffer[3007], temp, 2); rfx_dwt_2d_decode_extrapolate_block_neon(&buffer[0], temp, 1); } -#endif // WITH_NEON +#endif // NEON_ENABLED void rfx_init_neon(RFX_CONTEXT* context) { -#if defined(WITH_NEON) +#if defined(NEON_ENABLED) if (IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE)) { DEBUG_RFX("Using NEON optimizations"); diff --git a/libfreerdp/primitives/neon/prim_YCoCg_neon.c b/libfreerdp/primitives/neon/prim_YCoCg_neon.c index 604553447..d33b4e3b6 100644 --- a/libfreerdp/primitives/neon/prim_YCoCg_neon.c +++ b/libfreerdp/primitives/neon/prim_YCoCg_neon.c @@ -23,15 +23,13 @@ #include #include -#if defined(WITH_NEON) -#include -#endif - #include "prim_internal.h" #include "prim_templates.h" #include "prim_YCoCg.h" -#if defined(WITH_NEON) +#if defined(NEON_ENABLED) +#include + static primitives_t* generic = NULL; static pstatus_t neon_YCoCgToRGB_8u_X(const BYTE* WINPR_RESTRICT pSrc, INT32 srcStep, @@ -159,7 +157,7 @@ static pstatus_t neon_YCoCgToRGB_8u_AC4R(const BYTE* WINPR_RESTRICT pSrc, INT32 /* ------------------------------------------------------------------------- */ void primitives_init_YCoCg_neon(primitives_t* WINPR_RESTRICT prims) { -#if defined(WITH_NEON) +#if defined(NEON_ENABLED) generic = primitives_get_generic(); primitives_init_YCoCg(prims); diff --git a/libfreerdp/primitives/neon/prim_YUV_neon.c b/libfreerdp/primitives/neon/prim_YUV_neon.c index 206c83abf..8c1a2dade 100644 --- a/libfreerdp/primitives/neon/prim_YUV_neon.c +++ b/libfreerdp/primitives/neon/prim_YUV_neon.c @@ -30,7 +30,7 @@ #include "prim_internal.h" #include "prim_YUV.h" -#if defined(WITH_NEON) +#if defined(NEON_ENABLED) #include static primitives_t* generic = NULL; @@ -744,7 +744,7 @@ static pstatus_t neon_YUV420CombineToYUV444(avc444_frame_type type, void primitives_init_YUV_neon(primitives_t* prims) { -#if defined(WITH_NEON) +#if defined(NEON_ENABLED) generic = primitives_get_generic(); primitives_init_YUV(prims); diff --git a/libfreerdp/primitives/neon/prim_colors_neon.c b/libfreerdp/primitives/neon/prim_colors_neon.c index d0401cb6e..cb76823ef 100644 --- a/libfreerdp/primitives/neon/prim_colors_neon.c +++ b/libfreerdp/primitives/neon/prim_colors_neon.c @@ -23,16 +23,14 @@ #include #include -#if defined(WITH_NEON) -#include -#endif - #include "prim_internal.h" #include "prim_templates.h" #include "prim_colors.h" /*---------------------------------------------------------------------------*/ -#ifdef WITH_NEON +#if defined(NEON_ENABLED) +#include + static primitives_t* generic = NULL; static pstatus_t @@ -344,12 +342,12 @@ neon_RGBToRGB_16s8u_P3AC4R(const INT16* const WINPR_RESTRICT pSrc[3], /* 16-bit return generic->RGBToRGB_16s8u_P3AC4R(pSrc, srcStep, pDst, dstStep, DstFormat, roi); } } -#endif /* WITH_NEON */ +#endif /* NEON_ENABLED */ /* ------------------------------------------------------------------------- */ void primitives_init_colors_neon(primitives_t* prims) { -#if defined(WITH_NEON) +#if defined(NEON_ENABLED) generic = primitives_get_generic(); primitives_init_colors(prims); diff --git a/libfreerdp/primitives/prim_internal.h b/libfreerdp/primitives/prim_internal.h index 70d13192a..6bafc59d8 100644 --- a/libfreerdp/primitives/prim_internal.h +++ b/libfreerdp/primitives/prim_internal.h @@ -40,11 +40,17 @@ #endif #endif -#if defined(SSE2_ENABLED) || defined(WITH_NEON) || defined(WITH_OPENCL) +#if defined(WITH_NEON) +#if defined(_M_ARM64) || defined(_M_ARM) +#define NEON_ENABLED +#endif +#endif + +#if defined(SSE2_ENABLED) || defined(NEON_ENABLED) || defined(WITH_OPENCL) #define HAVE_OPTIMIZED_PRIMITIVES 1 #endif -#if defined(SSE2_ENABLED) || defined(WITH_NEON) +#if defined(SSE2_ENABLED) || defined(NEON_ENABLED) #define HAVE_CPU_OPTIMIZED_PRIMITIVES 1 #endif