Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::LockManager Class Reference

#include <LockManager.h>

+ Inheritance diagram for Divide::LockManager:

Classes

struct  BufferLockPoolEntry
 

Public Types

using BufferLockPool = eastl::fixed_vector< BufferLockPoolEntry, 1024, true >
 

Public Member Functions

virtual ~LockManager () override=default
 
bool waitForLockedRange (size_t lockBeginBytes, size_t lockLength)
 Returns false if we encountered an error.
 
bool lockRange (size_t lockBeginBytes, size_t lockLength, SyncObjectHandle syncObj)
 Returns false if we encountered an error.
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 

Static Public Member Functions

static void CleanExpiredSyncObjects (RenderAPI api, U64 frameNumber)
 
static void Clear ()
 
static SyncObjectHandle CreateSyncObject (RenderAPI api, U8 flag=DEFAULT_SYNC_FLAG_INTERNAL)
 
- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 

Static Public Attributes

static constexpr U8 DEFAULT_SYNC_FLAG_INTERNAL = 254u
 
static constexpr U8 DEFAULT_SYNC_FLAG_GVD = 255u
 
static constexpr U8 DEFAULT_SYNC_FLAG_SSBO = 252u
 
static constexpr U8 DEFAULT_SYNC_FLAG_TEXTURE = 253u
 

Protected Member Functions

virtual bool waitForLockedRangeLocked (const SyncObject_uptr &sync, const BufferRange &testRange, const BufferLockInstance &lock)
 

Static Protected Member Functions

static bool InitLockPoolEntry (RenderAPI api, BufferLockPoolEntry &entry, U8 flag, U64 frameIdx)
 

Protected Attributes

Mutex _bufferLockslock
 
eastl::fixed_vector< BufferLockInstance, 64, true > _bufferLocks
 
eastl::fixed_vector< BufferLockInstance, 64, true > _swapLocks
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 

Static Protected Attributes

static Mutex s_bufferLockLock
 
static BufferLockPool s_bufferLockPool
 

Detailed Description

Definition at line 74 of file LockManager.h.

Member Typedef Documentation

◆ BufferLockPool

using Divide::LockManager::BufferLockPool = eastl::fixed_vector<BufferLockPoolEntry, 1024, true>

Definition at line 88 of file LockManager.h.

Constructor & Destructor Documentation

◆ ~LockManager()

virtual Divide::LockManager::~LockManager ( )
overridevirtualdefault

Member Function Documentation

◆ CleanExpiredSyncObjects()

void Divide::LockManager::CleanExpiredSyncObjects ( RenderAPI  api,
U64  frameNumber 
)
static

Definition at line 29 of file LockManager.cpp.

◆ Clear()

void Divide::LockManager::Clear ( )
static

Definition at line 64 of file LockManager.cpp.

◆ CreateSyncObject()

SyncObjectHandle Divide::LockManager::CreateSyncObject ( RenderAPI  api,
U8  flag = DEFAULT_SYNC_FLAG_INTERNAL 
)
static

Definition at line 172 of file LockManager.cpp.

◆ InitLockPoolEntry()

bool Divide::LockManager::InitLockPoolEntry ( RenderAPI  api,
BufferLockPoolEntry entry,
U8  flag,
U64  frameIdx 
)
staticprotected

Definition at line 70 of file LockManager.cpp.

◆ lockRange()

bool Divide::LockManager::lockRange ( size_t  lockBeginBytes,
size_t  lockLength,
SyncObjectHandle  syncObj 
)

Returns false if we encountered an error.

Definition at line 146 of file LockManager.cpp.

◆ waitForLockedRange()

bool Divide::LockManager::waitForLockedRange ( size_t  lockBeginBytes,
size_t  lockLength 
)

Returns false if we encountered an error.

Definition at line 104 of file LockManager.cpp.

◆ waitForLockedRangeLocked()

bool Divide::LockManager::waitForLockedRangeLocked ( const SyncObject_uptr &  sync,
const BufferRange testRange,
const BufferLockInstance lock 
)
protectedvirtual

Reimplemented in Divide::glLockManager.

Definition at line 140 of file LockManager.cpp.

Member Data Documentation

◆ _bufferLocks

eastl::fixed_vector<BufferLockInstance, 64, true> Divide::LockManager::_bufferLocks
protected

Definition at line 110 of file LockManager.h.

◆ _bufferLockslock

Mutex Divide::LockManager::_bufferLockslock
mutableprotected

Definition at line 109 of file LockManager.h.

◆ _swapLocks

eastl::fixed_vector<BufferLockInstance, 64, true> Divide::LockManager::_swapLocks
protected

Definition at line 111 of file LockManager.h.

◆ DEFAULT_SYNC_FLAG_GVD

constexpr U8 Divide::LockManager::DEFAULT_SYNC_FLAG_GVD = 255u
staticconstexpr

Definition at line 78 of file LockManager.h.

◆ DEFAULT_SYNC_FLAG_INTERNAL

constexpr U8 Divide::LockManager::DEFAULT_SYNC_FLAG_INTERNAL = 254u
staticconstexpr

Definition at line 77 of file LockManager.h.

◆ DEFAULT_SYNC_FLAG_SSBO

constexpr U8 Divide::LockManager::DEFAULT_SYNC_FLAG_SSBO = 252u
staticconstexpr

Definition at line 79 of file LockManager.h.

◆ DEFAULT_SYNC_FLAG_TEXTURE

constexpr U8 Divide::LockManager::DEFAULT_SYNC_FLAG_TEXTURE = 253u
staticconstexpr

Definition at line 80 of file LockManager.h.

◆ s_bufferLockLock

Mutex Divide::LockManager::s_bufferLockLock
staticprotected

Definition at line 113 of file LockManager.h.

◆ s_bufferLockPool

LockManager::BufferLockPool Divide::LockManager::s_bufferLockPool
staticprotected

Definition at line 114 of file LockManager.h.


The documentation for this class was generated from the following files: