changeset 3152:54710806be56

runtime cpu detection optional (compiles faster)
author michael
date Tue, 27 Nov 2001 01:19:56 +0000
parents 790a27fc64f1
children 5b8db331d0c1
files postproc/swscale.c
diffstat 1 files changed, 44 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/postproc/swscale.c	Tue Nov 27 01:12:30 2001 +0000
+++ b/postproc/swscale.c	Tue Nov 27 01:19:56 2001 +0000
@@ -136,12 +136,38 @@
 
 //Note: we have C, X86, MMX, MMX2, 3DNOW version therse no 3DNOW+MMX2 one
 //Plain C versions
+#if !defined (HAVE_MMX) || defined (RUNTIME_CPUDETECT)
+#define COMPILE_C
+#endif
+
+#ifdef CAN_COMPILE_X86_ASM
+
+#if (defined (HAVE_MMX) && !defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT)
+#define COMPILE_MMX
+#endif
+
+#if defined (HAVE_MMX2) || defined (RUNTIME_CPUDETECT)
+#define COMPILE_MMX2
+#endif
+
+#if (defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT)
+#define COMPILE_3DNOW
+#endif
+#endif //CAN_COMPILE_X86_ASM
+
+#undef HAVE_MMX
+#undef HAVE_MMX2
+#undef HAVE_3DNOW
+#undef ARCH_X86
+
+#ifdef COMPILE_C
 #undef HAVE_MMX
 #undef HAVE_MMX2
 #undef HAVE_3DNOW
 #undef ARCH_X86
 #define RENAME(a) a ## _C
 #include "swscale_template.c"
+#endif
 
 #ifdef CAN_COMPILE_X86_ASM
 
@@ -156,6 +182,7 @@
 #include "swscale_template.c"
 */
 //MMX versions
+#ifdef COMPILE_MMX
 #undef RENAME
 #define HAVE_MMX
 #undef HAVE_MMX2
@@ -163,8 +190,10 @@
 #define ARCH_X86
 #define RENAME(a) a ## _MMX
 #include "swscale_template.c"
+#endif
 
 //MMX2 versions
+#ifdef COMPILE_MMX2
 #undef RENAME
 #define HAVE_MMX
 #define HAVE_MMX2
@@ -172,8 +201,10 @@
 #define ARCH_X86
 #define RENAME(a) a ## _MMX2
 #include "swscale_template.c"
+#endif
 
 //3DNOW versions
+#ifdef COMPILE_3DNOW
 #undef RENAME
 #define HAVE_MMX
 #undef HAVE_MMX2
@@ -181,6 +212,7 @@
 #define ARCH_X86
 #define RENAME(a) a ## _3DNow
 #include "swscale_template.c"
+#endif
 
 #endif //CAN_COMPILE_X86_ASM
 
@@ -200,7 +232,7 @@
 // scaling factors:
 //static int s_yinc=(vo_dga_src_height<<16)/vo_dga_vp_height;
 //static int s_xinc=(vo_dga_src_width<<8)/vo_dga_vp_width;
-
+#ifdef RUNTIME_CPUDETECT
 #ifdef CAN_COMPILE_X86_ASM
 	// ordered per speed fasterst first
 	if(gCpuCaps.hasMMX2)
@@ -214,6 +246,17 @@
 #else
 		SwScale_YV12slice_C(srcptr, stride, y, h, dstptr, dststride, dstw, dstbpp, s_xinc, s_yinc);
 #endif
+#else //RUNTIME_CPUDETECT
+#ifdef HAVE_MMX2
+		SwScale_YV12slice_MMX2(srcptr, stride, y, h, dstptr, dststride, dstw, dstbpp, s_xinc, s_yinc);
+#elif defined (HAVE_3DNOW)
+		SwScale_YV12slice_3DNow(srcptr, stride, y, h, dstptr, dststride, dstw, dstbpp, s_xinc, s_yinc);
+#elif defined (HAVE_MMX)
+		SwScale_YV12slice_MMX(srcptr, stride, y, h, dstptr, dststride, dstw, dstbpp, s_xinc, s_yinc);
+#else
+		SwScale_YV12slice_C(srcptr, stride, y, h, dstptr, dststride, dstw, dstbpp, s_xinc, s_yinc);
+#endif
+#endif //!RUNTIME_CPUDETECT
 
 }