[ODE] More speed???

Gary R. Van Sickle g.r.vansickle at worldnet.att.net
Fri Nov 7 01:40:16 MST 2003

> Hi
> ADM> SIMD is a general term, but you're right, I imagine it'll first
> ADM> be SSE like dSetZero().  :)   ODE's source is available, so
> ADM> anyone who knows 3dnow/etc can always add support separately...
> ADM> but runtime autodetection glue so often gets forgotten...
>      I had thought about this.My idea is
>      1)SeparateSSE,3DNow,MMX,normal,...code path by predefined in ODE
>      source.
>      2)After that build ODE's app for all platform, so we have:
>           ODE_App_SSE.exe     (Enable SSE)
>           ODE_App_MMX.exe     (Enable MMX)
>           ODE_App_MyGrandad_Computer.exe (No MMX)
>      3) Create a simple "loader" like this:
>            Platform = detectPlatform();
>            if (Platform is support SSE)
>            {
>               Excute  ODE_App_SSE.exe;
>            }
>            else
>            if (Platform is support MMX)
>            {
>               Excute  ODE_App_MMX.exe;
>            }
>            else
>            {
>               Excute  ODE_App_MyGrandad_Computer.exe;
>            }
>       This loader can be implemented easily in C/C++,...or even Unix
>       shell of DOS batch(with detect routine plus some errorlevel).

I've said this before, but one way of doing this pretty easily would be to use
Windows' DirectX vector and matrix manipulation functions, which take care of
all such craziness for you.  Yes, that would leave the Unii out in the cold
(unless there's a Unix DirectX clone out there somewhere), but it'd be an easy
way to start.  And you could always create a small Unix SIMD DirectX-compatible
library later.

Gary R. Van Sickle

More information about the ODE mailing list