VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Friends
makVrv::DtIndirectTextureProcessor Class Reference
Inheritance diagram for makVrv::DtIndirectTextureProcessor:
Inheritance graph
[legend]

Public Member Functions

virtual ~DtIndirectTextureProcessor ()
 
virtual void launchTextureLoadsIfNecessary (DtOsgRenderer *renderer)
 
virtual void ts_addTexturesToLoad (int beforeTextureIndex, int afterTextureIndex, VectorIndirectGeometryTexturesRefPtrs &textures)
 
virtual void ts_addTextureToLoad (osg::Texture *texture, int flags)
 
virtual void ts_unloadTextures (const std::set< osg::ref_ptr< osg::Texture > > &texturesToUnload)
 
virtual void ts_moveToToLoadIfNotInToLoadOrLoadingOrNotLoaded (const std::map< osg::ref_ptr< osg::Texture >, int > &texturesToUnload)
 
virtual unsigned int streamTexturesToGpu (const osg::RenderInfo &renderInfo)
 
virtual unsigned int texturesUpdatedFrameNum () const
 
virtual int numTexturesRemaining () const
 
virtual void releaseGLObjects (osg::State *state) const
 
virtual void stopWork ()
 
virtual int numTexturesToLoad () const
 
virtual int numTexturesLoading () const
 
virtual bool texureFailed (osg::Texture *texture) const
 
virtual bool inJobQueue () const
 
virtual boost::condition_variable & waitCondition ()
 
virtual bool inTextureToGCMap (const osg::GraphicsContext *graphicsContext, unsigned int textureObject) const
 
virtual bool readyForBindless (const DtIndirectGlTextureObject *indirectGlTextureObject, const osg::GraphicsContext *graphicsContext) const
 
virtual void makeTexturesResidentIfNeeded (const osg::GraphicsContext *graphicsContext) const
 
virtual DtIndirectGlTextureObjectgetTextureObject (osg::ref_ptr< osg::Texture > osgTexture, int flags) const
 
virtual void setTextureLoadTimeSlicePeriod (float period)
 
virtual float textureLoadTimeSlicePeriod (void) const
 

Public Attributes

friend DtIndirectTextureProcessorCreator
 

Protected Types

typedef std::set< osg::ref_ptr
< osg::Texture > > 
SetTextures
 
typedef std::map< osg::ref_ptr
< osg::Texture >, int
SetTexturesAndFlags
 

Protected Member Functions

 DtIndirectTextureProcessor (DtDe &de, const DtIndirectLimitTextureStrategy &indirectLimitTextureStrategy)
 
virtual void addTexturesToLoad (const DtIndirectGeometryTextures *osgGeometryTextures)
 
virtual void addTextureToLoad (osg::Texture *texture, int flags)
 
virtual osg::Operation * createTextureLoadJob ()
 
virtual void printStats (void) const
 

Protected Attributes

SetTexturesAndFlags myMutableTexturesToLoad
 
SetTexturesAndFlags myMutableTexturesLoading
 
SetTexturesAndFlags myMutableTexturesLoaded
 
SetTextures myMutableTexturesFailed
 
float myTextureLoadTimeSlicePeriod
 
tbb::atomic< boolmyInJobQueue
 
unsigned int myTexturesUpdatedFrameNum
 
unsigned int myLastFrameNumber
 
bool myStopWork
 
OpenThreads::Mutex myWorkMutex
 
boost::condition_variable myWaitCondition
 
DtIndirectTextureResidencyManagermyTextureResidencyManager
 
DtDemyDe
 
DtIndirectGlTextureObjectManagermyIndirectTextureObjectManager
 
const
DtIndirectLimitTextureStrategy
myIndirectLimitTextureStrategy
 

Private Member Functions

 DtIndirectTextureProcessor ()=delete
 
 DtIndirectTextureProcessor (const DtIndirectTextureProcessor &other)=delete
 
DtIndirectTextureProcessoroperator= (const DtIndirectTextureProcessor &other)=delete
 

Friends

class DtIndirectTextureLoadJob
 

Member Typedef Documentation

typedef std::set<osg::ref_ptr<osg::Texture> > makVrv::DtIndirectTextureProcessor::SetTextures
protected
typedef std::map<osg::ref_ptr<osg::Texture>, int > makVrv::DtIndirectTextureProcessor::SetTexturesAndFlags
protected

Constructor & Destructor Documentation

virtual makVrv::DtIndirectTextureProcessor::~DtIndirectTextureProcessor ( )
virtual

destructor

makVrv::DtIndirectTextureProcessor::DtIndirectTextureProcessor ( DtDe de,
const DtIndirectLimitTextureStrategy indirectLimitTextureStrategy 
)
protected

CTOR.

makVrv::DtIndirectTextureProcessor::DtIndirectTextureProcessor ( )
privatedelete

cannot create without DtDe

makVrv::DtIndirectTextureProcessor::DtIndirectTextureProcessor ( const DtIndirectTextureProcessor other)
privatedelete

Copy Constructor not implemented – Copy Not Allowed.

Member Function Documentation

DtIndirectTextureProcessor& makVrv::DtIndirectTextureProcessor::operator= ( const DtIndirectTextureProcessor other)
privatedelete

Assignment Operator Not implemented – Assignment Not Allowed.

virtual void makVrv::DtIndirectTextureProcessor::launchTextureLoadsIfNecessary ( DtOsgRenderer renderer)
virtual

called by cull thread and pager threads to starts the job in the main thread if there is anything to load

virtual void makVrv::DtIndirectTextureProcessor::ts_addTexturesToLoad ( int  beforeTextureIndex,
int  afterTextureIndex,
VectorIndirectGeometryTexturesRefPtrs textures 
)
virtual

adds textures myWorkMutex is used as a guard internally.

virtual void makVrv::DtIndirectTextureProcessor::ts_addTextureToLoad ( osg::Texture *  texture,
int  flags 
)
virtual

thread safe function for adding a single osg texture to the list of textures to load.

virtual void makVrv::DtIndirectTextureProcessor::ts_unloadTextures ( const std::set< osg::ref_ptr< osg::Texture > > &  texturesToUnload)
virtual

thread safe function for unloading a specific set of textures loaded here (used by gt)

virtual void makVrv::DtIndirectTextureProcessor::ts_moveToToLoadIfNotInToLoadOrLoadingOrNotLoaded ( const std::map< osg::ref_ptr< osg::Texture >, int > &  texturesToUnload)
virtual

thread safe function for reloading a specific set of textures (previously loaded here) (used by gt)

virtual unsigned int makVrv::DtIndirectTextureProcessor::streamTexturesToGpu ( const osg::RenderInfo &  renderInfo)
virtual

Called by jobs system job to actually send the texture data down.

virtual unsigned int makVrv::DtIndirectTextureProcessor::texturesUpdatedFrameNum ( ) const
virtual

gets the last frame that the textures were updated in

virtual int makVrv::DtIndirectTextureProcessor::numTexturesRemaining ( ) const
virtual

get the number of textures that are still needing to be loaded or in the process of loading.

virtual void makVrv::DtIndirectTextureProcessor::releaseGLObjects ( osg::State *  state) const
virtual

release internal gl data.

virtual void makVrv::DtIndirectTextureProcessor::stopWork ( )
virtual

stops the texture loading job

virtual int makVrv::DtIndirectTextureProcessor::numTexturesToLoad ( ) const
virtual

helps figure out if there's still work to do returns the number of textures yet to load

virtual int makVrv::DtIndirectTextureProcessor::numTexturesLoading ( ) const
virtual

helps figure out if there's still work to do returns the number of textures still loading

virtual bool makVrv::DtIndirectTextureProcessor::texureFailed ( osg::Texture *  texture) const
virtual

check to see if a particular texture falied to load.

virtual bool makVrv::DtIndirectTextureProcessor::inJobQueue ( ) const
virtual

is texture processor still running in the main thread job system?

virtual boost::condition_variable& makVrv::DtIndirectTextureProcessor::waitCondition ( )
virtual

used as sync point between CDB background pagers and indirect system

virtual bool makVrv::DtIndirectTextureProcessor::inTextureToGCMap ( const osg::GraphicsContext *  graphicsContext,
unsigned int  textureObject 
) const
virtual

Check if we have already added a texture object to our list of textures object by graphics context if we have already added then return true.

virtual bool makVrv::DtIndirectTextureProcessor::readyForBindless ( const DtIndirectGlTextureObject indirectGlTextureObject,
const osg::GraphicsContext *  graphicsContext 
) const
virtual

whether a valid gl texture object and resident in the given graphics context

virtual void makVrv::DtIndirectTextureProcessor::makeTexturesResidentIfNeeded ( const osg::GraphicsContext *  graphicsContext) const
virtual

makes textures ready for bindless.

virtual void makVrv::DtIndirectTextureProcessor::setTextureLoadTimeSlicePeriod ( float  period)
virtual

Set the time slice period/budget to load textures per tick (in seconds). Textures are loaded in incrementally in time slices. In a tick, if the time taken to load texture(s) exceeds the time slice period/budget, the remainder textures are loaded in the subsequent ticks (again in time slices). Default value is 2ms (0.002 seconds)

virtual float makVrv::DtIndirectTextureProcessor::textureLoadTimeSlicePeriod ( void  ) const
virtual

Set the time slice period/budget to load textures per tick (in seconds). Textures are loaded in incrementally in time slices. In a tick, if the time taken to load texture(s) exceeds the time slice period/budget, the remainder textures are loaded in the subsequent ticks (again in time slices). Default value is 2ms (0.002 seconds)

virtual DtIndirectGlTextureObject* makVrv::DtIndirectTextureProcessor::getTextureObject ( osg::ref_ptr< osg::Texture >  osgTexture,
int  flags 
) const
virtual

get the gl texture object corresponding to this osg::Texture (that was loaded here) If the texture is still loading internally, nullptr is returned

virtual void makVrv::DtIndirectTextureProcessor::addTexturesToLoad ( const DtIndirectGeometryTextures osgGeometryTextures)
protectedvirtual

Add the DtIndirectGeometryTextures to the list of textures to load. Called by ts_addTexturesToLoad.

virtual void makVrv::DtIndirectTextureProcessor::addTextureToLoad ( osg::Texture *  texture,
int  flags 
)
protectedvirtual

adds an individual texture to the queue

virtual osg::Operation* makVrv::DtIndirectTextureProcessor::createTextureLoadJob ( )
protectedvirtual

creates a job for the main thread to run

virtual void makVrv::DtIndirectTextureProcessor::printStats ( void  ) const
protectedvirtual

for debugging. print textures to load, loading loaded, failed

Friends And Related Function Documentation

friend class DtIndirectTextureLoadJob
friend

so that the job can access/mark the above atomic

Member Data Documentation

friend makVrv::DtIndirectTextureProcessor::DtIndirectTextureProcessorCreator

The creator class needs to be a friend so it can create this class.

SetTexturesAndFlags makVrv::DtIndirectTextureProcessor::myMutableTexturesToLoad
mutableprotected
SetTexturesAndFlags makVrv::DtIndirectTextureProcessor::myMutableTexturesLoading
mutableprotected
SetTexturesAndFlags makVrv::DtIndirectTextureProcessor::myMutableTexturesLoaded
mutableprotected
SetTextures makVrv::DtIndirectTextureProcessor::myMutableTexturesFailed
mutableprotected
float makVrv::DtIndirectTextureProcessor::myTextureLoadTimeSlicePeriod
protected

time slice period to load textures

tbb::atomic<bool> makVrv::DtIndirectTextureProcessor::myInJobQueue
protected
unsigned int makVrv::DtIndirectTextureProcessor::myTexturesUpdatedFrameNum
mutableprotected
unsigned int makVrv::DtIndirectTextureProcessor::myLastFrameNumber
protected
bool makVrv::DtIndirectTextureProcessor::myStopWork
protected
OpenThreads::Mutex makVrv::DtIndirectTextureProcessor::myWorkMutex
mutableprotected
boost::condition_variable makVrv::DtIndirectTextureProcessor::myWaitCondition
protected
DtIndirectTextureResidencyManager* makVrv::DtIndirectTextureProcessor::myTextureResidencyManager
protected

handle residency, textures as contexts get created/destroyed

DtDe& makVrv::DtIndirectTextureProcessor::myDe
protected
DtIndirectGlTextureObjectManager& makVrv::DtIndirectTextureProcessor::myIndirectTextureObjectManager
protected

cached reference to the de keyed texture object manager

const DtIndirectLimitTextureStrategy& makVrv::DtIndirectTextureProcessor::myIndirectLimitTextureStrategy
protected

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

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)