1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #ifndef GL_FRAMEALLOCATOR_LOCKABLE_HELPER_H
- #define GL_FRAMEALLOCATOR_LOCKABLE_HELPER_H
- #include "core/frameAllocator.h"
- /// Helper class for simulate lock/unlock on gfx buffers using FrameAllocator
- class FrameAllocatorLockableHelper
- {
- public:
- FrameAllocatorLockableHelper()
- : mFrameAllocatorMark(0),
- mFrameAllocatorPtr(NULL)
- #if TORQUE_DEBUG
- , mFrameAllocatorMarkGuard(0)
- #endif
- {
- }
- U8* lock(const U32 size)
- {
- AssertFatal(!mFrameAllocatorMark && !mFrameAllocatorPtr, "");
- mFrameAllocatorMark = FrameAllocator::getWaterMark();
- mFrameAllocatorPtr = (U8*)FrameAllocator::alloc( size );
- #if TORQUE_DEBUG
- mFrameAllocatorMarkGuard = FrameAllocator::getWaterMark();
- #endif
- return mFrameAllocatorPtr;
- }
- void unlock()
- {
- #if TORQUE_DEBUG
- AssertFatal(mFrameAllocatorMarkGuard == FrameAllocator::getWaterMark(), "");
- #endif
- FrameAllocator::setWaterMark(mFrameAllocatorMark);
- mFrameAllocatorMark = 0;
- mFrameAllocatorPtr = NULL;
- }
- U8* getlockedPtr() const { return mFrameAllocatorPtr; }
- protected:
- U32 mFrameAllocatorMark;
- U8 *mFrameAllocatorPtr;
- #if TORQUE_DEBUG
- U32 mFrameAllocatorMarkGuard;
- #endif
- };
- #endif //GL_FRAMEALLOCATOR_LOCKABLE_HELPER_H
|