annotate libvo/fastmemcpy.h @ 9941:c6c03483595b

at least it works now, but it's horrible slow and broken. double buffer and direct rendering support are needed to make this remotely usable...
author rfelker
date Sat, 19 Apr 2003 18:57:16 +0000
parents 23ba417cf64b
children ac3fd2ff2561
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
477
a1ceb65cf6ab add 3dnow support
pontscho
parents: 409
diff changeset
1 #ifndef __MPLAYER_MEMCPY
644
88eb1a3f7bfb Changed code, should be faster on Athlon/K6 but slower on PIII with SSE, more portable.
atmosfear
parents: 581
diff changeset
2 #define __MPLAYER_MEMCPY 1
88eb1a3f7bfb Changed code, should be faster on Athlon/K6 but slower on PIII with SSE, more portable.
atmosfear
parents: 581
diff changeset
3
1131
30e6a115a088 cosmetic changes and sse/sse included
al3x
parents: 800
diff changeset
4 #include "../config.h"
800
dc6cdb87229a USE_FASTMEMCPY bug fixed.
pontscho
parents: 698
diff changeset
5
1131
30e6a115a088 cosmetic changes and sse/sse included
al3x
parents: 800
diff changeset
6 #ifdef USE_FASTMEMCPY
30e6a115a088 cosmetic changes and sse/sse included
al3x
parents: 800
diff changeset
7 #if defined(HAVE_MMX) || defined(HAVE_MMX2) || defined(HAVE_3DNOW) \
30e6a115a088 cosmetic changes and sse/sse included
al3x
parents: 800
diff changeset
8 /* || defined(HAVE_SSE) || defined(HAVE_SSE2) */
644
88eb1a3f7bfb Changed code, should be faster on Athlon/K6 but slower on PIII with SSE, more portable.
atmosfear
parents: 581
diff changeset
9 #include <stddef.h>
477
a1ceb65cf6ab add 3dnow support
pontscho
parents: 409
diff changeset
10
698
f0fbf1a9bf31 Moving fast_memcpy to separate file (Size optimization)
nickols_k
parents: 685
diff changeset
11 extern void * fast_memcpy(void * to, const void * from, size_t len);
4681
8db59073127e mem2agpcpy()
michael
parents: 1131
diff changeset
12 extern void * mem2agpcpy(void * to, const void * from, size_t len);
376
63c47ec706cd P3 fixes...
arpi_esp
parents: 370
diff changeset
13 #define memcpy(a,b,c) fast_memcpy(a,b,c)
513
aec3cad1e41a replace "movsl..." to small_memcpy
pontscho
parents: 478
diff changeset
14
4681
8db59073127e mem2agpcpy()
michael
parents: 1131
diff changeset
15 #else /* HAVE_MMX/MMX2/3DNOW/SSE/SSE2 */
8db59073127e mem2agpcpy()
michael
parents: 1131
diff changeset
16 #define mem2agpcpy(a,b,c) memcpy(a,b,c)
478
9df257e7ef78 sorry, for the #endif
pontscho
parents: 477
diff changeset
17 #endif
4681
8db59073127e mem2agpcpy()
michael
parents: 1131
diff changeset
18
8db59073127e mem2agpcpy()
michael
parents: 1131
diff changeset
19 #else /* USE_FASTMEMCPY */
8db59073127e mem2agpcpy()
michael
parents: 1131
diff changeset
20 #define mem2agpcpy(a,b,c) memcpy(a,b,c)
8db59073127e mem2agpcpy()
michael
parents: 1131
diff changeset
21 #endif
4708
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
22
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
23 static inline void * mem2agpcpy_pic(void * dst, void * src, int bytesPerLine, int height, int dstStride, int srcStride)
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
24 {
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
25 int i;
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
26 void *retval=dst;
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
27
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
28 if(dstStride == srcStride) mem2agpcpy(dst, src, srcStride*height);
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
29 else
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
30 {
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
31 for(i=0; i<height; i++)
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
32 {
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
33 mem2agpcpy(dst, src, bytesPerLine);
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
34 src+= srcStride;
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
35 dst+= dstStride;
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
36 }
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
37 }
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
38
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
39 return retval;
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
40 }
000ca7a19331 mem2agpcpy_pic()
michael
parents: 4681
diff changeset
41
5504
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
42 static inline void * memcpy_pic(void * dst, void * src, int bytesPerLine, int height, int dstStride, int srcStride)
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
43 {
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
44 int i;
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
45 void *retval=dst;
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
46
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
47 if(dstStride == srcStride) memcpy(dst, src, srcStride*height);
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
48 else
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
49 {
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
50 for(i=0; i<height; i++)
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
51 {
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
52 memcpy(dst, src, bytesPerLine);
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
53 src+= srcStride;
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
54 dst+= dstStride;
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
55 }
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
56 }
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
57
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
58 return retval;
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
59 }
23ba417cf64b memcpy_pic() added (copy image plane with src/dst stride)
arpi
parents: 4708
diff changeset
60
4681
8db59073127e mem2agpcpy()
michael
parents: 1131
diff changeset
61 #endif