glFrameAllocatorLockableHelper.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef GL_FRAMEALLOCATOR_LOCKABLE_HELPER_H
  2. #define GL_FRAMEALLOCATOR_LOCKABLE_HELPER_H
  3. #include "core/frameAllocator.h"
  4. /// Helper class for simulate lock/unlock on gfx buffers using FrameAllocator
  5. class FrameAllocatorLockableHelper
  6. {
  7. public:
  8. FrameAllocatorLockableHelper()
  9. : mFrameAllocatorMark(0),
  10. mFrameAllocatorPtr(NULL)
  11. #if TORQUE_DEBUG
  12. , mFrameAllocatorMarkGuard(0)
  13. #endif
  14. {
  15. }
  16. U8* lock(const U32 size)
  17. {
  18. AssertFatal(!mFrameAllocatorMark && !mFrameAllocatorPtr, "");
  19. mFrameAllocatorMark = FrameAllocator::getWaterMark();
  20. mFrameAllocatorPtr = (U8*)FrameAllocator::alloc( size );
  21. #if TORQUE_DEBUG
  22. mFrameAllocatorMarkGuard = FrameAllocator::getWaterMark();
  23. #endif
  24. return mFrameAllocatorPtr;
  25. }
  26. void unlock()
  27. {
  28. #if TORQUE_DEBUG
  29. AssertFatal(mFrameAllocatorMarkGuard == FrameAllocator::getWaterMark(), "");
  30. #endif
  31. FrameAllocator::setWaterMark(mFrameAllocatorMark);
  32. mFrameAllocatorMark = 0;
  33. mFrameAllocatorPtr = NULL;
  34. }
  35. U8* getlockedPtr() const { return mFrameAllocatorPtr; }
  36. protected:
  37. U32 mFrameAllocatorMark;
  38. U8 *mFrameAllocatorPtr;
  39. #if TORQUE_DEBUG
  40. U32 mFrameAllocatorMarkGuard;
  41. #endif
  42. };
  43. #endif //GL_FRAMEALLOCATOR_LOCKABLE_HELPER_H