[primitives,codec] guard NEON code with platform
NEON optimized code might be used in multiarch/universal builds. So not only guard with WITH_NEON but also with architecture defines from winpr/platform.h
This commit is contained in:
parent
896ea3c445
commit
8020efcd0b
@ -18,6 +18,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <winpr/platform.h>
|
||||||
#include <winpr/sysinfo.h>
|
#include <winpr/sysinfo.h>
|
||||||
#include <freerdp/config.h>
|
#include <freerdp/config.h>
|
||||||
#include <freerdp/log.h>
|
#include <freerdp/log.h>
|
||||||
@ -27,9 +28,15 @@
|
|||||||
|
|
||||||
#define TAG FREERDP_TAG("codec.nsc.neon")
|
#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)
|
void nsc_init_neon(NSC_CONTEXT* context)
|
||||||
{
|
{
|
||||||
#if defined(WITH_NEON)
|
#if defined(NEON_ENABLED)
|
||||||
if (!IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE))
|
if (!IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <winpr/platform.h>
|
||||||
#include <freerdp/config.h>
|
#include <freerdp/config.h>
|
||||||
#include <freerdp/log.h>
|
#include <freerdp/log.h>
|
||||||
|
|
||||||
@ -26,6 +27,12 @@
|
|||||||
#define TAG FREERDP_TAG("codec.rfx.neon")
|
#define TAG FREERDP_TAG("codec.rfx.neon")
|
||||||
|
|
||||||
#if defined(WITH_NEON)
|
#if defined(WITH_NEON)
|
||||||
|
#if defined(_M_ARM64) || defined(_M_ARM)
|
||||||
|
#define NEON_ENABLED
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(NEON_ENABLED)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -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[3007], temp, 2);
|
||||||
rfx_dwt_2d_decode_extrapolate_block_neon(&buffer[0], temp, 1);
|
rfx_dwt_2d_decode_extrapolate_block_neon(&buffer[0], temp, 1);
|
||||||
}
|
}
|
||||||
#endif // WITH_NEON
|
#endif // NEON_ENABLED
|
||||||
|
|
||||||
void rfx_init_neon(RFX_CONTEXT* context)
|
void rfx_init_neon(RFX_CONTEXT* context)
|
||||||
{
|
{
|
||||||
#if defined(WITH_NEON)
|
#if defined(NEON_ENABLED)
|
||||||
if (IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE))
|
if (IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE))
|
||||||
{
|
{
|
||||||
DEBUG_RFX("Using NEON optimizations");
|
DEBUG_RFX("Using NEON optimizations");
|
||||||
|
@ -23,15 +23,13 @@
|
|||||||
#include <freerdp/primitives.h>
|
#include <freerdp/primitives.h>
|
||||||
#include <winpr/sysinfo.h>
|
#include <winpr/sysinfo.h>
|
||||||
|
|
||||||
#if defined(WITH_NEON)
|
|
||||||
#include <arm_neon.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "prim_internal.h"
|
#include "prim_internal.h"
|
||||||
#include "prim_templates.h"
|
#include "prim_templates.h"
|
||||||
#include "prim_YCoCg.h"
|
#include "prim_YCoCg.h"
|
||||||
|
|
||||||
#if defined(WITH_NEON)
|
#if defined(NEON_ENABLED)
|
||||||
|
#include <arm_neon.h>
|
||||||
|
|
||||||
static primitives_t* generic = NULL;
|
static primitives_t* generic = NULL;
|
||||||
|
|
||||||
static pstatus_t neon_YCoCgToRGB_8u_X(const BYTE* WINPR_RESTRICT pSrc, INT32 srcStep,
|
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)
|
void primitives_init_YCoCg_neon(primitives_t* WINPR_RESTRICT prims)
|
||||||
{
|
{
|
||||||
#if defined(WITH_NEON)
|
#if defined(NEON_ENABLED)
|
||||||
generic = primitives_get_generic();
|
generic = primitives_get_generic();
|
||||||
primitives_init_YCoCg(prims);
|
primitives_init_YCoCg(prims);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "prim_internal.h"
|
#include "prim_internal.h"
|
||||||
#include "prim_YUV.h"
|
#include "prim_YUV.h"
|
||||||
|
|
||||||
#if defined(WITH_NEON)
|
#if defined(NEON_ENABLED)
|
||||||
#include <arm_neon.h>
|
#include <arm_neon.h>
|
||||||
|
|
||||||
static primitives_t* generic = NULL;
|
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)
|
void primitives_init_YUV_neon(primitives_t* prims)
|
||||||
{
|
{
|
||||||
#if defined(WITH_NEON)
|
#if defined(NEON_ENABLED)
|
||||||
generic = primitives_get_generic();
|
generic = primitives_get_generic();
|
||||||
primitives_init_YUV(prims);
|
primitives_init_YUV(prims);
|
||||||
|
|
||||||
|
@ -23,16 +23,14 @@
|
|||||||
#include <freerdp/primitives.h>
|
#include <freerdp/primitives.h>
|
||||||
#include <winpr/sysinfo.h>
|
#include <winpr/sysinfo.h>
|
||||||
|
|
||||||
#if defined(WITH_NEON)
|
|
||||||
#include <arm_neon.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "prim_internal.h"
|
#include "prim_internal.h"
|
||||||
#include "prim_templates.h"
|
#include "prim_templates.h"
|
||||||
#include "prim_colors.h"
|
#include "prim_colors.h"
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#ifdef WITH_NEON
|
#if defined(NEON_ENABLED)
|
||||||
|
#include <arm_neon.h>
|
||||||
|
|
||||||
static primitives_t* generic = NULL;
|
static primitives_t* generic = NULL;
|
||||||
|
|
||||||
static pstatus_t
|
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);
|
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)
|
void primitives_init_colors_neon(primitives_t* prims)
|
||||||
{
|
{
|
||||||
#if defined(WITH_NEON)
|
#if defined(NEON_ENABLED)
|
||||||
generic = primitives_get_generic();
|
generic = primitives_get_generic();
|
||||||
primitives_init_colors(prims);
|
primitives_init_colors(prims);
|
||||||
|
|
||||||
|
@ -40,11 +40,17 @@
|
|||||||
#endif
|
#endif
|
||||||
#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
|
#define HAVE_OPTIMIZED_PRIMITIVES 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SSE2_ENABLED) || defined(WITH_NEON)
|
#if defined(SSE2_ENABLED) || defined(NEON_ENABLED)
|
||||||
#define HAVE_CPU_OPTIMIZED_PRIMITIVES 1
|
#define HAVE_CPU_OPTIMIZED_PRIMITIVES 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user