* 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)
This commit is contained in:
@@ -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 )
|
||||
|
||||
@@ -26,13 +26,16 @@
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <algorithm>
|
||||
#include <math.h>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
|
||||
#ifdef _WIN32
|
||||
#define INFINITY FLT_MAX // in mingw math.h: (1.0F/0.0F). This generates compile error, though.
|
||||
#endif
|
||||
|
||||
extern int tot_pushup;
|
||||
extern int tot_pushdown;
|
||||
|
||||
|
||||
1008
tools/btools.py
1008
tools/btools.py
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user