Mercurial > hg > dmlib
diff dmblitfunc.h @ 809:eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 14 May 2014 21:28:14 +0300 |
parents | 79dac918c81e |
children |
line wrap: on
line diff
--- a/dmblitfunc.h Tue May 13 18:18:10 2014 +0300 +++ b/dmblitfunc.h Wed May 14 21:28:14 2014 +0300 @@ -15,7 +15,7 @@ #define DM_BLITFUNC_SRC_TYPE Uint8 #define DM_BLITFUNC_DST_TYPE Uint8 -#define DM_BLITFUNC_INNER *dp++ = sp[FP_GETH(xv)]; +#define DM_BLITFUNC_INNER *dp++ = sp[FP_GETH16(xv)]; #include "dmscaledblit.h" @@ -32,7 +32,7 @@ if (src->format->palette == NULL || src->format->palette->ncolors < 256) return -2; \ pal = (Uint32 *) src->format->palette->colors; -#define DM_BLITFUNC_INNER *dp++ = pal[sp[FP_GETH(xv)]]; +#define DM_BLITFUNC_INNER *dp++ = pal[sp[FP_GETH16(xv)]]; #include "dmscaledblit.h" @@ -44,7 +44,7 @@ #define DM_BLITFUNC_SRC_TYPE Uint32 #define DM_BLITFUNC_DST_TYPE Uint32 #define DM_BLITFUNC_INIT -#define DM_BLITFUNC_INNER *dp++ = sp[FP_GETH(xv)]; +#define DM_BLITFUNC_INNER *dp++ = sp[FP_GETH16(xv)]; #include "dmscaledblit.h" @@ -60,7 +60,7 @@ #define DM_BLITFUNC_DST_TYPE Uint8 #define DM_BLITFUNC_INNER \ - *dp = sp[FP_GETH(xv)] ? sp[FP_GETH(xv)] : *dp; dp++; + *dp = sp[FP_GETH16(xv)] ? sp[FP_GETH16(xv)] : *dp; dp++; #include "dmscaledblit.h" @@ -77,7 +77,7 @@ pal = (DMRGBA32 *) src->format->palette->colors; #define DM_BLITFUNC_INNER \ - const DMRGBA32 q = pal[sp[FP_GETH(xv)]]; \ + const DMRGBA32 q = pal[sp[FP_GETH16(xv)]]; \ dp->r += ((q.r - dp->r) * q.a) >> 8; \ dp->g += ((q.g - dp->g) * q.a) >> 8; \ dp->b += ((q.b - dp->b) * q.a) >> 8; \ @@ -124,7 +124,7 @@ "packuswb %%mm2, %%mm1\n" \ "movd %%mm1, %0\n" \ : "=m" (*dp) \ - : "m" (*dp), "m" (sp[FP_GETH(xv)]), "m" (qpdmask), "m" (qpdrm) \ + : "m" (*dp), "m" (sp[FP_GETH16(xv)]), "m" (qpdmask), "m" (qpdrm) \ : "memory", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5" ); dp++; #define DM_BLITFUNC_FINISH asm("emms\n"); @@ -134,7 +134,7 @@ #define DM_BLITFUNC_SRC_TYPE DMRGBA32 #define DM_BLITFUNC_DST_TYPE DMRGBA32 #define DM_BLITFUNC_INNER \ - const DMRGBA32 q = sp[FP_GETH(xv)]; \ + const DMRGBA32 q = sp[FP_GETH16(xv)]; \ dp->r += ((q.r - dp->r) * q.a) >> 8; \ dp->g += ((q.g - dp->g) * q.a) >> 8; \ dp->b += ((q.b - dp->b) * q.a) >> 8; \ @@ -154,7 +154,7 @@ #define DM_BLITFUNC_INIT #define DM_BLITFUNC_INNER \ - const DMRGBA32 q = sp[FP_GETH(xv)]; \ + const DMRGBA32 q = sp[FP_GETH16(xv)]; \ dp->r = (q.r * q.a + dp->r * dp->a) >> 8; \ dp->g = (q.g * q.a + dp->g * dp->a) >> 8; \ dp->b = (q.b * q.a + dp->b * dp->a) >> 8; \ @@ -214,7 +214,7 @@ "packuswb %%mm2, %%mm1\n" \ "movd %%mm1, %0\n" \ : "=m" (*dp) \ - : "m" (*dp), "m" (sp[FP_GETH(xv)]), "m" (qpdmask), "m" (qpdrm) \ + : "m" (*dp), "m" (sp[FP_GETH16(xv)]), "m" (qpdmask), "m" (qpdrm) \ : "memory", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5" ); dp++; #define DM_BLITFUNC_FINISH asm("emms\n"); @@ -224,7 +224,7 @@ #define DM_BLITFUNC_SRC_TYPE DMRGBA32 #define DM_BLITFUNC_DST_TYPE DMRGBA32 #define DM_BLITFUNC_INNER \ - const DMRGBA32 q = sp[FP_GETH(xv)]; \ + const DMRGBA32 q = sp[FP_GETH16(xv)]; \ const int a = (alpha * q.a) >> 8; \ dp->r += ((q.r - dp->r) * a) >> 8; \ dp->g += ((q.g - dp->g) * a) >> 8; \ @@ -245,7 +245,7 @@ #define DM_BLITFUNC_SRC_TYPE Uint8 #define DM_BLITFUNC_DST_TYPE Uint8 #define DM_BLITFUNC_INNER \ - const int q = sp[FP_GETH(xv)] + *dp; \ + const int q = sp[FP_GETH16(xv)] + *dp; \ *(dp++) = q < 256 ? q : 255; #include "dmscaledblit.h" @@ -269,13 +269,13 @@ "paddusb %%mm2, %%mm1\n" \ "movd %%mm1, %0\n" \ : "=m" (*dp) \ - : "m" (*dp), "m" (pal[sp[FP_GETH(xv)]]) \ + : "m" (*dp), "m" (pal[sp[FP_GETH16(xv)]]) \ : "memory", "%mm1", "%mm2" ); dp++; #define DM_BLITFUNC_FINISH asm("emms\n"); #else #define DM_BLITFUNC_INNER \ - const DMRGBA32 q = pal[sp[FP_GETH(xv)]]; \ + const DMRGBA32 q = pal[sp[FP_GETH16(xv)]]; \ const int qr = dp->r + q.r, qg = dp->g + q.g, qb = dp->b + q.b; \ dp->r = qr < 256 ? qr : 255; \ dp->g = qg < 256 ? qg : 255; \ @@ -302,7 +302,7 @@ "paddusb %%mm2, %%mm1\n" \ "movd %%mm1, %0\n" \ : "=m" (*dp) \ - : "m" (*dp), "m" (sp[FP_GETH(xv)]) \ + : "m" (*dp), "m" (sp[FP_GETH16(xv)]) \ : "memory", "%mm1", "%mm2" ); dp++; #define DM_BLITFUNC_FINISH asm("emms\n"); @@ -310,7 +310,7 @@ #define DM_BLITFUNC_SRC_TYPE DMRGBA32 #define DM_BLITFUNC_DST_TYPE DMRGBA32 #define DM_BLITFUNC_INNER \ - const DMRGBA32 q = sp[FP_GETH(xv)]; \ + const DMRGBA32 q = sp[FP_GETH16(xv)]; \ const int qr = dp->r + q.r, qg = dp->g + q.g, qb = dp->b + q.b; \ dp->r = qr < 256 ? qr : 255; \ dp->g = qg < 256 ? qg : 255; \