aboutsummaryrefslogtreecommitdiff
path: root/PhysX_3.4/Source/LowLevelCloth
diff options
context:
space:
mode:
authorSheikh Dawood Abdul Ajees <[email protected]>2017-04-25 16:02:08 -0500
committerSheikh Dawood Abdul Ajees <[email protected]>2017-04-25 16:02:08 -0500
commitd11708e398c2f6377d9eac2b1f7248c62faab569 (patch)
tree5778e794690c046ab4b0205d8f764960a5af168b /PhysX_3.4/Source/LowLevelCloth
parentPhysX 3.4, APEX 1.4 patch release @21821222 (diff)
downloadphysx-3.4-d11708e398c2f6377d9eac2b1f7248c62faab569.tar.xz
physx-3.4-d11708e398c2f6377d9eac2b1f7248c62faab569.zip
PhysX 3.4, APEX 1.4 patch release @22017166
Diffstat (limited to 'PhysX_3.4/Source/LowLevelCloth')
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h2
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp3
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h11
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp5
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h10
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h10
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp2
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h4
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h11
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h3
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.cpp45
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.h41
-rw-r--r--PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp2
13 files changed, 145 insertions, 4 deletions
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h b/PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h
index 22e58217..ab56c855 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h
+++ b/PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h
@@ -45,9 +45,9 @@ template <typename T>
class ClothImpl : public UserAllocated, public Cloth
{
ClothImpl(const ClothImpl&);
+ ClothImpl& operator=(const ClothImpl&);
public:
- ClothImpl& operator=(const ClothImpl&);
typedef T ClothType;
typedef typename ClothType::FactoryType FactoryType;
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp b/PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp
index 753f2b9c..a614c280 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp
+++ b/PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp
@@ -301,5 +301,8 @@ void ClothImpl<SwCloth>::setVirtualParticles(Range<const uint32_t[4]> indices, R
mCloth.notifyChanged();
}
+//explicit template instantiation
+template class ClothImpl<SwCloth>;
+
} // namespace cloth
} // namespace physx
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h b/PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h
index e8f2392e..9b474dbe 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h
+++ b/PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h
@@ -134,5 +134,16 @@ class SwCollision
static const Simd4f sSkeletonWidth;
};
+
+#if PX_SUPPORT_EXTERN_TEMPLATE
+//explicit template instantiation declaration
+#if NV_SIMD_SIMD
+extern template class SwCollision<Simd4f>;
+#endif
+#if NV_SIMD_SCALAR
+extern template class SwCollision<Scalar4f>;
+#endif
+#endif
+
}
}
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp b/PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp
index fa0b5864..3a97aa74 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp
+++ b/PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp
@@ -62,6 +62,11 @@ cloth::Fabric* cloth::SwFactory::createFabric(uint32_t numParticles, Range<const
getNextFabricId());
}
+#if PX_SUPPORT_EXTERN_TEMPLATE
+//explicit template instantiation declaration
+extern template class cloth::ClothImpl<cloth::SwCloth>;
+#endif
+
cloth::Cloth* cloth::SwFactory::createCloth(Range<const PxVec4> particles, Fabric& fabric)
{
return new SwClothImpl(*this, fabric, particles);
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h b/PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h
index b4ae8824..baf631de 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h
+++ b/PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h
@@ -139,6 +139,16 @@ class SwInterCollision
mutable uint32_t mNumCollisions;
};
+#if PX_SUPPORT_EXTERN_TEMPLATE
+//explicit template instantiation declaration
+#if NV_SIMD_SIMD
+extern template class SwInterCollision<Simd4f>;
+#endif
+#if NV_SIMD_SCALAR
+extern template class SwInterCollision<Scalar4f>;
+#endif
+#endif
+
} // namespace cloth
} // namespace physx
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h b/PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h
index c50ea8b5..b13ba4d9 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h
+++ b/PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h
@@ -78,6 +78,16 @@ class SwSelfCollision
mutable uint32_t mNumCollisions;
};
+#if PX_SUPPORT_EXTERN_TEMPLATE
+//explicit template instantiation declaration
+#if NV_SIMD_SIMD
+extern template class SwSelfCollision<Simd4f>;
+#endif
+#if NV_SIMD_SCALAR
+extern template class SwSelfCollision<Scalar4f>;
+#endif
+#endif
+
} // namespace cloth
} // namespace physx
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp b/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp
index 6a00ae84..c1cfadc3 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp
+++ b/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp
@@ -224,7 +224,7 @@ const char* cloth::SwSolver::EndSimulationTask::getName() const
}
cloth::SwSolver::CpuClothSimulationTask::CpuClothSimulationTask(SwCloth& cloth, EndSimulationTask& continuation)
-: mCloth(&cloth), mContinuation(&continuation), mScratchMemorySize(0), mScratchMemory(0), mInvNumIterations(0.0f)
+: Cm::Task(0), mCloth(&cloth), mContinuation(&continuation), mScratchMemorySize(0), mScratchMemory(0), mInvNumIterations(0.0f)
{
}
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h b/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h
index 3a91535f..a2c5b580 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h
+++ b/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h
@@ -51,6 +51,8 @@ class SwSolver : public UserAllocated, public Solver
using physx::PxLightCpuTask::mRefCount;
using physx::PxLightCpuTask::mTm;
+ StartSimulationTask() : Cm::Task(0) {}
+
virtual void runInternal();
virtual const char* getName() const;
SwSolver* mSolver;
@@ -60,6 +62,8 @@ class SwSolver : public UserAllocated, public Solver
{
using physx::PxLightCpuTask::mRefCount;
+ EndSimulationTask() : Cm::Task(0) {}
+
virtual void runInternal();
virtual const char* getName() const;
SwSolver* mSolver;
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h b/PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h
index 2e6abafb..38e87923 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h
+++ b/PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h
@@ -80,5 +80,16 @@ class SwSolverKernel
template <typename AccelerationIterator>
void integrateParticles(AccelerationIterator& accelIt, const Simd4f&);
};
+
+#if PX_SUPPORT_EXTERN_TEMPLATE
+//explicit template instantiation declaration
+#if NV_SIMD_SIMD
+extern template class SwSolverKernel<Simd4f>;
+#endif
+#if NV_SIMD_SCALAR
+extern template class SwSolverKernel<Scalar4f>;
+#endif
+#endif
+
}
}
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h
index 28ebc36a..dd14dceb 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h
+++ b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h
@@ -74,8 +74,9 @@ struct CuConstraints
class CuCloth : protected CuContextLock
{
- public:
CuCloth& operator=(const CuCloth&);
+
+public:
typedef CuFactory FactoryType;
typedef CuFabric FabricType;
typedef CuContextLock ContextLockType;
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.cpp b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.cpp
new file mode 100644
index 00000000..b1a59de6
--- /dev/null
+++ b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.cpp
@@ -0,0 +1,45 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
+// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
+// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
+
+#include "PxgBroadPhase.h"
+
+namespace physx
+{
+
+ extern "C" void initClothKernels0();
+
+ void createPxgCloth()
+ {
+#if !PX_PHYSX_GPU_EXPORTS
+ //this call is needed to force PhysXClothGpu linkage as Static Library!
+ initClothKernels0();
+#endif
+ }
+
+}
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.h b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.h
new file mode 100644
index 00000000..6064b355
--- /dev/null
+++ b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.h
@@ -0,0 +1,41 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
+// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
+// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
+
+#ifndef PXG_CLOTH_CREATE_H
+#define PXG_CLOTH_CREATE_H
+
+
+namespace physx
+{
+
+ //this is needed to force PhysXClothGpu linkage as Static Library!
+ void createPxgCloth();
+}
+
+#endif
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp
index a20e9e0d..c65e3c61 100644
--- a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp
+++ b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp
@@ -541,7 +541,7 @@ void cloth::CuSolver::interCollision()
}
cloth::CuSolver::ClothSolverTask::ClothSolverTask(FunctionPtr functionPtr, const char* name)
-: mSolver(0), mFunctionPtr(functionPtr), mName(name)
+: Cm::Task(0), mSolver(0), mFunctionPtr(functionPtr), mName(name)
{
}