Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Letwory <nathan@letworyinteractive.com>2009-12-10 03:51:13 +0300
committerNathan Letwory <nathan@letworyinteractive.com>2009-12-10 03:51:13 +0300
commit11af0ff2702ccd02f5dd7528e3f4c5039c635144 (patch)
tree103d63cf62f21422944cc22f6b06b33978a523d9
parentee124514636be9c7456cf856bd4772af4a02ca48 (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.py8
-rw-r--r--config/linux2-config.py4
-rw-r--r--config/win32-mingw-config.py4
-rw-r--r--config/win32-vc-config.py5
-rw-r--r--config/win64-vc-config.py4
-rw-r--r--source/blender/render/SConscript29
-rwxr-xr-xtools/btools.py7
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