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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-08-13 13:21:29 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-08-13 13:37:18 +0300
commitf8a499b596b8af46201b86a30c9807ca54363e25 (patch)
tree8ce53c7fb9c598deda0141f3eecf7d316b8c24b1 /intern/opensubdiv
parent33fbc4fbea14a17d71eacf2c152d51518737df35 (diff)
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.
Diffstat (limited to 'intern/opensubdiv')
-rw-r--r--intern/opensubdiv/CMakeLists.txt136
-rw-r--r--intern/opensubdiv/internal/opensubdiv_gl_mesh.cc2
-rw-r--r--intern/opensubdiv/stub/opensubdiv_evaluator_stub.cc29
-rw-r--r--intern/opensubdiv/stub/opensubdiv_gl_mesh_stub.cc37
-rw-r--r--intern/opensubdiv/stub/opensubdiv_stub.cc35
-rw-r--r--intern/opensubdiv/stub/opensubdiv_topology_refiner_stub.cc37
6 files changed, 214 insertions, 62 deletions
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 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_capi.h"
+
+#include <cstddef>
+
+void openSubdiv_init(void) {
+}
+
+void openSubdiv_cleanup(void) {
+}
+
+int openSubdiv_getAvailableEvaluators(void) {
+ return 0;
+}
+
+int openSubdiv_getVersionHex(void) {
+ return 0;
+}
diff --git a/intern/opensubdiv/stub/opensubdiv_topology_refiner_stub.cc b/intern/opensubdiv/stub/opensubdiv_topology_refiner_stub.cc
new file mode 100644
index 00000000000..de98b0b5eee
--- /dev/null
+++ b/intern/opensubdiv/stub/opensubdiv_topology_refiner_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_topology_refiner_capi.h"
+
+#include <cstddef>
+
+OpenSubdiv_TopologyRefiner* openSubdiv_createTopologyRefinerFromConverter(
+ OpenSubdiv_Converter* /*converter*/,
+ const OpenSubdiv_TopologyRefinerSettings* /*settings*/) {
+ return NULL;
+}
+
+void openSubdiv_deleteTopologyRefiner(
+ OpenSubdiv_TopologyRefiner* /*topology_refiner*/) {
+}
+
+bool openSubdiv_topologyRefinerCompareWithConverter(
+ const OpenSubdiv_TopologyRefiner* /*topology_refiner*/,
+ const OpenSubdiv_Converter* /*converter*/) {
+ return false;
+}