Skip to content

Commit 4a7de13

Browse files
committed
[primitives] update benchmark
test all available primitives types now
1 parent 3a6994c commit 4a7de13

File tree

2 files changed

+36
-71
lines changed

2 files changed

+36
-71
lines changed

libfreerdp/primitives/benchmark/benchmark.c

Lines changed: 36 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -203,78 +203,49 @@ int main(int argc, char* argv[])
203203
WINPR_UNUSED(argc);
204204
WINPR_UNUSED(argv);
205205
primitives_YUV_benchmark bench = primitives_YUV_benchmark_init();
206-
primitives_t* opt = primitives_get();
207-
primitives_t* generic = primitives_get_generic();
208-
if (!generic || !opt)
209-
{
210-
(void)fprintf(stderr, "failed to get primitives: generic=%p, opt=%p\n", (void*)generic,
211-
(void*)opt);
212-
goto fail;
213-
}
214-
215-
printf("Running YUV420 -> RGB benchmark on generic implementation:\n");
216-
if (!primitives_YUV420_benchmark_run(&bench, generic))
217-
{
218-
(void)fprintf(stderr, "YUV420 -> RGB benchmark failed\n");
219-
goto fail;
220-
}
221-
printf("\n");
222-
223-
printf("Running YUV420 benchmark on optimized implementation:\n");
224-
if (!primitives_YUV420_benchmark_run(&bench, opt))
225-
{
226-
(void)fprintf(stderr, "YUV420 benchmark failed\n");
227-
goto fail;
228-
}
229-
printf("\n");
230206

231-
printf("Running RGB -> YUV420 benchmark on generic implementation:\n");
232-
if (!primitives_RGB2420_benchmark_run(&bench, generic))
207+
for (primitive_hints hint = PRIMITIVES_PURE_SOFT; hint < PRIMITIVES_AUTODETECT; hint++)
233208
{
234-
(void)fprintf(stderr, "RGB -> YUV420 benchmark failed\n");
235-
goto fail;
236-
}
237-
printf("\n");
238-
239-
printf("Running RGB -> YUV420 benchmark on optimized implementation:\n");
240-
if (!primitives_RGB2420_benchmark_run(&bench, opt))
241-
{
242-
(void)fprintf(stderr, "RGB -> YUV420 benchmark failed\n");
243-
goto fail;
244-
}
245-
printf("\n");
209+
const char* hintstr = primtives_hint_str(hint);
210+
primitives_t* prim = primitives_get_by_type(hint);
211+
if (!prim)
212+
{
213+
(void)fprintf(stderr, "failed to get primitives: %s\n", hintstr);
214+
goto fail;
215+
}
246216

247-
printf("Running YUV444 -> RGB benchmark on generic implementation:\n");
248-
if (!primitives_YUV444_benchmark_run(&bench, generic))
249-
{
250-
(void)fprintf(stderr, "YUV444 -> RGB benchmark failed\n");
251-
goto fail;
252-
}
253-
printf("\n");
217+
printf("Running YUV420 -> RGB benchmark on %s implementation:\n", hintstr);
218+
if (!primitives_YUV420_benchmark_run(&bench, prim))
219+
{
220+
(void)fprintf(stderr, "YUV420 -> RGB benchmark failed\n");
221+
goto fail;
222+
}
223+
printf("\n");
254224

255-
printf("Running YUV444 -> RGB benchmark on optimized implementation:\n");
256-
if (!primitives_YUV444_benchmark_run(&bench, opt))
257-
{
258-
(void)fprintf(stderr, "YUV444 -> RGB benchmark failed\n");
259-
goto fail;
260-
}
261-
printf("\n");
225+
printf("Running RGB -> YUV420 benchmark on %s implementation:\n", hintstr);
226+
if (!primitives_RGB2420_benchmark_run(&bench, prim))
227+
{
228+
(void)fprintf(stderr, "RGB -> YUV420 benchmark failed\n");
229+
goto fail;
230+
}
231+
printf("\n");
262232

263-
printf("Running RGB -> YUV444 benchmark on generic implementation:\n");
264-
if (!primitives_RGB2444_benchmark_run(&bench, generic))
265-
{
266-
(void)fprintf(stderr, "RGB -> YUV444 benchmark failed\n");
267-
goto fail;
268-
}
269-
printf("\n");
233+
printf("Running YUV444 -> RGB benchmark on %s implementation:\n", hintstr);
234+
if (!primitives_YUV444_benchmark_run(&bench, prim))
235+
{
236+
(void)fprintf(stderr, "YUV444 -> RGB benchmark failed\n");
237+
goto fail;
238+
}
239+
printf("\n");
270240

271-
printf("Running RGB -> YUV444 benchmark on optimized implementation:\n");
272-
if (!primitives_RGB2444_benchmark_run(&bench, opt))
273-
{
274-
(void)fprintf(stderr, "RGB -> YUV444 benchmark failed\n");
275-
goto fail;
241+
printf("Running RGB -> YUV444 benchmark on %s implementation:\n", hintstr);
242+
if (!primitives_RGB2444_benchmark_run(&bench, prim))
243+
{
244+
(void)fprintf(stderr, "RGB -> YUV444 benchmark failed\n");
245+
goto fail;
246+
}
247+
printf("\n");
276248
}
277-
printf("\n");
278249
fail:
279250
primitives_YUV_benchmark_free(&bench);
280251
return 0;

libfreerdp/primitives/sse/prim_copy_sse4_1.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,6 @@
3434
#include <emmintrin.h>
3535
#include <immintrin.h>
3636

37-
static INLINE pstatus_t sse_image_copy_no_overlap_convert(
38-
BYTE* WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
39-
UINT32 nWidth, UINT32 nHeight, const BYTE* WINPR_RESTRICT pSrcData, DWORD SrcFormat,
40-
UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, const gdiPalette* WINPR_RESTRICT palette,
41-
SSIZE_T srcVMultiplier, SSIZE_T srcVOffset, SSIZE_T dstVMultiplier, SSIZE_T dstVOffset);
42-
4337
static INLINE pstatus_t sse_image_copy_bgr24_bgrx32(BYTE* WINPR_RESTRICT pDstData, UINT32 nDstStep,
4438
UINT32 nXDst, UINT32 nYDst, UINT32 nWidth,
4539
UINT32 nHeight,

0 commit comments

Comments
 (0)