PC Specifications:
OS: Windows 8.1 Pro x64 with latest updates.
CPU: AMD Phenom II x6 1055T Thuban.
GPU: Nvidia GTX 970 with driver version 344.65 (Latest)/
Related PC Software:
AMD: AMD OpenCL SDK 2.9.1(Latest) AKA. "AMD App SDK".
Nvidia: Nvidia Cuda SDK 6.5(Latest) with support for my GPU.
The crash is consistent and is the same for every run when targeting the CPU. The crash is consistant and is the same for every run when targeting the GPU.
CPU Crash: GPU Crash: The crash in CPU, and the assert in GPU, occur inside the very first simulation step
Code: Select all
pWorld->stepSimulation();
Here is my initialization code, and all of it does indeed succeed.
Code: Select all
int ErrorCode = 0;
m_pOpenCLContext = b3OpenCLUtils::createContextFromType( CL_DEVICE_TYPE_CPU, &ErrorCode );
if( !m_pOpenCLContext || ( ErrorCode != 0 ) )
{
Shutdown();
CryFatalError( "Failed To Create An OpenCL Context. OpenCL Reported Error Code %i", ErrorCode );
}
m_pOpenCLDeviceID = b3OpenCLUtils::getDevice( m_pOpenCLContext, 0 );
if( !m_pOpenCLDeviceID )
{
Shutdown();
CryFatalError( "Failed To Get An OpenCL Device." );
}
b3OpenCLUtils::getDeviceInfo( m_pOpenCLDeviceID, m_pOpenCLDeviceInfo );
m_pOpenCLCommandQueue = clCreateCommandQueue( m_pOpenCLContext, m_pOpenCLDeviceID, m_pOpenCLDeviceInfo->m_queueProperties, &ErrorCode );
if( !m_pOpenCLCommandQueue || ( ErrorCode != 0 ) )
{
Shutdown();
CryFatalError( "Failed To Create The OpenCL Command Queue. OpenCL Reported Error Code %i", ErrorCode );
}
m_pNarrowPhase = new b3GpuNarrowPhase( m_pOpenCLContext, m_pOpenCLDeviceID, m_pOpenCLCommandQueue, *m_pConfig );
m_pBroadPhase = new b3GpuSapBroadphase( m_pOpenCLContext, m_pOpenCLDeviceID, m_pOpenCLCommandQueue );
m_pBVHBroadPhase = new b3DynamicBvhBroadphase( m_pConfig->m_maxConvexBodies );
m_pWorld = new b3GpuRigidBodyPipeline( m_pOpenCLContext, m_pOpenCLDeviceID, m_pOpenCLCommandQueue, m_pNarrowPhase, m_pBroadPhase, m_pBVHBroadPhase, *m_pConfig );
m_pWorld->setGravity( b3MakeVector3( 0, 0, -9.8f ) );
m_pBVHBroadPhase->m_paircache->setOverlapFilterCallback( m_pOverlapFilterCallback );