Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.cpp')
-rw-r--r--extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.cpp519
1 files changed, 0 insertions, 519 deletions
diff --git a/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.cpp b/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.cpp
deleted file mode 100644
index 7adee88d245..00000000000
--- a/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.cpp
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
-Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com
-
-This software is provided 'as-is', without any express or implied warranty.
-In no event will the authors be held liable for any damages arising from the use of this software.
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it freely,
-subject to the following restrictions:
-
-1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-3. This notice may not be removed or altered from any source distribution.
-*/
-
-//#define __CELLOS_LV2__ 1
-#define __BT_SKIP_UINT64_H 1
-
-#define USE_SAMPLE_PROCESS 1
-#ifdef USE_SAMPLE_PROCESS
-
-
-#include "MiniCLTaskScheduler.h"
-#include <stdio.h>
-
-#ifdef __SPU__
-
-
-
-void SampleThreadFunc(void* userPtr,void* lsMemory)
-{
- //do nothing
- printf("hello world\n");
-}
-
-
-void* SamplelsMemoryFunc()
-{
- //don't create local store memory, just return 0
- return 0;
-}
-
-
-#else
-
-
-#include "BulletMultiThreaded/btThreadSupportInterface.h"
-
-//# include "SPUAssert.h"
-#include <string.h>
-
-#include "MiniCL/cl_platform.h"
-
-extern "C" {
- extern char SPU_SAMPLE_ELF_SYMBOL[];
-}
-
-
-MiniCLTaskScheduler::MiniCLTaskScheduler(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks)
-:m_threadInterface(threadInterface),
-m_maxNumOutstandingTasks(maxNumOutstandingTasks)
-{
-
- m_taskBusy.resize(m_maxNumOutstandingTasks);
- m_spuSampleTaskDesc.resize(m_maxNumOutstandingTasks);
-
- m_kernels.resize(0);
-
- for (int i = 0; i < m_maxNumOutstandingTasks; i++)
- {
- m_taskBusy[i] = false;
- }
- m_numBusyTasks = 0;
- m_currentTask = 0;
-
- m_initialized = false;
-
- m_threadInterface->startSPU();
-
-
-}
-
-MiniCLTaskScheduler::~MiniCLTaskScheduler()
-{
- m_threadInterface->stopSPU();
-
-}
-
-
-
-void MiniCLTaskScheduler::initialize()
-{
-#ifdef DEBUG_SPU_TASK_SCHEDULING
- printf("MiniCLTaskScheduler::initialize()\n");
-#endif //DEBUG_SPU_TASK_SCHEDULING
-
- for (int i = 0; i < m_maxNumOutstandingTasks; i++)
- {
- m_taskBusy[i] = false;
- }
- m_numBusyTasks = 0;
- m_currentTask = 0;
- m_initialized = true;
-
-}
-
-
-void MiniCLTaskScheduler::issueTask(int firstWorkUnit, int lastWorkUnit, MiniCLKernel* kernel)
-{
-
-#ifdef DEBUG_SPU_TASK_SCHEDULING
- printf("MiniCLTaskScheduler::issueTask (m_currentTask= %d\)n", m_currentTask);
-#endif //DEBUG_SPU_TASK_SCHEDULING
-
- m_taskBusy[m_currentTask] = true;
- m_numBusyTasks++;
-
- MiniCLTaskDesc& taskDesc = m_spuSampleTaskDesc[m_currentTask];
- {
- // send task description in event message
- taskDesc.m_firstWorkUnit = firstWorkUnit;
- taskDesc.m_lastWorkUnit = lastWorkUnit;
- taskDesc.m_kernel = kernel;
- //some bookkeeping to recognize finished tasks
- taskDesc.m_taskId = m_currentTask;
-
-// for (int i=0;i<MINI_CL_MAX_ARG;i++)
- for (unsigned int i=0; i < kernel->m_numArgs; i++)
- {
- taskDesc.m_argSizes[i] = kernel->m_argSizes[i];
- if (taskDesc.m_argSizes[i])
- {
- taskDesc.m_argData[i] = kernel->m_argData[i];
-// memcpy(&taskDesc.m_argData[i],&argData[MINICL_MAX_ARGLENGTH*i],taskDesc.m_argSizes[i]);
- }
- }
- }
-
-
- m_threadInterface->sendRequest(1, (ppu_address_t) &taskDesc, m_currentTask);
-
- // if all tasks busy, wait for spu event to clear the task.
-
- if (m_numBusyTasks >= m_maxNumOutstandingTasks)
- {
- unsigned int taskId;
- unsigned int outputSize;
-
- for (int i=0;i<m_maxNumOutstandingTasks;i++)
- {
- if (m_taskBusy[i])
- {
- taskId = i;
- break;
- }
- }
- m_threadInterface->waitForResponse(&taskId, &outputSize);
-
- //printf("PPU: after issue, received event: %u %d\n", taskId, outputSize);
-
- postProcess(taskId, outputSize);
-
- m_taskBusy[taskId] = false;
-
- m_numBusyTasks--;
- }
-
- // find new task buffer
- for (int i = 0; i < m_maxNumOutstandingTasks; i++)
- {
- if (!m_taskBusy[i])
- {
- m_currentTask = i;
- break;
- }
- }
-}
-
-
-///Optional PPU-size post processing for each task
-void MiniCLTaskScheduler::postProcess(int taskId, int outputSize)
-{
-
-}
-
-
-void MiniCLTaskScheduler::flush()
-{
-#ifdef DEBUG_SPU_TASK_SCHEDULING
- printf("\nSpuCollisionTaskProcess::flush()\n");
-#endif //DEBUG_SPU_TASK_SCHEDULING
-
-
- // all tasks are issued, wait for all tasks to be complete
- while(m_numBusyTasks > 0)
- {
-// Consolidating SPU code
- unsigned int taskId;
- unsigned int outputSize;
-
- for (int i=0;i<m_maxNumOutstandingTasks;i++)
- {
- if (m_taskBusy[i])
- {
- taskId = i;
- break;
- }
- }
- {
-
- m_threadInterface->waitForResponse(&taskId, &outputSize);
- }
-
- //printf("PPU: flushing, received event: %u %d\n", taskId, outputSize);
-
- postProcess(taskId, outputSize);
-
- m_taskBusy[taskId] = false;
-
- m_numBusyTasks--;
- }
-
-
-}
-
-
-
-typedef void (*MiniCLKernelLauncher0)(int);
-typedef void (*MiniCLKernelLauncher1)(void*, int);
-typedef void (*MiniCLKernelLauncher2)(void*, void*, int);
-typedef void (*MiniCLKernelLauncher3)(void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher4)(void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher5)(void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher6)(void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher7)(void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher8)(void*, void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher9)(void*, void*, void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher10)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher11)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher12)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher13)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher14)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher15)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int);
-typedef void (*MiniCLKernelLauncher16)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int);
-
-
-static void kernelLauncher0(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher0)(taskDesc->m_kernel->m_launcher))(guid);
-}
-static void kernelLauncher1(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher1)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- guid);
-}
-static void kernelLauncher2(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher2)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- guid);
-}
-static void kernelLauncher3(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher3)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- guid);
-}
-static void kernelLauncher4(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher4)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- guid);
-}
-static void kernelLauncher5(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher5)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- guid);
-}
-static void kernelLauncher6(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher6)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- guid);
-}
-static void kernelLauncher7(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher7)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- guid);
-}
-static void kernelLauncher8(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher8)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- guid);
-}
-static void kernelLauncher9(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher9)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- taskDesc->m_argData[8],
- guid);
-}
-static void kernelLauncher10(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher10)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- taskDesc->m_argData[8],
- taskDesc->m_argData[9],
- guid);
-}
-static void kernelLauncher11(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher11)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- taskDesc->m_argData[8],
- taskDesc->m_argData[9],
- taskDesc->m_argData[10],
- guid);
-}
-static void kernelLauncher12(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher12)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- taskDesc->m_argData[8],
- taskDesc->m_argData[9],
- taskDesc->m_argData[10],
- taskDesc->m_argData[11],
- guid);
-}
-static void kernelLauncher13(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher13)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- taskDesc->m_argData[8],
- taskDesc->m_argData[9],
- taskDesc->m_argData[10],
- taskDesc->m_argData[11],
- taskDesc->m_argData[12],
- guid);
-}
-static void kernelLauncher14(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher14)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- taskDesc->m_argData[8],
- taskDesc->m_argData[9],
- taskDesc->m_argData[10],
- taskDesc->m_argData[11],
- taskDesc->m_argData[12],
- taskDesc->m_argData[13],
- guid);
-}
-static void kernelLauncher15(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher15)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- taskDesc->m_argData[8],
- taskDesc->m_argData[9],
- taskDesc->m_argData[10],
- taskDesc->m_argData[11],
- taskDesc->m_argData[12],
- taskDesc->m_argData[13],
- taskDesc->m_argData[14],
- guid);
-}
-static void kernelLauncher16(MiniCLTaskDesc* taskDesc, int guid)
-{
- ((MiniCLKernelLauncher16)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0],
- taskDesc->m_argData[1],
- taskDesc->m_argData[2],
- taskDesc->m_argData[3],
- taskDesc->m_argData[4],
- taskDesc->m_argData[5],
- taskDesc->m_argData[6],
- taskDesc->m_argData[7],
- taskDesc->m_argData[8],
- taskDesc->m_argData[9],
- taskDesc->m_argData[10],
- taskDesc->m_argData[11],
- taskDesc->m_argData[12],
- taskDesc->m_argData[13],
- taskDesc->m_argData[14],
- taskDesc->m_argData[15],
- guid);
-}
-
-static kernelLauncherCB spLauncherList[MINI_CL_MAX_ARG+1] =
-{
- kernelLauncher0,
- kernelLauncher1,
- kernelLauncher2,
- kernelLauncher3,
- kernelLauncher4,
- kernelLauncher5,
- kernelLauncher6,
- kernelLauncher7,
- kernelLauncher8,
- kernelLauncher9,
- kernelLauncher10,
- kernelLauncher11,
- kernelLauncher12,
- kernelLauncher13,
- kernelLauncher14,
- kernelLauncher15,
- kernelLauncher16
-};
-
-void MiniCLKernel::updateLauncher()
-{
- m_launcher = spLauncherList[m_numArgs];
-}
-
-struct MiniCLKernelDescEntry
-{
- void* pCode;
- char* pName;
-};
-static MiniCLKernelDescEntry spKernelDesc[256];
-static int sNumKernelDesc = 0;
-
-MiniCLKernelDesc::MiniCLKernelDesc(void* pCode, char* pName)
-{
- for(int i = 0; i < sNumKernelDesc; i++)
- {
- if(!strcmp(pName, spKernelDesc[i].pName))
- { // already registered
- btAssert(spKernelDesc[i].pCode == pCode);
- return;
- }
- }
- spKernelDesc[sNumKernelDesc].pCode = pCode;
- spKernelDesc[sNumKernelDesc].pName = pName;
- sNumKernelDesc++;
-}
-
-
-MiniCLKernel* MiniCLKernel::registerSelf()
-{
- m_scheduler->registerKernel(this);
- for(int i = 0; i < sNumKernelDesc; i++)
- {
- if(!strcmp(m_name, spKernelDesc[i].pName))
- {
- m_pCode = spKernelDesc[i].pCode;
- return this;
- }
- }
- return NULL;
-}
-
-#endif
-
-
-#endif //USE_SAMPLE_PROCESS