@@ -142,8 +142,9 @@ int getNumContacts(b3Contact4* contact) | |||
} | |||
b3PgsJacobiSolver::b3PgsJacobiSolver(bool usePgs) | |||
:m_btSeed2(0),m_usePgs(usePgs), | |||
m_numSplitImpulseRecoveries(0) | |||
: m_usePgs(usePgs), | |||
m_numSplitImpulseRecoveries(0), | |||
m_btSeed2(0) | |||
{ | |||
} | |||
@@ -1811,4 +1812,4 @@ b3Scalar b3PgsJacobiSolver::solveGroupCacheFriendlyFinish(b3RigidBodyData* bodie | |||
void b3PgsJacobiSolver::reset() | |||
{ | |||
m_btSeed2 = 0; | |||
} | |||
} |
@@ -254,9 +254,9 @@ struct b3SolveTask// : public ThreadPool::Task | |||
int maxNumBatches, | |||
b3AlignedObjectArray<int>* wgUsedBodies, int curWgidx | |||
) | |||
: m_bodies( bodies ), m_shapes( shapes ), m_constraints( constraints ), m_start( start ), m_nConstraints( nConstraints ), | |||
m_solveFriction( true ),m_maxNumBatches(maxNumBatches), | |||
m_wgUsedBodies(wgUsedBodies),m_curWgidx(curWgidx) | |||
: m_bodies( bodies ), m_shapes( shapes ), m_constraints( constraints ), | |||
m_wgUsedBodies(wgUsedBodies), m_curWgidx(curWgidx), m_start( start ), | |||
m_nConstraints( nConstraints ), m_solveFriction( true ), m_maxNumBatches(maxNumBatches) | |||
{} | |||
unsigned short int getType(){ return 0; } | |||
@@ -38,8 +38,8 @@ m_largeAabbsMappingGPU(ctx,q), | |||
m_gpuPairs(ctx,q), | |||
m_hashGpu(ctx,q), | |||
m_paramsGPU(ctx,q), | |||
m_cellStartGpu(ctx,q) | |||
m_cellStartGpu(ctx,q), | |||
m_paramsGPU(ctx,q) | |||
{ | |||
@@ -279,7 +279,7 @@ void b3GpuGridBroadphase::calculateOverlappingPairs(int maxPairs) | |||
int sz = m_gpuPairs.size(); | |||
printf("m_gpuPairs.size()=%d\n",sz); | |||
for (int i=0;i<m_gpuPairs.size();i++) | |||
for (unsigned int i=0;i<m_gpuPairs.size();i++) | |||
{ | |||
printf("pair %d = %d,%d\n",i,pairsCpu[i].x,pairsCpu[i].y); | |||
} | |||
@@ -19,17 +19,6 @@ b3GpuSapBroadphase::b3GpuSapBroadphase(cl_context ctx,cl_device_id device, cl_co | |||
:m_context(ctx), | |||
m_device(device), | |||
m_queue(q), | |||
m_allAabbsGPU(ctx,q), | |||
m_smallAabbsMappingGPU(ctx,q), | |||
m_largeAabbsMappingGPU(ctx,q), | |||
m_pairCount(ctx,q), | |||
m_overlappingPairs(ctx,q), | |||
m_gpuSmallSortData(ctx,q), | |||
m_gpuSmallSortedAabbs(ctx,q), | |||
m_sum(ctx,q), | |||
m_sum2(ctx,q), | |||
m_dst(ctx,q), | |||
m_currentBuffer(-1), | |||
m_objectMinMaxIndexGPUaxis0(ctx,q), | |||
m_objectMinMaxIndexGPUaxis1(ctx,q), | |||
m_objectMinMaxIndexGPUaxis2(ctx,q), | |||
@@ -45,7 +34,18 @@ m_sortedAxisGPU2prev(ctx,q), | |||
m_addedHostPairsGPU(ctx,q), | |||
m_removedHostPairsGPU(ctx,q), | |||
m_addedCountGPU(ctx,q), | |||
m_removedCountGPU(ctx,q) | |||
m_removedCountGPU(ctx,q), | |||
m_currentBuffer(-1), | |||
m_pairCount(ctx,q), | |||
m_allAabbsGPU(ctx,q), | |||
m_sum(ctx,q), | |||
m_sum2(ctx,q), | |||
m_dst(ctx,q), | |||
m_smallAabbsMappingGPU(ctx,q), | |||
m_largeAabbsMappingGPU(ctx,q), | |||
m_overlappingPairs(ctx,q), | |||
m_gpuSmallSortData(ctx,q), | |||
m_gpuSmallSortedAabbs(ctx,q) | |||
{ | |||
const char* sapSrc = sapCL; | |||
@@ -565,7 +565,7 @@ void b3GpuSapBroadphase::calculateOverlappingPairsHostIncremental3Sap() | |||
if (dmin!=0) | |||
{ | |||
int stepMin = dmin<0 ? -1 : 1; | |||
for (int j=prevMinIndex;j!=curMinIndex;j+=stepMin) | |||
for (unsigned int j=prevMinIndex;j!=curMinIndex;j+=stepMin) | |||
{ | |||
int otherIndex2 = m_sortedAxisCPU[axis][otherbuffer][j].y; | |||
int otherIndex = otherIndex2/2; | |||
@@ -648,7 +648,7 @@ void b3GpuSapBroadphase::calculateOverlappingPairsHostIncremental3Sap() | |||
if (dmax!=0) | |||
{ | |||
int stepMax = dmax<0 ? -1 : 1; | |||
for (int j=prevMaxIndex;j!=curMaxIndex;j+=stepMax) | |||
for (unsigned int j=prevMaxIndex;j!=curMaxIndex;j+=stepMax) | |||
{ | |||
int otherIndex2 = m_sortedAxisCPU[axis][otherbuffer][j].y; | |||
int otherIndex = otherIndex2/2; | |||
@@ -1024,7 +1024,7 @@ void b3GpuSapBroadphase::calculateOverlappingPairs(int maxPairs) | |||
bool syncOnHost = false; | |||
int numSmallAabbs = m_smallAabbsMappingCPU.size(); | |||
unsigned int numSmallAabbs = m_smallAabbsMappingCPU.size(); | |||
if (m_prefixScanFloat4 && numSmallAabbs) | |||
{ | |||
B3_PROFILE("GPU compute best variance axis"); | |||
@@ -168,11 +168,10 @@ cl_platform_id b3OpenCLUtils_getPlatform(int platformIndex0, cl_int* pErrNum) | |||
#endif | |||
cl_platform_id platform = 0; | |||
unsigned int platformIndex = (unsigned int )platformIndex0; | |||
cl_uint numPlatforms; | |||
cl_int ciErrNum = clGetPlatformIDs(0, NULL, &numPlatforms); | |||
if (platformIndex>=0 && platformIndex<numPlatforms) | |||
if (platformIndex0>=0 && (cl_uint)platformIndex0<numPlatforms) | |||
{ | |||
cl_platform_id* platforms = (cl_platform_id*) malloc (sizeof(cl_platform_id)*numPlatforms); | |||
ciErrNum = clGetPlatformIDs(numPlatforms, platforms, NULL); | |||
@@ -183,7 +182,7 @@ cl_platform_id b3OpenCLUtils_getPlatform(int platformIndex0, cl_int* pErrNum) | |||
return platform; | |||
} | |||
platform = platforms[platformIndex]; | |||
platform = platforms[platformIndex0]; | |||
free (platforms); | |||
} | |||
@@ -310,7 +309,6 @@ cl_context b3OpenCLUtils_createContextFromType(cl_device_type deviceType, cl_int | |||
cl_uint numPlatforms; | |||
cl_context retContext = 0; | |||
unsigned int i; | |||
cl_int ciErrNum = clGetPlatformIDs(0, NULL, &numPlatforms); | |||
if(ciErrNum != CL_SUCCESS) | |||
@@ -332,7 +330,7 @@ cl_context b3OpenCLUtils_createContextFromType(cl_device_type deviceType, cl_int | |||
for ( i = 0; i < numPlatforms; ++i) | |||
for (int i = 0; (cl_uint)i < numPlatforms; ++i) | |||
{ | |||
char pbuf[128]; | |||
ciErrNum = clGetPlatformInfo( platforms[i], | |||
@@ -346,7 +344,7 @@ cl_context b3OpenCLUtils_createContextFromType(cl_device_type deviceType, cl_int | |||
return NULL; | |||
} | |||
if (preferredPlatformIndex>=0 && i==preferredPlatformIndex) | |||
if (i==preferredPlatformIndex) | |||
{ | |||
cl_platform_id tmpPlatform = platforms[0]; | |||
platforms[0] = platforms[i]; | |||
@@ -363,7 +361,7 @@ cl_context b3OpenCLUtils_createContextFromType(cl_device_type deviceType, cl_int | |||
} | |||
} | |||
for (i = 0; i < numPlatforms; ++i) | |||
for (int i = 0; (cl_uint)i < numPlatforms; ++i) | |||
{ | |||
cl_platform_id platform = platforms[i]; | |||
assert(platform); | |||
@@ -583,7 +581,7 @@ static const char* strip2(const char* name, const char* pattern) | |||
const char * oriptr; | |||
const char * patloc; | |||
// find how many times the pattern occurs in the original string | |||
for (oriptr = name; patloc = strstr(oriptr, pattern); oriptr = patloc + patlen) | |||
for (oriptr = name; (patloc = strstr(oriptr, pattern)); oriptr = patloc + patlen) | |||
{ | |||
patcnt++; | |||
} | |||
@@ -108,8 +108,10 @@ m_queue(q), | |||
m_findSeparatingAxisKernel(0), | |||
m_findSeparatingAxisVertexFaceKernel(0), | |||
m_findSeparatingAxisEdgeEdgeKernel(0), | |||
m_unitSphereDirections(m_context,m_queue), | |||
m_totalContactsOut(m_context, m_queue), | |||
m_sepNormals(m_context, m_queue), | |||
m_dmins(m_context,m_queue), | |||
m_hasSeparatingNormals(m_context, m_queue), | |||
m_concaveSepNormals(m_context, m_queue), | |||
m_concaveHasSeparatingNormals(m_context,m_queue), | |||
@@ -117,9 +119,7 @@ m_numConcavePairsOut(m_context, m_queue), | |||
m_gpuCompoundPairs(m_context, m_queue), | |||
m_gpuCompoundSepNormals(m_context, m_queue), | |||
m_gpuHasCompoundSepNormals(m_context, m_queue), | |||
m_numCompoundPairsOut(m_context, m_queue), | |||
m_dmins(m_context,m_queue), | |||
m_unitSphereDirections(m_context,m_queue) | |||
m_numCompoundPairsOut(m_context, m_queue) | |||
{ | |||
m_totalContactsOut.push_back(0); | |||
@@ -404,7 +404,7 @@ inline bool IsPointInPolygon(const float4& p, | |||
float4 v0 = baseVertex[convexIndices[face->m_indexOffset + face->m_numIndices-1]]; | |||
b = v0; | |||
for(unsigned i=0; i != face->m_numIndices; ++i) | |||
for(int i=0; i != face->m_numIndices; ++i) | |||
{ | |||
a = b; | |||
float4 vi = baseVertex[convexIndices[face->m_indexOffset + i]]; | |||
@@ -38,7 +38,7 @@ template<class T> | |||
T b3NextPowerOf2(T n) | |||
{ | |||
n -= 1; | |||
for(int i=0; i<sizeof(T)*8; i++) | |||
for(unsigned int i=0; i<sizeof(T)*8; i++) | |||
n = n | (n>>i); | |||
return n+1; | |||
} | |||
@@ -123,4 +123,4 @@ void b3PrefixScanCL::executeHost(b3AlignedObjectArray<unsigned int>& src, b3Alig | |||
{ | |||
*sum = dst[n-1]; | |||
} | |||
} | |||
} |
@@ -38,7 +38,7 @@ template<class T> | |||
T b3NextPowerOf2(T n) | |||
{ | |||
n -= 1; | |||
for(int i=0; i<sizeof(T)*8; i++) | |||
for(unsigned int i=0; i<sizeof(T)*8; i++) | |||
n = n | (n>>i); | |||
return n+1; | |||
} | |||
@@ -123,4 +123,4 @@ void b3PrefixScanFloat4CL::executeHost(b3AlignedObjectArray<b3Vector3>& src, b3A | |||
{ | |||
*sum = dst[n-1]; | |||
} | |||
} | |||
} |
@@ -311,7 +311,7 @@ void b3GpuRaycast::castRays(const b3AlignedObjectArray<b3RayInfo>& rays, b3Align | |||
int numRayRigidPairs = -1; | |||
m_data->m_gpuNumRayRigidPairs->copyToHostPointer(&numRayRigidPairs, 1); | |||
if( numRayRigidPairs > m_data->m_gpuRayRigidPairs->size() ) | |||
if( numRayRigidPairs > (int)m_data->m_gpuRayRigidPairs->size() ) | |||
{ | |||
numRayRigidPairs = m_data->m_gpuRayRigidPairs->size(); | |||
m_data->m_gpuNumRayRigidPairs->copyFromHostPointer(&numRayRigidPairs, 1); | |||
@@ -388,4 +388,4 @@ void b3GpuRaycast::castRays(const b3AlignedObjectArray<b3RayInfo>& rays, b3Align | |||
m_data->m_gpuHitResults->copyToHost(hitResults); | |||
} | |||
} | |||
} |
@@ -562,7 +562,7 @@ void b3GpuJacobiContactSolver::solveGroupHost(b3RigidBodyData* bodies,b3InertiaD | |||
b3AlignedObjectArray<b3Vector3> deltaAngularVelocities; | |||
deltaLinearVelocities.resize(totalNumSplitBodies); | |||
deltaAngularVelocities.resize(totalNumSplitBodies); | |||
for (int i=0;i<totalNumSplitBodies;i++) | |||
for (unsigned int i=0;i<totalNumSplitBodies;i++) | |||
{ | |||
deltaLinearVelocities[i].setZero(); | |||
deltaAngularVelocities[i].setZero(); | |||
@@ -87,11 +87,11 @@ public: | |||
b3Solver::b3Solver(cl_context ctx, cl_device_id device, cl_command_queue queue, int pairCapacity) | |||
:m_nIterations(4), | |||
m_context(ctx), | |||
:m_context(ctx), | |||
m_device(device), | |||
m_queue(queue), | |||
m_batchSizes(ctx,queue) | |||
m_batchSizes(ctx,queue), | |||
m_nIterations(4) | |||
{ | |||
m_sort32 = new b3RadixSort32CL(ctx,device,queue); | |||
m_scan = new b3PrefixScanCL(ctx,device,queue,B3_SOLVER_N_CELLS); | |||
@@ -362,11 +362,15 @@ struct SolveTask// : public ThreadPool::Task | |||
{ | |||
SolveTask(b3AlignedObjectArray<b3RigidBodyData>& bodies, b3AlignedObjectArray<b3InertiaData>& shapes, b3AlignedObjectArray<b3GpuConstraint4>& constraints, | |||
int start, int nConstraints,int maxNumBatches,b3AlignedObjectArray<int>* wgUsedBodies, int curWgidx, b3AlignedObjectArray<int>* batchSizes, int cellIndex) | |||
: m_bodies( bodies ), m_shapes( shapes ), m_constraints( constraints ), m_start( start ), m_nConstraints( nConstraints ), | |||
m_solveFriction( true ),m_maxNumBatches(maxNumBatches), | |||
m_curWgidx(curWgidx), | |||
: m_bodies( bodies ), m_shapes( shapes ), | |||
m_constraints( constraints ), | |||
m_batchSizes(batchSizes), | |||
m_cellIndex(cellIndex) | |||
m_cellIndex(cellIndex), | |||
m_curWgidx(curWgidx), | |||
m_start( start ), | |||
m_nConstraints( nConstraints ), | |||
m_solveFriction( true ), | |||
m_maxNumBatches(maxNumBatches) | |||
{} | |||
unsigned short int getType(){ return 0; } | |||
@@ -151,8 +151,8 @@ static btScalar EdgeSeparation(const btBox2dShape* poly1, const btTransform& xf1 | |||
int index = 0; | |||
btScalar minDot = BT_LARGE_FLOAT; | |||
if( count2 > 0 ) | |||
index = (int) normal1.minDot( vertices2, count2, minDot); | |||
if( count2 > 0 ) | |||
index = (int) normal1.minDot( vertices2, count2, minDot); | |||
btVector3 v1 = b2Mul(xf1, vertices1[edge1]); | |||
btVector3 v2 = b2Mul(xf2, vertices2[index]); | |||
@@ -174,9 +174,9 @@ static btScalar FindMaxSeparation(int* edgeIndex, | |||
// Find edge normal on poly1 that has the largest projection onto d. | |||
int edge = 0; | |||
btScalar maxDot; | |||
if( count1 > 0 ) | |||
edge = (int) dLocal1.maxDot( normals1, count1, maxDot); | |||
btScalar maxDot; | |||
if( count1 > 0 ) | |||
edge = (int) dLocal1.maxDot( normals1, count1, maxDot); | |||
// Get the separation for the edge normal. | |||
btScalar s = EdgeSeparation(poly1, xf1, edge, poly2, xf2); | |||
@@ -232,8 +232,8 @@ void btCompoundCollisionAlgorithm::processCollision (const btCollisionObjectWrap | |||
m_compoundShapeRevision = compoundShape->getUpdateRevision(); | |||
} | |||
if (m_childCollisionAlgorithms.size()==0) | |||
return; | |||
if (m_childCollisionAlgorithms.size()==0) | |||
return; | |||
const btDbvt* tree = compoundShape->getDynamicAabbTree(); | |||
//use a dynamic aabb tree to cull potential child-overlaps | |||
@@ -29,8 +29,8 @@ subject to the following restrictions: | |||
btConvexConcaveCollisionAlgorithm::btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,bool isSwapped) | |||
: btActivatingCollisionAlgorithm(ci,body0Wrap,body1Wrap), | |||
m_isSwapped(isSwapped), | |||
m_btConvexTriangleCallback(ci.m_dispatcher1,body0Wrap,body1Wrap,isSwapped) | |||
m_btConvexTriangleCallback(ci.m_dispatcher1, body0Wrap, body1Wrap, isSwapped), | |||
m_isSwapped(isSwapped) | |||
{ | |||
} | |||
@@ -22,7 +22,7 @@ public: | |||
vec3(const btVector3& btv) { *this = btv; } | |||
idScalar& operator()(int i) { return (*this)[i]; } | |||
const idScalar& operator()(int i) const { return (*this)[i]; } | |||
const int size() const { return 3; } | |||
int size() const { return 3; } | |||
const vec3& operator=(const btVector3& rhs) { | |||
*static_cast<btVector3*>(this) = rhs; | |||
return *this; | |||
@@ -113,7 +113,7 @@ inline vecx operator/(const vecx& a, const idScalar& s) { | |||
class mat3x : public matxx { | |||
public: | |||
mat3x(){} | |||
mat3x(const mat3x&rhs) { | |||
mat3x(const mat3x&rhs): matxx() { | |||
matxx::resize(rhs.rows(), rhs.cols()); | |||
*this = rhs; | |||
} | |||
@@ -6,9 +6,7 @@ noinst_LIBRARIES = liblol-bullet.a | |||
# Only remove flags that were actually set, because we don't know | |||
# what the compiler actually accepts. | |||
disable_cflags = $(filter $(AM_CPPFLAGS:-W%=-Wno-%), \ | |||
-Wno-shadow -Wno-unused -Wno-cast-qual -Wno-strict-aliasing \ | |||
-Wno-reorder -Wno-maybe-uninitialized -Wno-narrowing \ | |||
-Wno-parentheses) | |||
-Wno-shadow -Wno-unused -Wno-cast-qual -Wno-strict-aliasing) | |||
liblol_bullet_a_SOURCES = $(bullet_sources) | |||
liblol_bullet_a_CPPFLAGS = -DB3_USE_CLEW $(AM_CPPFLAGS) -I$(srcdir) $(disable_cflags) | |||