comparison src/video/SDL_blit_A.c @ 2261:c20476d7d7b3

Enabled 3DNow! intrinsic support
author Sam Lantinga <slouken@libsdl.org>
date Fri, 17 Aug 2007 03:22:03 +0000
parents 202ddfd1cfb1
children bee005ace1bf
comparison
equal deleted inserted replaced
2260:202ddfd1cfb1 2261:c20476d7d7b3
1367 srcp += srcskip; 1367 srcp += srcskip;
1368 dstp += dstskip; 1368 dstp += dstskip;
1369 } 1369 }
1370 } 1370 }
1371 1371
1372 #ifdef __MMX__ 1372 #ifdef __3dNOW__
1373 /* fast (as in MMX with prefetch) ARGB888->(A)RGB888 blending with pixel alpha */ 1373 /* fast (as in MMX with prefetch) ARGB888->(A)RGB888 blending with pixel alpha */
1374 static void 1374 static void
1375 BlitRGBtoRGBPixelAlphaMMX3DNOW(SDL_BlitInfo * info) 1375 BlitRGBtoRGBPixelAlphaMMX3DNOW(SDL_BlitInfo * info)
1376 { 1376 {
1377 int width = info->d_width; 1377 int width = info->d_width;
2248 2248
2249 case 4: 2249 case 4:
2250 if (sf->Rmask == df->Rmask 2250 if (sf->Rmask == df->Rmask
2251 && sf->Gmask == df->Gmask 2251 && sf->Gmask == df->Gmask
2252 && sf->Bmask == df->Bmask && sf->BytesPerPixel == 4) { 2252 && sf->Bmask == df->Bmask && sf->BytesPerPixel == 4) {
2253 #ifdef __MMX__ 2253 #if defined(__MMX__) || defined(__3dNOW__)
2254 if (sf->Rshift % 8 == 0 2254 if (sf->Rshift % 8 == 0
2255 && sf->Gshift % 8 == 0 2255 && sf->Gshift % 8 == 0
2256 && sf->Bshift % 8 == 0 2256 && sf->Bshift % 8 == 0
2257 && sf->Ashift % 8 == 0 && sf->Aloss == 0) { 2257 && sf->Ashift % 8 == 0 && sf->Aloss == 0) {
2258 #ifdef __3dNOW__
2258 if (SDL_Has3DNow()) 2259 if (SDL_Has3DNow())
2259 return BlitRGBtoRGBPixelAlphaMMX3DNOW; 2260 return BlitRGBtoRGBPixelAlphaMMX3DNOW;
2261 #endif
2262 #ifdef __MMX__
2260 if (SDL_HasMMX()) 2263 if (SDL_HasMMX())
2261 return BlitRGBtoRGBPixelAlphaMMX; 2264 return BlitRGBtoRGBPixelAlphaMMX;
2265 #endif
2262 } 2266 }
2263 #endif 2267 #endif /* __MMX__ || __3dNOW__ */
2264 if (sf->Amask == 0xff000000) { 2268 if (sf->Amask == 0xff000000) {
2265 #if SDL_ALTIVEC_BLITTERS 2269 #if SDL_ALTIVEC_BLITTERS
2266 if (SDL_HasAltiVec()) 2270 if (SDL_HasAltiVec())
2267 return BlitRGBtoRGBPixelAlphaAltivec; 2271 return BlitRGBtoRGBPixelAlphaAltivec;
2268 #endif 2272 #endif