diff options
author | Nathan Letwory <nathan@letworyinteractive.com> | 2009-12-05 03:26:20 +0300 |
---|---|---|
committer | Nathan Letwory <nathan@letworyinteractive.com> | 2009-12-05 03:26:20 +0300 |
commit | c2b71607d23fc2768ea6f8eabcaeec01daefcf30 (patch) | |
tree | 54cdaa7cde7e378f0408583a13fca456e02f1ff0 /source/blender/render/SConscript | |
parent | c7c1fda642b3cea1ec022123921e1ee06c9b2acb (diff) |
* provide SCons support to enabling jaguarandi SIMD raytracer optimizations for real :)
Until now only SSE switches were defined, but to really enjoy the SIMD structures, the
__SSE__ define needs to be given. This can now be done with setting in your user-config.py
WITH_BF_RAYOPTIMIZATION=True
(or WITH_BF_RAYOPTIMIZATION=1 on command-line)
Diffstat (limited to 'source/blender/render/SConscript')
-rw-r--r-- | source/blender/render/SConscript | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index 63ef83a0cfe..dfce2267898 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -2,17 +2,20 @@ Import ('env') if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'): - # FIXME: need to set the appropriate flags for msvc, otherwise we get warnings - cflags = [] - cxxflags = [] + # FIXME: need to set the appropriate flags for msvc, otherwise we get warnings + if env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CCFLAGS'] + ['/arch:SSE'] + else: + cflags = env['CCFLAGS'] + cxxflags = [] if env['OURPLATFORM'] == 'darwin': - if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64'): - cflags = env['CFLAGS'] + ['-mfpmath=sse'] - cxxflags = env['CXXFLAGS'] + ['-mfpmath=sse'] - else: - cflags = env['CFLAGS'] - cxxflags = env['CXXFLAGS'] + if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64') and env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CFLAGS'] + ['-mfpmath=sse'] + cxxflags = env['CXXFLAGS'] + ['-mfpmath=sse'] + else: + cflags = env['CFLAGS'] + cxxflags = env['CXXFLAGS'] sources = env.Glob('intern/source/*.c') raysources = env.Glob('intern/raytrace/*.cpp') @@ -31,15 +34,22 @@ if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') if env['OURPLATFORM'] == 'linux2': -# SSE is NOT safe all the time on linux, plus that ignores users compile flags and therefore no no +# SSE is NOT safe all the time on linux, plus that ignores users compile flags and therefore no no # cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] # cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] - cflags = env['CCFLAGS'] - cxxflags = env['CXXFLAGS'] + if env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CCFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] + cxxflags = env['CXXFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] + else: + cflags = env['CCFLAGS'] + cxxflags = env['CXXFLAGS'] incs += ' ../../../extern/binreloc/include' if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] +if env['WITH_BF_RAYOPTIMIZATION']: + defs.append('__SSE__') + env.BlenderLib ( libname = 'bf_render', sources = sources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags ) env.BlenderLib ( libname = 'bf_render_raytrace', sources = raysources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags, cxx_compileflags=cxxflags ) |