[Bf-blender-cvs] [76bed92] opensubdiv-modifier: Fixed for SCons

Sergey Sharybin noreply at git.blender.org
Wed May 14 12:14:58 CEST 2014


Commit: 76bed923f8c99ecbb67c5082e2445348827e5960
Author: Sergey Sharybin
Date:   Wed May 14 12:13:13 2014 +0200
https://developer.blender.org/rB76bed923f8c99ecbb67c5082e2445348827e5960

Fixed for SCons

Makes blender compilable with scons on linux.
Also solves compilation error with OpenSubdiv disabled.

===================================================================

M	SConstruct
M	intern/opensubdiv/SConscript
M	intern/opensubdiv/opensubdiv_capi.cc
M	source/blender/blenkernel/intern/subsurf_ccg.c
M	source/blender/makesrna/SConscript

===================================================================

diff --git a/SConstruct b/SConstruct
index 0258f77..e54a69a 100644
--- a/SConstruct
+++ b/SConstruct
@@ -686,6 +686,7 @@ if B.targets != ['cudakernels']:
     data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vsm_store_frag.glsl")
     data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vsm_store_vert.glsl")
     data_to_c_simple("intern/opencolorio/gpu_shader_display_transform.glsl")
+    data_to_c_simple("intern/opensubdiv/gpu_shader_opensubd_display.glsl")
 
     # --- blender ---
     data_to_c_simple("release/datafiles/bfont.pfb")
diff --git a/intern/opensubdiv/SConscript b/intern/opensubdiv/SConscript
index fddc41b..73c188d 100644
--- a/intern/opensubdiv/SConscript
+++ b/intern/opensubdiv/SConscript
@@ -25,6 +25,8 @@
 #
 # ***** END GPL LICENSE BLOCK *****
 
+import os
+
 Import('env')
 
 sources = env.Glob('*.cc')
@@ -34,8 +36,29 @@ defs = []
 incs = '. ../guardedalloc'
 incs += ' ' + env['BF_OPENSUBDIV_INC']
 
+def checkOpenSubdivHeaderDefine(header, define):
+    include_path = Dir(env.subst(env['BF_OPENSUBDIV_INC'])).abspath
+    header_path = os.path.join(include_path, 'opensubdiv', 'osd', header)
+    if os.path.exists(header_path):
+        defs.append(define)
+        return True
+    return False
+
+checkOpenSubdivHeaderDefine("tbbComputeController.h", 'OPENSUBDIV_HAS_TBB')
+checkOpenSubdivHeaderDefine("gcdComputeController.h", 'OPENSUBDIV_HAS_GCD')
+
+# XXX: Ugly hack in order to link against cudart and opencl
+# Ideally it should be late-linking on runtime in order to make
+# portable builds.
+if checkOpenSubdivHeaderDefine("clComputeController.h", 'OPENSUBDIV_HAS_OPENCL'):
+    env['BF_OPENSUBDIV_LIB'] += ' OpenCL'
+if checkOpenSubdivHeaderDefine("cudaComputeController.h", 'OPENSUBDIV_HAS_CUDA'):
+    env['BF_OPENSUBDIV_LIB'] += ' cudart'
+
+checkOpenSubdivHeaderDefine("glslTransformFeedbackComputeController.h", 'OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK')
+checkOpenSubdivHeaderDefine("osd/glslComputeController.h", 'OPENSUBDIV_HAS_GLSL_COMPUTE')
+
 # generated data files
-import os
 sources.extend((
     os.path.join(env['DATA_SOURCES'], "gpu_shader_opensubd_display.glsl.c"),
 ))
diff --git a/intern/opensubdiv/opensubdiv_capi.cc b/intern/opensubdiv/opensubdiv_capi.cc
index 1ba85bd..b11b936 100644
--- a/intern/opensubdiv/opensubdiv_capi.cc
+++ b/intern/opensubdiv/opensubdiv_capi.cc
@@ -88,7 +88,11 @@ using OpenSubdiv::OsdVertex;
 
 typedef OpenSubdiv::HbrMesh<OsdVertex> OsdHbrMesh;
 
+#if defined(OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK) || \
+    defined(OPENSUBDIV_HAS_GLSL_COMPUTE)
 using OpenSubdiv::OsdGLVertexBuffer;
+#endif
+
 using OpenSubdiv::OsdGLDrawContext;
 
 // CPU backend
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 25b90c1..15287a4 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -3979,7 +3979,9 @@ struct DerivedMesh *subsurf_make_derived_from_derived(
 			 * only need this in cases when topology changes.
 			 */
 			ss = _getSubSurf(prevSS, levels, 3, ccg_flags);
+#ifdef WITH_OPENSUBDIV
 			ccgSubSurf_setSkipGrids(ss, use_gpu_backend);
+#endif
 			ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple);
 
 			result = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm, use_gpu_backend);
diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript
index 7abda87..3d23be0 100644
--- a/source/blender/makesrna/SConscript
+++ b/source/blender/makesrna/SConscript
@@ -126,6 +126,10 @@ if env['WITH_BF_OPENAL']:
 if env['WITH_BF_JACK']:
     defs.append('WITH_JACK')
 
+if env['WITH_BF_OPENSUBDIV']:
+    incs += ' #/intern/opensubdiv'
+    defs.append('WITH_OPENSUBDIV')
+
 if env['OURPLATFORM'] == 'linux':
     cflags='-pthread'




More information about the Bf-blender-cvs mailing list