diff options
author | Brian Paul <[email protected]> | 2009-03-04 15:21:13 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2009-03-04 15:24:03 -0700 |
commit | c751224b0acd457d99cead45616980fec7ef78f1 (patch) | |
tree | 5609f99505e60f3c8e98459d97ce54e0c8b87481 /src/mesa/x86/x86.c | |
parent | f0c92d96568780d5a6c6b53845e9689893ce99e4 (diff) |
mesa: refactor x86 code
Move _mesa_init_all_x86_transform_asm() into x86.c so that common_x86.c
has no dependencies on the vertex transformation code.
Plus some comments and clean-ups.
Diffstat (limited to 'src/mesa/x86/x86.c')
-rw-r--r-- | src/mesa/x86/x86.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/mesa/x86/x86.c b/src/mesa/x86/x86.c index ce649f66b0b..c2df5e31e6e 100644 --- a/src/mesa/x86/x86.c +++ b/src/mesa/x86/x86.c @@ -34,6 +34,7 @@ #include "x86.h" #include "common_x86_macros.h" +#include "common_x86_asm.h" #ifdef DEBUG_MATH #include "math/m_debug.h" @@ -93,3 +94,52 @@ void _mesa_init_x86_transform_asm( void ) #endif } + +void _mesa_init_all_x86_transform_asm( void ) +{ + _mesa_get_x86_features(); + +#ifdef USE_X86_ASM + if ( _mesa_x86_cpu_features ) { + _mesa_init_x86_transform_asm(); + } + +#ifdef USE_MMX_ASM + if ( cpu_has_mmx ) { + if ( _mesa_getenv( "MESA_NO_MMX" ) == 0 ) { + _mesa_debug(NULL, "MMX cpu detected.\n"); + } else { + _mesa_x86_cpu_features &= ~(X86_FEATURE_MMX); + } + } +#endif + +#ifdef USE_3DNOW_ASM + if ( cpu_has_3dnow ) { + if ( _mesa_getenv( "MESA_NO_3DNOW" ) == 0 ) { + _mesa_debug(NULL, "3DNow! cpu detected.\n"); + _mesa_init_3dnow_transform_asm(); + } else { + _mesa_x86_cpu_features &= ~(X86_FEATURE_3DNOW); + } + } +#endif + +#ifdef USE_SSE_ASM + if ( cpu_has_xmm ) { + if ( _mesa_getenv( "MESA_NO_SSE" ) == 0 ) { + _mesa_debug(NULL, "SSE cpu detected.\n"); + if ( _mesa_getenv( "MESA_FORCE_SSE" ) == 0 ) { + _mesa_check_os_sse_support(); + } + if ( cpu_has_xmm ) { + _mesa_init_sse_transform_asm(); + } + } else { + _mesa_debug(NULL, "SSE cpu detected, but switched off by user.\n"); + _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM); + } + } +#endif +#endif +} |