17#include <freerdp/config.h>
21#include <freerdp/types.h>
22#include <freerdp/primitives.h>
24#include "prim_internal.h"
28static pstatus_t general_set_8u(BYTE val, BYTE* WINPR_RESTRICT pDst, UINT32 len)
30 memset((
void*)pDst, (
int)val, (
size_t)len);
31 return PRIMITIVES_SUCCESS;
35static pstatus_t general_zero(
void* WINPR_RESTRICT pDst,
size_t len)
38 return PRIMITIVES_SUCCESS;
42static pstatus_t general_set_32s(INT32 val, INT32* WINPR_RESTRICT pDst, UINT32 len)
53 return PRIMITIVES_SUCCESS;
64 size_t thiswidth = span;
66 if (thiswidth > remaining)
67 thiswidth = remaining;
69 const size_t s = thiswidth << 2;
70 WINPR_ASSERT(thiswidth <= INT32_MAX);
71 const pstatus_t rc = prims->copy_8u((BYTE*)dptr, (BYTE*)(dptr + span), (INT32)s);
72 if (rc != PRIMITIVES_SUCCESS)
74 remaining -= thiswidth;
78 return PRIMITIVES_SUCCESS;
82static pstatus_t general_set_32u(UINT32 val, UINT32* WINPR_RESTRICT pDst, UINT32 len)
94 return PRIMITIVES_SUCCESS;
101 prims = primitives_get();
105 size_t thiswidth = span;
107 if (thiswidth > remaining)
108 thiswidth = remaining;
110 const size_t s = thiswidth << 2;
111 WINPR_ASSERT(thiswidth <= INT32_MAX);
112 const pstatus_t rc = prims->copy_8u((BYTE*)dptr, (BYTE*)(dptr + span), (INT32)s);
113 if (rc != PRIMITIVES_SUCCESS)
116 remaining -= thiswidth;
120 return PRIMITIVES_SUCCESS;
124void primitives_init_set(
primitives_t* WINPR_RESTRICT prims)
127 prims->set_8u = general_set_8u;
128 prims->set_32s = general_set_32s;
129 prims->set_32u = general_set_32u;
130 prims->zero = general_zero;
133void primitives_init_set_opt(
primitives_t* WINPR_RESTRICT prims)
135 primitives_init_set(prims);
136 primitives_init_set_sse2(prims);