[Bf-blender-cvs] [f8a499b596b] blender2.8: OpenSubdiv: Add stub implementation of C-API

Sergey Sharybin noreply at git.blender.org
Mon Aug 13 12:37:32 CEST 2018


Commit: f8a499b596b8af46201b86a30c9807ca54363e25
Author: Sergey Sharybin
Date:   Mon Aug 13 12:21:29 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBf8a499b596b8af46201b86a30c9807ca54363e25

OpenSubdiv: Add stub implementation of C-API

C-API is way smaller than the rest of the code which uses it.
So better to conditionally compile stub implementation than
to keep adding ifdef everywhere.

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

M	intern/CMakeLists.txt
M	intern/opensubdiv/CMakeLists.txt
M	intern/opensubdiv/internal/opensubdiv_gl_mesh.cc
A	intern/opensubdiv/stub/opensubdiv_evaluator_stub.cc
A	intern/opensubdiv/stub/opensubdiv_gl_mesh_stub.cc
A	intern/opensubdiv/stub/opensubdiv_stub.cc
A	intern/opensubdiv/stub/opensubdiv_topology_refiner_stub.cc
M	source/blender/blenkernel/BKE_subdiv.h
M	source/blender/blenkernel/CMakeLists.txt
M	source/blender/blenkernel/intern/subdiv.c
M	source/blender/blenkernel/intern/subdiv_converter.c
M	source/blender/blenkernel/intern/subdiv_converter_mesh.c
M	source/blender/blenkernel/intern/subdiv_eval.c
M	source/blender/blenkernel/intern/subdiv_mesh.c

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

diff --git a/intern/CMakeLists.txt b/intern/CMakeLists.txt
index 1459100d415..c7f0f414fb1 100644
--- a/intern/CMakeLists.txt
+++ b/intern/CMakeLists.txt
@@ -31,6 +31,7 @@ add_subdirectory(guardedalloc)
 add_subdirectory(libmv)
 add_subdirectory(memutil)
 add_subdirectory(opencolorio)
+add_subdirectory(opensubdiv)
 add_subdirectory(mikktspace)
 add_subdirectory(glew-mx)
 add_subdirectory(eigen)
@@ -71,10 +72,6 @@ if(WITH_BULLET)
 	add_subdirectory(rigidbody)
 endif()
 
-if(WITH_OPENSUBDIV)
-	add_subdirectory(opensubdiv)
-endif()
-
 # only windows needs utf16 converter
 if(WIN32)
 	add_subdirectory(utfconv)
diff --git a/intern/opensubdiv/CMakeLists.txt b/intern/opensubdiv/CMakeLists.txt
index 887eb399224..f11d9b4613a 100644
--- a/intern/opensubdiv/CMakeLists.txt
+++ b/intern/opensubdiv/CMakeLists.txt
@@ -29,39 +29,9 @@ set(INC
 )
 
 set(INC_SYS
-	${OPENSUBDIV_INCLUDE_DIR}
-	${GLEW_INCLUDE_PATH}
 )
 
 set(SRC
-	internal/opensubdiv.cc
-	internal/opensubdiv_converter_factory.cc
-	internal/opensubdiv_converter_internal.cc
-	internal/opensubdiv_converter_orient.cc
-	internal/opensubdiv_device_context_cuda.cc
-	internal/opensubdiv_device_context_opencl.cc
-	internal/opensubdiv_evaluator.cc
-	internal/opensubdiv_evaluator_internal.cc
-	internal/opensubdiv_gl_mesh.cc
-	internal/opensubdiv_gl_mesh_draw.cc
-	internal/opensubdiv_gl_mesh_fvar.cc
-	internal/opensubdiv_gl_mesh_internal.cc
-	internal/opensubdiv_topology_refiner.cc
-	internal/opensubdiv_topology_refiner_internal.cc
-	internal/opensubdiv_util.cc
-
-	internal/opensubdiv_converter_internal.h
-	internal/opensubdiv_converter_orient.h
-	internal/opensubdiv_converter_orient_impl.h
-	internal/opensubdiv_device_context_cuda.h
-	internal/opensubdiv_device_context_opencl.h
-	internal/opensubdiv_evaluator_internal.h
-	internal/opensubdiv_gl_mesh_fvar.h
-	internal/opensubdiv_gl_mesh_internal.h
-	internal/opensubdiv_internal.h
-	internal/opensubdiv_topology_refiner_internal.h
-	internal/opensubdiv_util.h
-
 	opensubdiv_capi.h
 	opensubdiv_capi_type.h
 	opensubdiv_converter_capi.h
@@ -70,44 +40,88 @@ set(SRC
 	opensubdiv_topology_refiner_capi.h
 )
 
-macro(OPENSUBDIV_DEFINE_COMPONENT component)
-	if(${${component}})
-		add_definitions(-D${component})
-	endif()
-endmacro()
+if(WITH_OPENSUBDIV)
+	macro(OPENSUBDIV_DEFINE_COMPONENT component)
+		if(${${component}})
+			add_definitions(-D${component})
+		endif()
+	endmacro()
 
-OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_OPENMP)
-# TODO(sergey): OpenCL is not tested and totally unstable atm.
-# OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_OPENCL)
-# TODO(sergey): CUDA stays disabled for util it's ported to drievr API.
-# OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_CUDA)
-OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK)
-OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_GLSL_COMPUTE)
+	list(APPEND INC_SYS
+		${OPENSUBDIV_INCLUDE_DIR}
+		${GLEW_INCLUDE_PATH}
+	)
 
-data_to_c_simple(shader/gpu_shader_opensubdiv_vertex.glsl SRC)
-data_to_c_simple(shader/gpu_shader_opensubdiv_geometry.glsl SRC)
-data_to_c_simple(shader/gpu_shader_opensubdiv_fragment.glsl SRC)
+	list(APPEND SRC
+		internal/opensubdiv.cc
+		internal/opensubdiv_converter_factory.cc
+		internal/opensubdiv_converter_internal.cc
+		internal/opensubdiv_converter_orient.cc
+		internal/opensubdiv_device_context_cuda.cc
+		internal/opensubdiv_device_context_opencl.cc
+		internal/opensubdiv_evaluator.cc
+		internal/opensubdiv_evaluator_internal.cc
+		internal/opensubdiv_gl_mesh.cc
+		internal/opensubdiv_gl_mesh_draw.cc
+		internal/opensubdiv_gl_mesh_fvar.cc
+		internal/opensubdiv_gl_mesh_internal.cc
+		internal/opensubdiv_topology_refiner.cc
+		internal/opensubdiv_topology_refiner_internal.cc
+		internal/opensubdiv_util.cc
 
-add_definitions(-DGLEW_STATIC)
+		internal/opensubdiv_converter_internal.h
+		internal/opensubdiv_converter_orient.h
+		internal/opensubdiv_converter_orient_impl.h
+		internal/opensubdiv_device_context_cuda.h
+		internal/opensubdiv_device_context_opencl.h
+		internal/opensubdiv_evaluator_internal.h
+		internal/opensubdiv_gl_mesh_fvar.h
+		internal/opensubdiv_gl_mesh_internal.h
+		internal/opensubdiv_internal.h
+		internal/opensubdiv_topology_refiner_internal.h
+		internal/opensubdiv_util.h
+	)
 
-if(WIN32)
-	add_definitions(-DNOMINMAX)
-	add_definitions(-D_USE_MATH_DEFINES)
-endif()
+	OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_OPENMP)
+	# TODO(sergey): OpenCL is not tested and totally unstable atm.
+	# OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_OPENCL)
+	# TODO(sergey): CUDA stays disabled for util it's ported to drievr API.
+	# OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_CUDA)
+	OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK)
+	OPENSUBDIV_DEFINE_COMPONENT(OPENSUBDIV_HAS_GLSL_COMPUTE)
 
-# TODO(sergey): Put CUEW back when CUDA is officially supported by OSD.
-#if(OPENSUBDIV_HAS_CUDA)
-#	list(APPEND INC
-#		../../extern/cuew/include
-#	)
-#	add_definitions(-DOPENSUBDIV_HAS_CUEW)
-#endif()
+	data_to_c_simple(shader/gpu_shader_opensubdiv_vertex.glsl SRC)
+	data_to_c_simple(shader/gpu_shader_opensubdiv_geometry.glsl SRC)
+	data_to_c_simple(shader/gpu_shader_opensubdiv_fragment.glsl SRC)
 
-if(OPENSUBDIV_HAS_OPENCL)
-	list(APPEND INC
-		../../extern/clew/include
+	add_definitions(-DGLEW_STATIC)
+
+	if(WIN32)
+		add_definitions(-DNOMINMAX)
+		add_definitions(-D_USE_MATH_DEFINES)
+	endif()
+
+	# TODO(sergey): Put CUEW back when CUDA is officially supported by OSD.
+	#if(OPENSUBDIV_HAS_CUDA)
+	#	list(APPEND INC
+	#		../../extern/cuew/include
+	#	)
+	#	add_definitions(-DOPENSUBDIV_HAS_CUEW)
+	#endif()
+
+	if(OPENSUBDIV_HAS_OPENCL)
+		list(APPEND INC
+			../../extern/clew/include
+		)
+		add_definitions(-DOPENSUBDIV_HAS_CLEW)
+	endif()
+else()
+	list(APPEND SRC
+		stub/opensubdiv_stub.cc
+		stub/opensubdiv_evaluator_stub.cc
+		stub/opensubdiv_gl_mesh_stub.cc
+		stub/opensubdiv_topology_refiner_stub.cc
 	)
-	add_definitions(-DOPENSUBDIV_HAS_CLEW)
 endif()
 
 blender_add_lib(bf_intern_opensubdiv "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/intern/opensubdiv/internal/opensubdiv_gl_mesh.cc b/intern/opensubdiv/internal/opensubdiv_gl_mesh.cc
index 34d27591d0b..649c5ce7b7d 100644
--- a/intern/opensubdiv/internal/opensubdiv_gl_mesh.cc
+++ b/intern/opensubdiv/internal/opensubdiv_gl_mesh.cc
@@ -281,7 +281,7 @@ struct OpenSubdiv_GLMesh *openSubdiv_createOsdGLMeshFromTopologyRefiner(
   return gl_mesh;
 }
 
-void openSubdiv_deleteOsdGLMesh(OpenSubdiv_GLMesh *gl_mesh) {
+void openSubdiv_deleteOsdGLMesh(OpenSubdiv_GLMesh* gl_mesh) {
   delete gl_mesh->internal;
   OBJECT_GUARDED_DELETE(gl_mesh, OpenSubdiv_GLMesh);
 }
diff --git a/intern/opensubdiv/stub/opensubdiv_evaluator_stub.cc b/intern/opensubdiv/stub/opensubdiv_evaluator_stub.cc
new file mode 100644
index 00000000000..86c80fe8a54
--- /dev/null
+++ b/intern/opensubdiv/stub/opensubdiv_evaluator_stub.cc
@@ -0,0 +1,29 @@
+// Copyright 2018 Blender Foundation. All rights reserved.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software Foundation,
+// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// Author: Sergey Sharybin
+
+#include "opensubdiv_evaluator_capi.h"
+
+#include <cstddef>
+
+OpenSubdiv_Evaluator* openSubdiv_createEvaluatorFromTopologyRefiner(
+    struct OpenSubdiv_TopologyRefiner* /*topology_refiner*/) {
+  return NULL;
+}
+
+void openSubdiv_deleteEvaluator(OpenSubdiv_Evaluator* /*evaluator*/) {
+}
diff --git a/intern/opensubdiv/stub/opensubdiv_gl_mesh_stub.cc b/intern/opensubdiv/stub/opensubdiv_gl_mesh_stub.cc
new file mode 100644
index 00000000000..8f14a2326dd
--- /dev/null
+++ b/intern/opensubdiv/stub/opensubdiv_gl_mesh_stub.cc
@@ -0,0 +1,37 @@
+// Copyright 2018 Blender Foundation. All rights reserved.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software Foundation,
+// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// Author: Sergey Sharybin
+
+#include "opensubdiv_gl_mesh_capi.h"
+
+#include <cstddef>
+
+struct OpenSubdiv_GLMesh *openSubdiv_createOsdGLMeshFromTopologyRefiner(
+    OpenSubdiv_TopologyRefiner* /*topology_refiner*/,
+    eOpenSubdivEvaluator /*evaluator_type*/) {
+  return NULL;
+}
+
+void openSubdiv_deleteOsdGLMesh(OpenSubdiv_GLMesh* /*gl_mesh*/) {
+}
+
+bool openSubdiv_initGLMeshDrawingResources(void) {
+  return false;
+}
+
+void openSubdiv_deinitGLMeshDrawingResources(void) {
+}
diff --git a/intern/opensubdiv/stub/opensubdiv_stub.cc b/intern/opensubdiv/stub/opensubdiv_stub.cc
new file mode 100644
index 00000000000..f03f0a0ef94
--- /dev/null
+++ b/intern/opensubdiv/stub/opensubdiv_stub.cc
@@ -0,0 +1,35 @@
+// Copyright 2018 Blender Foundation. All rights reserved.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FI

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list