better host check code, to determine failing OpenCL kernels on certain (Apple) platforms

This commit is contained in:
erwin coumans
2013-12-13 13:27:00 -08:00
parent 571b14787a
commit d24b1eaae9

View File

@@ -2915,7 +2915,7 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
hostCollidables[collidableIndexB].m_shapeType == SHAPE_CONVEX_HULL)
{
//printf("hostPairs[i].z=%d\n",hostPairs[i].z);
int contactIndex = 0;//computeContactConvexConvex2(i,bodyIndexA,bodyIndexB,collidableIndexA,collidableIndexB,hostBodyBuf, hostCollidables,hostConvexData,hostVertices,hostUniqueEdges,hostIndices,hostFaces,hostContacts,nContacts,maxContactCapacity,oldHostContacts);
int contactIndex = computeContactConvexConvex2(i,bodyIndexA,bodyIndexB,collidableIndexA,collidableIndexB,hostBodyBuf, hostCollidables,hostConvexData,hostVertices,hostUniqueEdges,hostIndices,hostFaces,hostContacts,nContacts,maxContactCapacity,oldHostContacts);
//int contactIndex = computeContactConvexConvex(hostPairs,i,bodyIndexA,bodyIndexB,collidableIndexA,collidableIndexB,hostBodyBuf,hostCollidables,hostConvexData,hostVertices,hostUniqueEdges,hostIndices,hostFaces,hostContacts,nContacts,maxContactCapacity,oldHostContacts);
@@ -3018,7 +3018,7 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
clFinish(m_queue);
if (findSeparatingAxisOnGpu)
{
#ifndef CHECK_ON_HOST
{
B3_PROFILE("findSeparatingAxisKernel");
b3BufferInfoCL bInfo[] = {
@@ -3043,11 +3043,12 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
launcher.launch1D( num);
clFinish(m_queue);
}
#endif
numCompoundPairs = m_numCompoundPairsOut.at(0);
bool useGpuFindCompoundPairs=true;
#ifndef CHECK_ON_HOST
if (useGpuFindCompoundPairs)
{
B3_PROFILE("findCompoundPairsKernel");
@@ -3165,14 +3166,13 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
printf("numCompoundPairsOut=%d\n",numCompoundPairsOut);
}
}
if (numCompoundPairs > compoundPairCapacity)
{
b3Error("Exceeded compound pair capacity (%d/%d)\n", numCompoundPairs, compoundPairCapacity);
numCompoundPairs = compoundPairCapacity;
}
#endif //CHECK_ON_HOST
@@ -3222,7 +3222,7 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
if (numCompoundPairs)
{
#ifndef CHECK_ON_HOST
B3_PROFILE("processCompoundPairsKernel");
b3BufferInfoCL bInfo[] =
{
@@ -3247,7 +3247,7 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
int num = numCompoundPairs;
launcher.launch1D( num);
clFinish(m_queue);
#endif
}
@@ -3724,13 +3724,11 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
contactOut->copyToHost(cpuContacts);
}
// printf("nContacts after = %d\n", nContacts);
}
}//numConcavePairs
//convex-convex contact clipping
if (1)
{
B3_PROFILE("clipHullHullKernel");
bool breakupKernel = false;
@@ -3738,6 +3736,8 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
breakupKernel = true;
#endif
#ifndef CHECK_ON_HOST
if (breakupKernel)
{
@@ -3884,6 +3884,10 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
}
contactOut->resize(nContacts);
}
}
#endif //#endif //CHECK_ON_HOST
#ifndef CHECK_ON_HOST
int nCompoundsPairs = m_gpuCompoundPairs.size();
@@ -3921,9 +3925,8 @@ void GpuSatCollision::computeConvexConvexContactsGPUSAT( b3OpenCLArray<b3Int4>*
nContacts = maxContactCapacity;
}
contactOut->resize(nContacts);
}
}
}
}//if nCompoundsPairs
#endif //CHECK_ON_HOST
}
}//contactClippingOnGpu
}