21#ifndef FREERDP_LIB_PRIM_COPY_H
22#define FREERDP_LIB_PRIM_COPY_H
24#include <winpr/wtypes.h>
25#include <winpr/sysinfo.h>
27#include <freerdp/config.h>
28#include <freerdp/primitives.h>
30pstatus_t generic_image_copy_no_overlap_convert(
31 BYTE* WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
32 UINT32 nWidth, UINT32 nHeight,
const BYTE* WINPR_RESTRICT pSrcData, DWORD SrcFormat,
33 UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc,
const gdiPalette* WINPR_RESTRICT palette,
34 int64_t srcVMultiplier, int64_t srcVOffset, int64_t dstVMultiplier, int64_t dstVOffset);
36pstatus_t generic_image_copy_no_overlap_memcpy(
37 BYTE* WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
38 UINT32 nWidth, UINT32 nHeight,
const BYTE* WINPR_RESTRICT pSrcData, DWORD SrcFormat,
39 UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc,
const gdiPalette* WINPR_RESTRICT palette,
40 int64_t srcVMultiplier, int64_t srcVOffset, int64_t dstVMultiplier, int64_t dstVOffset,
43FREERDP_LOCAL
void primitives_init_copy_sse41_int(
primitives_t* WINPR_RESTRICT prims);
44static inline void primitives_init_copy_sse41(
primitives_t* WINPR_RESTRICT prims)
46 if (!IsProcessorFeaturePresent(PF_SSE4_1_INSTRUCTIONS_AVAILABLE))
49 primitives_init_copy_sse41_int(prims);
53FREERDP_LOCAL
void primitives_init_copy_avx2_int(
primitives_t* WINPR_RESTRICT prims);
54static inline void primitives_init_copy_avx2(
primitives_t* WINPR_RESTRICT prims)
56 if (!IsProcessorFeaturePresent(PF_AVX2_INSTRUCTIONS_AVAILABLE))
59 primitives_init_copy_avx2_int(prims);