14 : _frameNumber(frameIdx)
51 reset = syncObject._ptr->_frameNumber < frameNumber;
59 syncObject._ptr->reset();
80 if (
entry._ptr ==
nullptr )
82 entry._ptr = std::make_unique<SyncObject>( flag, frameIdx );
88 entry._ptr->_frameNumber = frameIdx;
89 entry._ptr->_flag = flag;
108 const BufferRange testRange{ lockBeginBytes, lockLength };
121 if ( syncLockInstance.
_generation != lock._syncObjHandle._generation )
123 error = !(syncLockInstance.
_generation > lock._syncObjHandle._generation);
128 if ( !
Overlaps( testRange, lock._range ) ||
152 const BufferRange testRange{ lockBeginBytes, lockLength };
158 if (
Overlaps( testRange, lock._range ) )
160 Merge( lock._range, testRange );
161 lock._syncObjHandle = syncObj;
#define PROFILE_SCOPE_AUTO(CATEGORY)
static U64 FrameCount() noexcept
static void CleanExpiredSyncObjects(RenderAPI api, U64 frameNumber)
static SyncObjectHandle CreateSyncObject(RenderAPI api, U8 flag=DEFAULT_SYNC_FLAG_INTERNAL)
static Mutex s_bufferLockLock
virtual bool waitForLockedRangeLocked(const SyncObject_uptr &sync, const BufferRange &testRange, const BufferLockInstance &lock)
bool waitForLockedRange(size_t lockBeginBytes, size_t lockLength)
Returns false if we encountered an error.
eastl::fixed_vector< BufferLockPoolEntry, 1024, true > BufferLockPool
eastl::fixed_vector< BufferLockInstance, 64, true > _bufferLocks
static BufferLockPool s_bufferLockPool
bool lockRange(size_t lockBeginBytes, size_t lockLength, SyncObjectHandle syncObj)
Returns false if we encountered an error.
static bool InitLockPoolEntry(RenderAPI api, BufferLockPoolEntry &entry, U8 flag, U64 frameIdx)
eastl::fixed_vector< BufferLockInstance, 64, true > _swapLocks
static bool InitLockPoolEntry(BufferLockPoolEntry &entry, U8 flag, U64 frameIdx)
constexpr U8 MAX_FRAMES_IN_FLIGHT
Maximum number of active frames until we start waiting on a fence/sync.
constexpr Optick::Category::Type Graphics
Handle console commands that start with a forward slash.
std::lock_guard< mutex > LockGuard
void Merge(BufferRange &lhs, const BufferRange &rhs) noexcept
bool Overlaps(const BufferRange &lhs, const BufferRange &rhs) noexcept
@ Vulkan
not supported yet
@ None
No rendering. Used for testing or server code.
SceneGraphNode * _flag[2]
void efficient_clear(eastl::fixed_vector< T, nodeCount, bEnableOverflow, OverflowAllocator > &fixed_vector)
Project const SceneEntry & entry
static constexpr size_t INVALID_SYNC_ID
SyncObject(U8 flag, U64 frameIdx)
static constexpr U64 INVALID_FRAME_NUMBER