diff options
author | Nathan Letwory <nathan@letworyinteractive.com> | 2009-12-10 03:51:13 +0300 |
---|---|---|
committer | Nathan Letwory <nathan@letworyinteractive.com> | 2009-12-10 03:51:13 +0300 |
commit | 11af0ff2702ccd02f5dd7528e3f4c5039c635144 (patch) | |
tree | 103d63cf62f21422944cc22f6b06b33978a523d9 | |
parent | ee124514636be9c7456cf856bd4772af4a02ca48 (diff) |
* WITH_BF_RAYOPTIMIZATION cleanup and flag separation by matd.
This adds BF_RAYOPTIMIZATION_SSE_FLAGS through which one can manage
what SSE flags are best for the platform built for.
Note that the ray optimizations coded by jaguarandi are SSE-intrinsics only.
-rw-r--r-- | config/darwin-config.py | 8 | ||||
-rw-r--r-- | config/linux2-config.py | 4 | ||||
-rw-r--r-- | config/win32-mingw-config.py | 4 | ||||
-rw-r--r-- | config/win32-vc-config.py | 5 | ||||
-rw-r--r-- | config/win64-vc-config.py | 4 | ||||
-rw-r--r-- | source/blender/render/SConscript | 29 | ||||
-rwxr-xr-x | tools/btools.py | 7 |
7 files changed, 44 insertions, 17 deletions
diff --git a/config/darwin-config.py b/config/darwin-config.py index 55cb5d6a253..049fe62f3b0 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -270,6 +270,14 @@ BF_PCRE_LIBPATH = '${BF_PCRE}/lib' #BF_EXPAT_LIB = 'expat' #BF_EXPAT_LIBPATH = '/usr/lib' +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +if MACOSX_ARCHITECTURE == 'i386': + BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] +elif MACOSX_ARCHITECTURE == 'x86_64': + BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-msse2'] + + ############################################################################# ################### various compile settings and flags ################## ############################################################################# diff --git a/config/linux2-config.py b/config/linux2-config.py index 3e40b7af416..abe79ba5806 100644 --- a/config/linux2-config.py +++ b/config/linux2-config.py @@ -167,6 +167,10 @@ BF_EXPAT_LIBPATH = '/usr/lib' WITH_BF_OPENMP = True +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread'] + ## CC = 'gcc' CXX = 'g++' diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py index 7973ae930b4..00c70aaaf1f 100644 --- a/config/win32-mingw-config.py +++ b/config/win32-mingw-config.py @@ -137,6 +137,10 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] + ## CC = 'gcc' CXX = 'g++' diff --git a/config/win32-vc-config.py b/config/win32-vc-config.py index 60463a07a32..f18ed3e2007 100644 --- a/config/win32-vc-config.py +++ b/config/win32-vc-config.py @@ -148,6 +148,10 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE'] + WITH_BF_STATICOPENGL = False BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' @@ -155,6 +159,7 @@ BF_OPENGL_LIB = 'opengl32 glu32' BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a', '${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a', '${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ] + CC = 'cl.exe' CXX = 'cl.exe' diff --git a/config/win64-vc-config.py b/config/win64-vc-config.py index 53df6d96bf8..457640507da 100644 --- a/config/win64-vc-config.py +++ b/config/win64-vc-config.py @@ -161,6 +161,10 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE','/arch:SSE2'] + WITH_BF_STATICOPENGL = False BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index 2642d31bd35..71c60e046cc 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -4,18 +4,28 @@ Import ('env') cflags = env['CCFLAGS'] cxxflags = env['CXXFLAGS'] +defs = [] + if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + ['/arch:SSE'] + cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] if env['OURPLATFORM'] == 'win32-mingw': if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + ['-mfpmath=sse'] + cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] if env['OURPLATFORM'] == 'darwin': if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64') and env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CFLAGS'] + ['-mfpmath=sse'] - cxxflags = env['CXXFLAGS'] + ['-mfpmath=sse'] + cflags = env['CFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + +if env['OURPLATFORM'] == 'linux2': + if env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + incs += ' ../../../extern/binreloc/include' sources = env.Glob('intern/source/*.c') raysources = env.Glob('intern/raytrace/*.cpp') @@ -24,8 +34,6 @@ incs = 'intern/include #/intern/guardedalloc ../blenlib ../makesdna ../makesrna' incs += ' extern/include ../blenkernel ../radiosity/extern/include ../imbuf' incs += ' ../include ../blenloader ../../../intern/smoke/extern' -defs = [] - if env['WITH_BF_QUICKTIME']: defs.append('WITH_QUICKTIME') incs += ' ../quicktime ' + env['BF_QUICKTIME_INC'] @@ -33,15 +41,6 @@ if env['WITH_BF_QUICKTIME']: 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 -# cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] -# cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] - if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] - cxxflags = env['CXXFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] - incs += ' ../../../extern/binreloc/include' - if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] diff --git a/tools/btools.py b/tools/btools.py index d5cc8a543b4..556cb9b901a 100755 --- a/tools/btools.py +++ b/tools/btools.py @@ -76,7 +76,8 @@ def validate_arguments(args, bc): 'WITH_BF_FHS', 'BF_VERSION', 'BF_GHOST_DEBUG', - 'WITH_BF_RAYOPTIMIZATION' + 'WITH_BF_RAYOPTIMIZATION', + 'BF_RAYOPTIMIZATION_SSE_FLAGS' ] # Have options here that scons expects to be lists @@ -423,7 +424,9 @@ def read_opts(cfg, args): (BoolVariable('BF_UNIT_TEST', 'Build with unit test support.', False)), (BoolVariable('BF_GHOST_DEBUG', 'Make GHOST print events and info to stdout. (very verbose)', False)), - (BoolVariable('WITH_BF_RAYOPTIMIZATION', 'Enable raytracer SSE/SIMD optimization.', False)) + + (BoolVariable('WITH_BF_RAYOPTIMIZATION', 'Enable raytracer SSE/SIMD optimization.', False)), + ('BF_RAYOPTIMIZATION_SSE_FLAGS', 'SSE flags', '') ) # end of opts.AddOptions() return localopts |