54 :m_threadInterface(threadInterface),
 
   55 m_maxNumOutstandingTasks(0)
 
   64 #ifdef DEBUG_SpuCollisionTaskProcess 
   95 #ifdef DEBUG_SPU_TASK_SCHEDULING 
   96         printf(
"SpuCollisionTaskProcess::initialize()\n");
 
   97 #endif //DEBUG_SPU_TASK_SCHEDULING 
  109 #ifdef DEBUG_SpuCollisionTaskProcess 
  119 #ifdef DEBUG_SPU_TASK_SCHEDULING 
  120         printf(
"SpuCollisionTaskProcess::issueTask (m_currentTask= %d\n)", 
m_currentTask);
 
  121 #endif //DEBUG_SPU_TASK_SCHEDULING 
  152                 unsigned int outputSize;
 
  184 #ifdef DEBUG_SPU_TASK_SCHEDULING 
  186 #endif //DEBUG_SPU_TASK_SCHEDULING 
  188 #ifdef DEBUG_SpuCollisionTaskProcess 
  271 #ifdef DEBUG_SPU_TASK_SCHEDULING 
  272         printf(
"\nSpuCollisionTaskProcess::flush()\n");
 
  273 #endif //DEBUG_SPU_TASK_SCHEDULING 
  286           unsigned int taskId=-1;
 
  287           unsigned int outputSize;
 
~SpuCollisionTaskProcess()
 
#define MIDPHASE_TASK_PTR(task)
 
#define MIDPHASE_ENTRY_PTR(task, page, entry)
 
void setNumTasks(int maxNumTasks)
set the maximum number of SPU tasks allocated 
 
virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1)=0
send messages to SPUs 
 
ppu_address_t m_inPairPtr
 
Task Description for SPU collision detection. 
 
void initialize2(bool useEpa=false)
call initialize in the beginning of the frame, before addCollisionPairToTask 
 
#define MIDPHASE_NUM_WORKUNITS_PER_TASK
 
void flush2()
call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished...
 
btAlignedObjectArray< bool > m_taskBusy
 
#define MIDPHASE_WORKUNIT_TASK_SIZE
 
virtual void startSPU()=0
non-blocking test if a task is completed. 
 
SpuCollisionTaskProcess(btThreadSupportInterface *threadInterface, unsigned int maxNumOutstandingTasks)
 
#define MIDPHASE_NUM_WORKUNIT_PAGES
 
unsigned int m_currentPage
 
unsigned char * m_workUnitTaskBuffers
 
unsigned int m_currentTask
 
class btThreadSupportInterface * m_threadInterface
 
int size() const 
return the number of elements in the array 
 
void addWorkToTask(void *pairArrayPtr, int startIndex, int endIndex)
batch up additional work to a current task for SPU processing. When batch is full, it issues the task. 
 
unsigned int m_currentPageEntry
 
#define btAlignedFree(ptr)
 
virtual void stopSPU()=0
tell the task scheduler we are done with the SPU tasks 
 
btAlignedObjectArray< SpuGatherAndProcessPairsTaskDesc > m_spuGatherTaskDesc
 
#define MIDPHASE_NUM_WORKUNITS_PER_PAGE
 
void resize(int newsize, const T &fillData=T())
 
#define btAlignedAlloc(size, alignment)
 
virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1)=0
check for messages from SPUs 
 
unsigned int m_maxNumOutstandingTasks
 
#define CMD_GATHER_AND_PROCESS_PAIRLIST
 
unsigned int m_numBusyTasks