20 #ifndef BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_SIMDAWARE_H
21 #define BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_SIMDAWARE_H
169 #endif // #ifndef BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_SIMDAWARE_H
int getMaxVerticesPerWavefront()
btAlignedObjectArray< int > m_linkAddresses
Link addressing information for each cloth.
int getMaxLinksPerWavefront()
virtual bool moveToAccelerator()
Move data from host memory to the accelerator.
virtual bool onAccelerator()
Return true if data is on the accelerator.
struct _cl_context * cl_context
btOpenCLBuffer< LinkNodePair > m_clLinkVerticesLocalAddresses
btAlignedObjectArray< NumBatchesVerticesPair > m_numBatchesAndVerticesWithinWaves
virtual bool moveFromAccelerator()
Move data from host memory from the accelerator.
const int m_wavefrontSize
int m_maxBatchesWithinWave
btOpenCLBuffer< float > m_clLinksRestLengthSquared
const int m_maxLinksPerWavefront
LinkNodePair getVertexPairLocalAddresses(int linkIndex)
Get post-batching local addresses of the vertex pair for a link assuming all vertices used by a wavef...
const int m_linksPerWorkItem
int getLinksPerWorkItem()
virtual ~btSoftBodyLinkDataOpenCLSIMDAware()
int getVertexGlobalAddresses(int vertexIndex)
btOpenCLBuffer< float > m_clLinkStrength
virtual void createLinks(int numLinks)
Allocate enough space in all link-related arrays to fit numLinks links.
btOpenCLBuffer< float > m_clLinksMaterialLinearStiffnessCoefficient
Class representing a link as a set of three indices into the vertex array.
btOpenCLBuffer< float > m_clLinksMassLSC
btAlignedObjectArray< int > m_linksPerWavefront
int m_maxVerticesWithinWave
void generateBatches()
Generate (and later update) the batching for the entire link set.
Class describing a link for input into the system.
NumBatchesVerticesPair getNumBatchesAndVerticesWithinWavefront(int wavefront)
btOpenCLBuffer< float > m_clLinksRestLength
cl_command_queue m_cqCommandQue
btOpenCLBuffer< int > m_clWavefrontVerticesGlobalAddresses
int getMaxBatchesPerWavefront()
struct _cl_command_queue * cl_command_queue
btAlignedObjectArray< int > m_wavefrontVerticesGlobalAddresses
virtual void setLinkAt(const LinkDescription &link, int linkIndex)
Insert the link described into the correct data structures assuming space has already been allocated ...
btOpenCLBuffer< NumBatchesVerticesPair > m_clNumBatchesAndVerticesWithinWaves
btSoftBodyLinkDataOpenCLSIMDAware(cl_command_queue queue, cl_context ctx)
btAlignedObjectArray< LinkNodePair > m_linkVerticesLocalAddresses
btAlignedObjectArray< BatchPair > m_wavefrontBatchStartLengths
Start and length values for computation batches over link data.