Coverage Report

Created: 2025-07-01 06:46

/src/FreeRDP/libfreerdp/primitives/prim_copy.h
Line
Count
Source (jump to first uncovered line)
1
/**
2
 * FreeRDP: A Remote Desktop Protocol Implementation
3
 * Primitives copy
4
 *
5
 * Copyright 2024 Armin Novak <anovak@thincast.com>
6
 * Copyright 2024 Thincast Technologies GmbH
7
 *
8
 * Licensed under the Apache License, Version 2.0 (the "License");
9
 * you may not use this file except in compliance with the License.
10
 * You may obtain a copy of the License at
11
 *
12
 *     http://www.apache.org/licenses/LICENSE-2.0
13
 *
14
 * Unless required by applicable law or agreed to in writing, software
15
 * distributed under the License is distributed on an "AS IS" BASIS,
16
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
 * See the License for the specific language governing permissions and
18
 * limitations under the License.
19
 */
20
21
#ifndef FREERDP_LIB_PRIM_COPY_H
22
#define FREERDP_LIB_PRIM_COPY_H
23
24
#include <winpr/wtypes.h>
25
#include <winpr/sysinfo.h>
26
27
#include <freerdp/config.h>
28
#include <freerdp/primitives.h>
29
30
pstatus_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);
35
36
pstatus_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,
41
    UINT32 flags);
42
43
FREERDP_LOCAL void primitives_init_copy_sse41_int(primitives_t* WINPR_RESTRICT prims);
44
static inline void primitives_init_copy_sse41(primitives_t* WINPR_RESTRICT prims)
45
0
{
46
0
  if (!IsProcessorFeaturePresent(PF_SSE4_1_INSTRUCTIONS_AVAILABLE))
47
0
    return;
48
49
0
  primitives_init_copy_sse41_int(prims);
50
0
}
Unexecuted instantiation: prim_copy.c:primitives_init_copy_sse41
Unexecuted instantiation: prim_copy_sse4_1.c:primitives_init_copy_sse41
Unexecuted instantiation: prim_copy_avx2.c:primitives_init_copy_sse41
51
52
#if defined(WITH_AVX2)
53
FREERDP_LOCAL void primitives_init_copy_avx2_int(primitives_t* WINPR_RESTRICT prims);
54
static inline void primitives_init_copy_avx2(primitives_t* WINPR_RESTRICT prims)
55
0
{
56
0
  if (!IsProcessorFeaturePresent(PF_AVX2_INSTRUCTIONS_AVAILABLE))
57
0
    return;
58
59
0
  primitives_init_copy_avx2_int(prims);
60
0
}
Unexecuted instantiation: prim_copy.c:primitives_init_copy_avx2
Unexecuted instantiation: prim_copy_sse4_1.c:primitives_init_copy_avx2
Unexecuted instantiation: prim_copy_avx2.c:primitives_init_copy_avx2
61
#endif
62
63
#endif