forked from bartvdbraak/blender
* 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.
This commit is contained in:
parent
ee12451463
commit
11af0ff270
@ -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 ##################
|
||||
#############################################################################
|
||||
|
@ -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++'
|
||||
|
@ -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++'
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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'
|
||||
|
@ -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']
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user