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
path: root/intern
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2020-05-18 19:47:38 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-05-27 13:07:15 +0300
commit67fe31d7511e762dac21801656c336add63a811a (patch)
treecb8712038996d669ab888da27a480cc19ca53942 /intern
parent7c0bea0d656eb4838ae2b5ebfed53cd1dae6cb12 (diff)
OpenSubdiv: Refactor, move topology refiner to own folder
In the future factory will also be moved there.
Diffstat (limited to 'intern')
-rw-r--r--intern/opensubdiv/CMakeLists.txt9
-rw-r--r--intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc4
-rw-r--r--intern/opensubdiv/internal/topology/topology_refiner_capi.cc (renamed from intern/opensubdiv/internal/opensubdiv_topology_refiner.cc)18
-rw-r--r--intern/opensubdiv/internal/topology/topology_refiner_impl.cc (renamed from intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.cc)13
-rw-r--r--intern/opensubdiv/internal/topology/topology_refiner_impl.h (renamed from intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.h)21
-rw-r--r--intern/opensubdiv/opensubdiv_topology_refiner_capi.h13
6 files changed, 47 insertions, 31 deletions
diff --git a/intern/opensubdiv/CMakeLists.txt b/intern/opensubdiv/CMakeLists.txt
index 3226d9e8931..7c73b2ad555 100644
--- a/intern/opensubdiv/CMakeLists.txt
+++ b/intern/opensubdiv/CMakeLists.txt
@@ -50,6 +50,7 @@ if(WITH_OPENSUBDIV)
)
list(APPEND SRC
+ # Device.
internal/device/device_context_cuda.cc
internal/device/device_context_cuda.h
internal/device/device_context_glsl_compute.cc
@@ -61,13 +62,16 @@ if(WITH_OPENSUBDIV)
internal/device/device_context_openmp.cc
internal/device/device_context_openmp.h
+ # Topology.
+ internal/topology/topology_refiner_capi.cc
+ internal/topology/topology_refiner_impl.cc
+ internal/topology/topology_refiner_impl.h
+
internal/opensubdiv.cc
internal/opensubdiv_converter_factory.cc
internal/opensubdiv_converter_internal.cc
internal/opensubdiv_evaluator.cc
internal/opensubdiv_evaluator_internal.cc
- internal/opensubdiv_topology_refiner.cc
- internal/opensubdiv_topology_refiner_internal.cc
internal/opensubdiv_util.cc
internal/opensubdiv_converter_factory.h
@@ -75,7 +79,6 @@ if(WITH_OPENSUBDIV)
internal/opensubdiv_edge_map.h
internal/opensubdiv_evaluator_internal.h
internal/opensubdiv_internal.h
- internal/opensubdiv_topology_refiner_internal.h
internal/opensubdiv_util.h
)
diff --git a/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc b/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc
index 5279752ea4e..ea345654484 100644
--- a/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc
+++ b/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc
@@ -37,8 +37,8 @@
#include "MEM_guardedalloc.h"
-#include "internal/opensubdiv_topology_refiner_internal.h"
#include "internal/opensubdiv_util.h"
+#include "internal/topology/topology_refiner_impl.h"
#include "opensubdiv_topology_refiner_capi.h"
using OpenSubdiv::Far::PatchMap;
@@ -751,7 +751,7 @@ OpenSubdiv_EvaluatorInternal *openSubdiv_createEvaluatorInternal(
OpenSubdiv_TopologyRefiner *topology_refiner)
{
using blender::opensubdiv::vector;
- TopologyRefiner *refiner = topology_refiner->internal->osd_topology_refiner;
+ TopologyRefiner *refiner = topology_refiner->impl->osd_topology_refiner;
if (refiner == NULL) {
// Happens on bad topology.
return NULL;
diff --git a/intern/opensubdiv/internal/opensubdiv_topology_refiner.cc b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc
index 6e2dae4533a..ff58ac68866 100644
--- a/intern/opensubdiv/internal/opensubdiv_topology_refiner.cc
+++ b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc
@@ -18,15 +18,13 @@
#include "opensubdiv_topology_refiner_capi.h"
-#include <vector>
-
#include "MEM_guardedalloc.h"
#include "internal/opensubdiv_converter_factory.h"
#include "internal/opensubdiv_converter_internal.h"
#include "internal/opensubdiv_edge_map.h"
#include "internal/opensubdiv_internal.h"
-#include "internal/opensubdiv_topology_refiner_internal.h"
#include "internal/opensubdiv_util.h"
+#include "internal/topology/topology_refiner_impl.h"
using blender::opensubdiv::vector;
@@ -35,7 +33,7 @@ namespace {
const OpenSubdiv::Far::TopologyRefiner *getOSDTopologyRefiner(
const OpenSubdiv_TopologyRefiner *topology_refiner)
{
- return topology_refiner->internal->osd_topology_refiner;
+ return topology_refiner->impl->osd_topology_refiner;
}
const OpenSubdiv::Far::TopologyLevel *getOSDTopologyBaseLevel(
@@ -46,12 +44,12 @@ const OpenSubdiv::Far::TopologyLevel *getOSDTopologyBaseLevel(
int getSubdivisionLevel(const OpenSubdiv_TopologyRefiner *topology_refiner)
{
- return topology_refiner->internal->settings.level;
+ return topology_refiner->impl->settings.level;
}
bool getIsAdaptive(const OpenSubdiv_TopologyRefiner *topology_refiner)
{
- return topology_refiner->internal->settings.is_adaptive;
+ return topology_refiner->impl->settings.is_adaptive;
}
////////////////////////////////////////////////////////////////////////////////
@@ -232,7 +230,7 @@ void assignFunctionPointers(OpenSubdiv_TopologyRefiner *topology_refiner)
OpenSubdiv_TopologyRefiner *allocateTopologyRefiner()
{
OpenSubdiv_TopologyRefiner *topology_refiner = OBJECT_GUARDED_NEW(OpenSubdiv_TopologyRefiner);
- topology_refiner->internal = OBJECT_GUARDED_NEW(OpenSubdiv_TopologyRefinerInternal);
+ topology_refiner->impl = OBJECT_GUARDED_NEW(OpenSubdiv_TopologyRefinerImpl);
assignFunctionPointers(topology_refiner);
return topology_refiner;
}
@@ -249,16 +247,16 @@ OpenSubdiv_TopologyRefiner *openSubdiv_createTopologyRefinerFromConverter(
return NULL;
}
OpenSubdiv_TopologyRefiner *topology_refiner = allocateTopologyRefiner();
- topology_refiner->internal->osd_topology_refiner = osd_topology_refiner;
+ topology_refiner->impl->osd_topology_refiner = osd_topology_refiner;
// Store setting which we want to keep track of and which can not be stored
// in OpenSubdiv's descriptor yet.
- topology_refiner->internal->settings = *settings;
+ topology_refiner->impl->settings = *settings;
return topology_refiner;
}
void openSubdiv_deleteTopologyRefiner(OpenSubdiv_TopologyRefiner *topology_refiner)
{
- OBJECT_GUARDED_DELETE(topology_refiner->internal, OpenSubdiv_TopologyRefinerInternal);
+ OBJECT_GUARDED_DELETE(topology_refiner->impl, OpenSubdiv_TopologyRefinerImpl);
OBJECT_GUARDED_DELETE(topology_refiner, OpenSubdiv_TopologyRefiner);
}
diff --git a/intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.cc b/intern/opensubdiv/internal/topology/topology_refiner_impl.cc
index f3054a17da2..7d2ae2a6304 100644
--- a/intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.cc
+++ b/intern/opensubdiv/internal/topology/topology_refiner_impl.cc
@@ -16,14 +16,19 @@
//
// Author: Sergey Sharybin
-#include "internal/opensubdiv_topology_refiner_internal.h"
+#include "internal/topology/topology_refiner_impl.h"
-OpenSubdiv_TopologyRefinerInternal::OpenSubdiv_TopologyRefinerInternal()
- : osd_topology_refiner(NULL)
+namespace blender {
+namespace opensubdiv {
+
+TopologyRefinerImpl::TopologyRefinerImpl() : osd_topology_refiner(nullptr)
{
}
-OpenSubdiv_TopologyRefinerInternal::~OpenSubdiv_TopologyRefinerInternal()
+TopologyRefinerImpl::~TopologyRefinerImpl()
{
delete osd_topology_refiner;
}
+
+} // namespace opensubdiv
+} // namespace blender
diff --git a/intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.h b/intern/opensubdiv/internal/topology/topology_refiner_impl.h
index b0f5d4079ef..507f3d0f869 100644
--- a/intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.h
+++ b/intern/opensubdiv/internal/topology/topology_refiner_impl.h
@@ -16,8 +16,8 @@
//
// Author: Sergey Sharybin
-#ifndef OPENSUBDIV_TOPOLOGY_REFINER_INTERNAL_H_
-#define OPENSUBDIV_TOPOLOGY_REFINER_INTERNAL_H_
+#ifndef OPENSUBDIV_TOPOLOGY_REFINER_IMPL_H_
+#define OPENSUBDIV_TOPOLOGY_REFINER_IMPL_H_
#ifdef _MSC_VER
# include <iso646.h>
@@ -27,10 +27,13 @@
#include "opensubdiv_topology_refiner_capi.h"
-struct OpenSubdiv_TopologyRefinerInternal {
+namespace blender {
+namespace opensubdiv {
+
+class TopologyRefinerImpl {
public:
- OpenSubdiv_TopologyRefinerInternal();
- ~OpenSubdiv_TopologyRefinerInternal();
+ TopologyRefinerImpl();
+ ~TopologyRefinerImpl();
OpenSubdiv::Far::TopologyRefiner *osd_topology_refiner;
@@ -44,4 +47,10 @@ struct OpenSubdiv_TopologyRefinerInternal {
OpenSubdiv_TopologyRefinerSettings settings;
};
-#endif // OPENSUBDIV_TOPOLOGY_REFINER_H_
+} // namespace opensubdiv
+} // namespace blender
+
+struct OpenSubdiv_TopologyRefinerImpl : public blender::opensubdiv::TopologyRefinerImpl {
+};
+
+#endif // OPENSUBDIV_TOPOLOGY_REFINER_IMPL_H_
diff --git a/intern/opensubdiv/opensubdiv_topology_refiner_capi.h b/intern/opensubdiv/opensubdiv_topology_refiner_capi.h
index 38d722ab572..fe2f3f3ce2d 100644
--- a/intern/opensubdiv/opensubdiv_topology_refiner_capi.h
+++ b/intern/opensubdiv/opensubdiv_topology_refiner_capi.h
@@ -28,7 +28,7 @@ extern "C" {
#endif
struct OpenSubdiv_Converter;
-struct OpenSubdiv_TopologyRefinerInternal;
+struct OpenSubdiv_TopologyRefinerImpl;
// Those settings don't really belong to OpenSubdiv's topology refiner, but
// we are keeping track of them on our side of topology refiner. This is to
@@ -40,6 +40,10 @@ typedef struct OpenSubdiv_TopologyRefinerSettings {
int level;
} OpenSubdiv_TopologyRefinerSettings;
+// C-style wrapper around actual topology refiner.
+//
+// The only purpose is to allow C-only code to access C++ implementation of the
+// topology refiner.
typedef struct OpenSubdiv_TopologyRefiner {
// Query subdivision level the refiner is created for.
int (*getSubdivisionLevel)(const struct OpenSubdiv_TopologyRefiner *topology_refiner);
@@ -125,11 +129,8 @@ typedef struct OpenSubdiv_TopologyRefiner {
//////////////////////////////////////////////////////////////////////////////
// Internal use.
- // Internal storage for the use in this module only.
- //
- // Tease: Contains actual OpenSubdiv's refiner and (optionally) some other
- // data and state needed for an internbal use.
- struct OpenSubdiv_TopologyRefinerInternal *internal;
+ // Implementation of the topology refiner.
+ struct OpenSubdiv_TopologyRefinerImpl *impl;
} OpenSubdiv_TopologyRefiner;
// NOTE: Will return NULL in cases of bad topology.