diff --git a/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h index 8b7a59a22..db98e28fa 100644 --- a/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +++ b/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h @@ -170,7 +170,7 @@ ATTRIBUTE_ALIGNED16(struct) btBroadphasePair m_pProxy0(0), m_pProxy1(0), m_algorithm(0), - m_userInfo(0) + m_internalInfo1(0) { } @@ -180,7 +180,7 @@ BT_DECLARE_ALIGNED_ALLOCATOR(); : m_pProxy0(other.m_pProxy0), m_pProxy1(other.m_pProxy1), m_algorithm(other.m_algorithm), - m_userInfo(other.m_userInfo) + m_internalInfo1(other.m_internalInfo1) { } btBroadphasePair(btBroadphaseProxy& proxy0,btBroadphaseProxy& proxy1) @@ -199,7 +199,7 @@ BT_DECLARE_ALIGNED_ALLOCATOR(); } m_algorithm = 0; - m_userInfo = 0; + m_internalInfo1 = 0; } @@ -207,7 +207,7 @@ BT_DECLARE_ALIGNED_ALLOCATOR(); btBroadphaseProxy* m_pProxy1; mutable btCollisionAlgorithm* m_algorithm; - mutable void* m_userInfo; + mutable union { void* m_internalInfo1; int m_internalTmpValue;};//don't use this data, it will be removed in future version. }; diff --git a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp index db25ef2af..b3416f630 100644 --- a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp +++ b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp @@ -256,7 +256,7 @@ btBroadphasePair* btHashedOverlappingPairCache::internalAddPair(btBroadphaseProx // pair->m_pProxy0 = proxy0; // pair->m_pProxy1 = proxy1; pair->m_algorithm = 0; - pair->m_userInfo = 0; + pair->m_internalTmpValue = 0; m_next[count] = m_hashTable[hash]; @@ -287,7 +287,7 @@ void* btHashedOverlappingPairCache::removeOverlappingPair(btBroadphaseProxy* pro cleanOverlappingPair(*pair,dispatcher); - void* userData = pair->m_userInfo; + void* userData = pair->m_internalInfo1; btAssert(pair->m_pProxy0->getUid() == proxyId1); btAssert(pair->m_pProxy1->getUid() == proxyId2); @@ -405,7 +405,7 @@ void* btSortedOverlappingPairCache::removeOverlappingPair(btBroadphaseProxy* pro { gOverlappingPairs--; btBroadphasePair& pair = m_overlappingPairArray[findIndex]; - void* userData = pair.m_userInfo; + void* userData = pair.m_internalInfo1; cleanOverlappingPair(pair,dispatcher); if (m_ghostPairCallback) m_ghostPairCallback->removeOverlappingPair(proxy0, proxy1,dispatcher); diff --git a/src/BulletMultiThreaded/PosixThreadSupport.cpp b/src/BulletMultiThreaded/PosixThreadSupport.cpp index ffde13d89..ff45ab7e9 100644 --- a/src/BulletMultiThreaded/PosixThreadSupport.cpp +++ b/src/BulletMultiThreaded/PosixThreadSupport.cpp @@ -120,7 +120,7 @@ static void *threadFunction(void *argument) } ///send messages to SPUs -void PosixThreadSupport::sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t taskId) +void PosixThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) { /// gMidphaseSPU.sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (uint32_t) &taskDesc); diff --git a/src/BulletMultiThreaded/PosixThreadSupport.h b/src/BulletMultiThreaded/PosixThreadSupport.h index 329eca059..c7349baa9 100644 --- a/src/BulletMultiThreaded/PosixThreadSupport.h +++ b/src/BulletMultiThreaded/PosixThreadSupport.h @@ -100,7 +100,7 @@ public: ///send messages to SPUs - virtual void sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1); + virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); ///check for messages from SPUs virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); diff --git a/src/BulletMultiThreaded/SequentialThreadSupport.cpp b/src/BulletMultiThreaded/SequentialThreadSupport.cpp index 986a75101..a1a473aeb 100644 --- a/src/BulletMultiThreaded/SequentialThreadSupport.cpp +++ b/src/BulletMultiThreaded/SequentialThreadSupport.cpp @@ -33,7 +33,7 @@ SequentialThreadSupport::~SequentialThreadSupport() #include ///send messages to SPUs -void SequentialThreadSupport::sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t taskId) +void SequentialThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) { switch (uiCommand) { diff --git a/src/BulletMultiThreaded/SequentialThreadSupport.h b/src/BulletMultiThreaded/SequentialThreadSupport.h index 8930cfe01..67f7f2e6b 100644 --- a/src/BulletMultiThreaded/SequentialThreadSupport.h +++ b/src/BulletMultiThreaded/SequentialThreadSupport.h @@ -71,7 +71,7 @@ public: virtual ~SequentialThreadSupport(); void startThreads(SequentialThreadConstructionInfo& threadInfo); ///send messages to SPUs - virtual void sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1); + virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); ///check for messages from SPUs virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); ///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) diff --git a/src/BulletMultiThreaded/SpuCollisionTaskProcess.cpp b/src/BulletMultiThreaded/SpuCollisionTaskProcess.cpp index 867964857..a43b97a67 100644 --- a/src/BulletMultiThreaded/SpuCollisionTaskProcess.cpp +++ b/src/BulletMultiThreaded/SpuCollisionTaskProcess.cpp @@ -128,7 +128,7 @@ void SpuCollisionTaskProcess::issueTask2() - m_threadInterface->sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (uint32_t) &taskDesc,m_currentTask); + m_threadInterface->sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (ppu_address_t) &taskDesc,m_currentTask); // if all tasks busy, wait for spu event to clear the task. diff --git a/src/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp b/src/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp index 3c5c5e76c..9d9186e28 100644 --- a/src/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp +++ b/src/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp @@ -106,9 +106,9 @@ public: //by default, Bullet will use this near callback { ///userInfo is used to determine if the SPU has to handle this case or not (skip PPU tasks) - if (!collisionPair.m_userInfo) + if (!collisionPair.m_internalTmpValue) { - collisionPair.m_userInfo = (void*) 1; + collisionPair.m_internalTmpValue = 1; } if (!collisionPair.m_algorithm) { @@ -132,11 +132,11 @@ public: void* mem = m_dispatcher->allocateCollisionAlgorithm(so); #endif collisionPair.m_algorithm = new(mem) SpuContactManifoldCollisionAlgorithm(ci,colObj0,colObj1); - collisionPair.m_userInfo = (void*) 2; + collisionPair.m_internalTmpValue = 2; } else { collisionPair.m_algorithm = m_dispatcher->findAlgorithm(colObj0,colObj1); - collisionPair.m_userInfo = (void*)3; + collisionPair.m_internalTmpValue = 3; } } } @@ -179,7 +179,7 @@ void SpuGatheringCollisionDispatcher::dispatchAllCollisionPairs(btOverlappingPai for (i=0;im_pProxy1 = %d\n",pair.m_pProxy1); #endif //DEBUG_SPU_COLLISION_DETECTION - userInfo = int(pair.m_userInfo); - - if (userInfo == 2 && pair.m_algorithm && pair.m_pProxy0 && pair.m_pProxy1) + if (pair.m_internalTmpValue == 2 && pair.m_algorithm && pair.m_pProxy0 && pair.m_pProxy1) { dmaSize = sizeof(SpuContactManifoldCollisionAlgorithm); dmaPpuAddress2 = (ppu_address_t)pair.m_algorithm; diff --git a/src/BulletMultiThreaded/SpuParallelSolver.cpp b/src/BulletMultiThreaded/SpuParallelSolver.cpp index 0e4376558..13a3e92c1 100644 --- a/src/BulletMultiThreaded/SpuParallelSolver.cpp +++ b/src/BulletMultiThreaded/SpuParallelSolver.cpp @@ -578,7 +578,7 @@ void SolverTaskScheduler::issueTask() SpuSolverTaskDesc& desc = m_taskDescriptors[m_currentTask]; - m_threadInterface->sendRequest(1, (uint32_t)&desc, m_currentTask); + m_threadInterface->sendRequest(1, (ppu_address_t)&desc, m_currentTask); } void SolverTaskScheduler::flushTasks() diff --git a/src/BulletMultiThreaded/SpuRaycastTaskProcess.cpp b/src/BulletMultiThreaded/SpuRaycastTaskProcess.cpp index 579e7ce18..50dd88d0b 100644 --- a/src/BulletMultiThreaded/SpuRaycastTaskProcess.cpp +++ b/src/BulletMultiThreaded/SpuRaycastTaskProcess.cpp @@ -79,7 +79,7 @@ void SpuRaycastTaskProcess::issueTask2() SpuRaycastTaskDesc& taskDesc = m_spuRaycastTaskDesc[m_currentTask]; taskDesc.taskId = m_currentTask; - m_threadInterface->sendRequest(1, (uint32_t) &taskDesc,m_currentTask); + m_threadInterface->sendRequest(1, (ppu_address_t) &taskDesc,m_currentTask); //printf("send thread requested for task %d\n", m_currentTask); // if all tasks busy, wait for spu event to clear the task. if (m_numBusyTasks >= m_maxNumOutstandingTasks) diff --git a/src/BulletMultiThreaded/SpuSampleTaskProcess.cpp b/src/BulletMultiThreaded/SpuSampleTaskProcess.cpp index 7d8a2ded8..11cb9e7c3 100644 --- a/src/BulletMultiThreaded/SpuSampleTaskProcess.cpp +++ b/src/BulletMultiThreaded/SpuSampleTaskProcess.cpp @@ -130,7 +130,7 @@ void SpuSampleTaskProcess::issueTask(void* sampleMainMemPtr,int sampleValue,int } - m_threadInterface->sendRequest(1, (uint32_t) &taskDesc, m_currentTask); + m_threadInterface->sendRequest(1, (ppu_address_t) &taskDesc, m_currentTask); // if all tasks busy, wait for spu event to clear the task. diff --git a/src/BulletMultiThreaded/Win32ThreadSupport.cpp b/src/BulletMultiThreaded/Win32ThreadSupport.cpp index 8ff8a9bcf..8aa4cdce6 100644 --- a/src/BulletMultiThreaded/Win32ThreadSupport.cpp +++ b/src/BulletMultiThreaded/Win32ThreadSupport.cpp @@ -81,9 +81,9 @@ DWORD WINAPI Thread_no_1( LPVOID lpParam ) } ///send messages to SPUs -void Win32ThreadSupport::sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t taskId) +void Win32ThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) { - /// gMidphaseSPU.sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (uint32_t) &taskDesc); + /// gMidphaseSPU.sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (ppu_address_t) &taskDesc); ///we should spawn an SPU task here, and in 'waitForResponse' it should wait for response of the (one of) the first tasks that finished diff --git a/src/BulletMultiThreaded/Win32ThreadSupport.h b/src/BulletMultiThreaded/Win32ThreadSupport.h index 951c8a2e4..183cd2e3a 100644 --- a/src/BulletMultiThreaded/Win32ThreadSupport.h +++ b/src/BulletMultiThreaded/Win32ThreadSupport.h @@ -103,7 +103,7 @@ public: ///send messages to SPUs - virtual void sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1); + virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); ///check for messages from SPUs virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); diff --git a/src/BulletMultiThreaded/btThreadSupportInterface.h b/src/BulletMultiThreaded/btThreadSupportInterface.h index 11ed1d8a0..0bb775e0c 100644 --- a/src/BulletMultiThreaded/btThreadSupportInterface.h +++ b/src/BulletMultiThreaded/btThreadSupportInterface.h @@ -19,6 +19,7 @@ subject to the following restrictions: //#include //for uint32_t etc. #include "PlatformDefinitions.h" +#include "PpuAddressSpace.h" class btThreadSupportInterface { @@ -27,7 +28,7 @@ public: virtual ~btThreadSupportInterface(); ///send messages to SPUs - virtual void sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1) =0; + virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1) =0; ///check for messages from SPUs virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) =0;