[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-physics / third-party / bullet3 / src / Bullet3OpenCL / RigidBody / b3GpuJacobiContactSolver.h
1
2 #ifndef B3_GPU_JACOBI_CONTACT_SOLVER_H
3 #define B3_GPU_JACOBI_CONTACT_SOLVER_H
4 #include "Bullet3OpenCL/Initialize/b3OpenCLInclude.h"
5 //#include "Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h"
6 #include "Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h"
7
8 #include "Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h"
9 #include "Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h"
10
11 //struct b3InertiaData;
12 //b3InertiaData
13
14 class b3TypedConstraint;
15
16 struct b3JacobiSolverInfo
17 {
18         int m_fixedBodyIndex;
19
20         float m_deltaTime;
21         float m_positionDrift;
22         float m_positionConstraintCoeff;
23         int m_numIterations;
24
25         b3JacobiSolverInfo()
26                 : m_fixedBodyIndex(0),
27                   m_deltaTime(1. / 60.f),
28                   m_positionDrift(0.005f),
29                   m_positionConstraintCoeff(0.99f),
30                   m_numIterations(7)
31         {
32         }
33 };
34 class b3GpuJacobiContactSolver
35 {
36 protected:
37         struct b3GpuJacobiSolverInternalData* m_data;
38
39         cl_context m_context;
40         cl_device_id m_device;
41         cl_command_queue m_queue;
42
43 public:
44         b3GpuJacobiContactSolver(cl_context ctx, cl_device_id device, cl_command_queue queue, int pairCapacity);
45         virtual ~b3GpuJacobiContactSolver();
46
47         void solveContacts(int numBodies, cl_mem bodyBuf, cl_mem inertiaBuf, int numContacts, cl_mem contactBuf, const struct b3Config& config, int static0Index);
48         void solveGroupHost(b3RigidBodyData* bodies, b3InertiaData* inertias, int numBodies, struct b3Contact4* manifoldPtr, int numManifolds, const b3JacobiSolverInfo& solverInfo);
49         //void  solveGroupHost(btRigidBodyCL* bodies,b3InertiaData* inertias,int numBodies,btContact4* manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btJacobiSolverInfo& solverInfo);
50
51         //b3Scalar solveGroup(b3OpenCLArray<b3RigidBodyData>* gpuBodies,b3OpenCLArray<b3InertiaData>* gpuInertias, int numBodies,b3OpenCLArray<b3GpuGenericConstraint>* gpuConstraints,int numConstraints,const b3ContactSolverInfo& infoGlobal);
52
53         //void  solveGroup(btOpenCLArray<btRigidBodyCL>* bodies,btOpenCLArray<btInertiaCL>* inertias,btOpenCLArray<btContact4>* manifoldPtr,const btJacobiSolverInfo& solverInfo);
54         //void  solveGroupMixed(btOpenCLArray<btRigidBodyCL>* bodies,btOpenCLArray<btInertiaCL>* inertias,btOpenCLArray<btContact4>* manifoldPtr,const btJacobiSolverInfo& solverInfo);
55 };
56 #endif  //B3_GPU_JACOBI_CONTACT_SOLVER_H