27#include "PxPhysXConfig.h"
28#include "foundation/PxArray.h"
29#include "foundation/PxUserAllocated.h"
30#include "collision/PxCollisionDefs.h"
31#include "solver/PxSolverDefs.h"
35namespace SnippetImmUtils
42 static const PxU32 PageSize = 32 * 1024;
47 AllocationPage() : currentIndex(0){}
49 PxU8* allocate(
const PxU32 size)
51 PxU32 alignedSize = (size + 15)&(~15);
52 if ((currentIndex + alignedSize) < PageSize)
54 PxU8* ret = &mPage[currentIndex];
55 currentIndex += alignedSize;
62 AllocationPage* currentPage;
72 virtual PxU8* allocate(
const PxU32 byteSize)
76 PxU8* data = currentPage->allocate(byteSize);
81 if (mCurrentIndex < mAllocatedBlocks.
size())
83 currentPage = mAllocatedBlocks[mCurrentIndex++];
84 currentPage->currentIndex = 0;
85 return currentPage->allocate(byteSize);
87 currentPage = PX_NEW(AllocationPage);
88 mAllocatedBlocks.
pushBack(currentPage);
89 mCurrentIndex = mAllocatedBlocks.
size();
91 return currentPage->allocate(byteSize);
96 for (PxU32 a = 0; a < mAllocatedBlocks.
size(); ++a)
97 PX_DELETE(mAllocatedBlocks[a]);
98 mAllocatedBlocks.
clear();
128 return mAllocator[currIdx].allocate(byteSize);
131 void release() { currIdx = 1 - currIdx; mAllocator[currIdx].release(); }
133 void reset() { currIdx = 1 - currIdx; mAllocator[currIdx].reset(); }
135 virtual ~TestCacheAllocator(){}
150 virtual PxU8*
reserveFrictionData(
const PxU32 byteSize){
return mFrictionAllocator[currIdx].allocate(byteSize); }
152 void release() { currIdx = 1 - currIdx; mConstraintAllocator.release(); mFrictionAllocator[currIdx].release(); }
154 virtual ~TestConstraintAllocator() {}
PX_FORCE_INLINE uint32_t size() const
Definition PxArray.h:242
PX_INLINE void clear()
Definition PxArray.h:250
PX_FORCE_INLINE T & pushBack(const T &a)
Definition PxArray.h:296
A callback class to allocate memory to cache information used in contact generation.
Definition PxCollisionDefs.h:44
Definition PxSolverDefs.h:227
Definition PxUserAllocated.h:43
Definition SnippetImmUtils.h:39
Definition SnippetImmUtils.h:116
virtual PxU8 * allocateCacheData(const PxU32 byteSize)
Allocates cache data for contact generation. This data is stored inside PxCache objects....
Definition SnippetImmUtils.h:126
Definition SnippetImmUtils.h:139
virtual PxU8 * reserveConstraintData(const PxU32 byteSize)
Allocates constraint data. It is the application's responsibility to release this memory after PxSolv...
Definition SnippetImmUtils.h:149
virtual PxU8 * reserveFrictionData(const PxU32 byteSize)
Allocates friction data. Friction data can be retained by the application for a given pair and provid...
Definition SnippetImmUtils.h:150
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39