Mercurial > sdl-ios-xcode
changeset 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 |
files | VisualC/SDL/SDL.vcproj configure.in src/video/SDL_blit.h src/video/SDL_blit_A.c |
diffstat | 4 files changed, 44 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/VisualC/SDL/SDL.vcproj Fri Aug 17 02:55:21 2007 +0000 +++ b/VisualC/SDL/SDL.vcproj Fri Aug 17 03:22:03 2007 +0000 @@ -47,7 +47,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\include" - PreprocessorDefinitions="_DEBUG;_WINDOWS;_WIN32_WINNT=0x0400;__SSE__;__MMX__" + PreprocessorDefinitions="_DEBUG;_WINDOWS;_WIN32_WINNT=0x0400;__MMX__;__3dNOW__;__SSE__" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" @@ -145,7 +145,7 @@ InlineFunctionExpansion="1" EnableIntrinsicFunctions="false" AdditionalIncludeDirectories="..\..\include" - PreprocessorDefinitions="NDEBUG;_WINDOWS;_WIN32_WINNT=0x0400;__SSE__;__MMX__" + PreprocessorDefinitions="NDEBUG;_WINDOWS;_WIN32_WINNT=0x0400;__MMX__;__3dNOW__;__SSE__" StringPooling="true" RuntimeLibrary="2" BufferSecurityCheck="false"
--- a/configure.in Fri Aug 17 02:55:21 2007 +0000 +++ b/configure.in Fri Aug 17 03:22:03 2007 +0000 @@ -290,6 +290,9 @@ AC_TRY_COMPILE([ #include <mmintrin.h> + #ifndef __MMX__ + #error Assembler CPP flag not enabled + #endif ],[ ],[ have_gcc_mmx=yes @@ -301,6 +304,32 @@ fi fi + AC_ARG_ENABLE(3dnow, +AC_HELP_STRING([--enable-3dnow], [use MMX assembly routines [[default=yes]]]), + , enable_3dnow=yes) + if test x$enable_3dnow = xyes; then + save_CFLAGS="$CFLAGS" + have_gcc_3dnow=no + AC_MSG_CHECKING(for GCC -m3dnow option) + amd3dnow_CFLAGS="-m3dnow" + CFLAGS="$save_CFLAGS $amd3dnow_CFLAGS" + + AC_TRY_COMPILE([ + #include <mm3dnow.h> + #ifndef __3dNOW__ + #error Assembler CPP flag not enabled + #endif + ],[ + ],[ + have_gcc_3dnow=yes + ]) + AC_MSG_RESULT($have_gcc_3dnow) + + if test x$have_gcc_3dnow = xyes; then + EXTRA_CFLAGS="$EXTRA_CFLAGS $amd3dnow_CFLAGS" + fi + fi + AC_ARG_ENABLE(sse, AC_HELP_STRING([--enable-sse], [use SSE assembly routines [[default=yes]]]), , enable_sse=yes) @@ -313,6 +342,9 @@ AC_TRY_COMPILE([ #include <xmmintrin.h> + #ifndef __SSE__ + #error Assembler CPP flag not enabled + #endif ],[ ],[ have_gcc_sse=yes
--- a/src/video/SDL_blit.h Fri Aug 17 02:55:21 2007 +0000 +++ b/src/video/SDL_blit.h Fri Aug 17 03:22:03 2007 +0000 @@ -27,6 +27,9 @@ #ifdef __MMX__ #include <mmintrin.h> #endif +#ifdef __3dNOW__ +#include <mm3dnow.h> +#endif #ifdef __SSE__ #include <xmmintrin.h> #endif
--- a/src/video/SDL_blit_A.c Fri Aug 17 02:55:21 2007 +0000 +++ b/src/video/SDL_blit_A.c Fri Aug 17 03:22:03 2007 +0000 @@ -1369,7 +1369,7 @@ } } -#ifdef __MMX__ +#ifdef __3dNOW__ /* fast (as in MMX with prefetch) ARGB888->(A)RGB888 blending with pixel alpha */ static void BlitRGBtoRGBPixelAlphaMMX3DNOW(SDL_BlitInfo * info) @@ -2250,17 +2250,21 @@ if (sf->Rmask == df->Rmask && sf->Gmask == df->Gmask && sf->Bmask == df->Bmask && sf->BytesPerPixel == 4) { -#ifdef __MMX__ +#if defined(__MMX__) || defined(__3dNOW__) if (sf->Rshift % 8 == 0 && sf->Gshift % 8 == 0 && sf->Bshift % 8 == 0 && sf->Ashift % 8 == 0 && sf->Aloss == 0) { +#ifdef __3dNOW__ if (SDL_Has3DNow()) return BlitRGBtoRGBPixelAlphaMMX3DNOW; +#endif +#ifdef __MMX__ if (SDL_HasMMX()) return BlitRGBtoRGBPixelAlphaMMX; +#endif } -#endif +#endif /* __MMX__ || __3dNOW__ */ if (sf->Amask == 0xff000000) { #if SDL_ALTIVEC_BLITTERS if (SDL_HasAltiVec())