6 Dib_BitBlt_SRCCOPY_EqSurf(PBLTDATA pBltData
)
9 PBYTE pjDestBase
= pBltData
->siDst
.pjBase
;
10 PBYTE pjSrcBase
= pBltData
->siSrc
.pjBase
;
12 /* Calculate the width in bytes */
13 cjWidth
= pBltData
->ulWidth
* pBltData
->siDst
.jBpp
/ 8;
16 cLines
= pBltData
->ulHeight
;
19 memcpy(pjDestBase
, pjSrcBase
, cjWidth
);
20 pjDestBase
+= pBltData
->siDst
.cjAdvanceY
;
21 pjSrcBase
+= pBltData
->siSrc
.cjAdvanceY
;
25 #define Dib_BitBlt_SRCCOPY_S8_D8_EqSurf Dib_BitBlt_SRCCOPY_EqSurf
26 #define Dib_BitBlt_SRCCOPY_S16_D16_EqSurf Dib_BitBlt_SRCCOPY_EqSurf
27 #define Dib_BitBlt_SRCCOPY_S24_D24_EqSurf Dib_BitBlt_SRCCOPY_EqSurf
29 /* special movsd optimization on x86 */
30 #if defined(_M_IX86) || defined(_M_AMD64)
33 Dib_BitBlt_SRCCOPY_S32_D32_EqSurf(PBLTDATA pBltData
)
35 ULONG cLines
, cRows
= pBltData
->ulWidth
;
36 PBYTE pjDestBase
= pBltData
->siDst
.pjBase
;
37 PBYTE pjSrcBase
= pBltData
->siSrc
.pjBase
;
40 cLines
= pBltData
->ulHeight
;
43 __movsd((PULONG
)pjDestBase
, (PULONG
)pjSrcBase
, cRows
);
44 pjDestBase
+= pBltData
->siDst
.cjAdvanceY
;
45 pjSrcBase
+= pBltData
->siSrc
.cjAdvanceY
;
48 #define Dib_BitBlt_SRCCOPY_S32_D32_EqSurf_manual 1
50 #define Dib_BitBlt_SRCCOPY_S32_D32_EqSurf Dib_BitBlt_SRCCOPY_EqSurf
53 /* This definition will be checked against in DibLib_BitBlt.h
54 for all "redirected" functions */
55 #define Dib_BitBlt_SRCCOPY_EqSurf_manual 1
57 #define __USES_SOURCE 1
58 #define __USES_PATTERN 0
62 #define __FUNCTIONNAME BitBlt_SRCCOPY
64 #define _DibDoRop(pBltData, M, D, S, P) ROP_SRCCOPY(D,S,P)
66 #include "DibLib_AllSrcBPP.h"
70 Dib_BitBlt_SRCCOPY(PBLTDATA pBltData
)
72 gapfnBitBlt_SRCCOPY
[pBltData
->siDst
.iFormat
][pBltData
->siSrc
.iFormat
](pBltData
);