14#ifndef OSGUTIL_INCREMENTALCOMPILEOPERATOR
15#define OSGUTIL_INCREMENTALCOMPILEOPERATOR
45 bool empty()
const {
return _textures.empty() && _programs.empty() && _drawables.empty(); }
62 bool isActive()
const {
return !_contexts.empty(); }
124 typedef std::vector<osg::GraphicsContext*>
Contexts;
166 if (compileAll)
return true;
167 if (maxNumObjectsToCompile==0)
return false;
168 return (allocatedTime - timer.elapsedTime()) >= estimatedTimeForCompile;
217 bool empty()
const {
return _compileOps.empty(); }
247 _subgraphToCompile(subgraphToCompile) {}
250 _attachmentPoint(attachmentPoint),
251 _subgraphToCompile(subgraphToCompile) {}
258 bool compiled()
const {
return _numberCompileListsToCompile==0; }
266 typedef std::map<osg::GraphicsContext*, CompileList >
CompileMap;
This class provides an atomic increment and decrement operation.
Definition Atomic:48
This class provides an object-oriented thread mutex interface.
Definition Mutex:31
unsigned int Mode
Definition GLObjectsVisitor:48
Definition IncrementalCompileOperation:212
bool compile(CompileInfo &compileInfo)
std::list< osg::ref_ptr< CompileOp > > CompileOps
Definition IncrementalCompileOperation:227
void add(CompileOp *compileOp)
void add(osg::Program *program)
Definition IncrementalCompileOperation:221
void add(osg::Drawable *drawable)
Definition IncrementalCompileOperation:219
bool empty() const
Definition IncrementalCompileOperation:217
CompileOps _compileOps
Definition IncrementalCompileOperation:228
void add(osg::Texture *texture)
Definition IncrementalCompileOperation:220
double estimatedTimeForCompile(CompileInfo &compileInfo) const
Definition IncrementalCompileOperation:242
std::map< osg::GraphicsContext *, CompileList > CompileMap
Definition IncrementalCompileOperation:266
osg::ref_ptr< osg::Node > _subgraphToCompile
Definition IncrementalCompileOperation:263
OpenThreads::Atomic _numberCompileListsToCompile
Definition IncrementalCompileOperation:260
CompileSet(osg::Group *attachmentPoint, osg::Node *subgraphToCompile)
Definition IncrementalCompileOperation:249
CompileSet(osg::Node *subgraphToCompile)
Definition IncrementalCompileOperation:246
osg::observer_ptr< osg::Group > _attachmentPoint
Definition IncrementalCompileOperation:262
void buildCompileMap(ContextSet &contexts, GLObjectsVisitor::Mode mode=GLObjectsVisitor::COMPILE_DISPLAY_LISTS|GLObjectsVisitor::COMPILE_STATE_ATTRIBUTES)
CompileSet()
Definition IncrementalCompileOperation:244
bool compile(CompileInfo &compileInfo)
osg::ref_ptr< osg::Object > _markerObject
Definition IncrementalCompileOperation:269
void buildCompileMap(ContextSet &contexts, StateToCompile &stateToCompile)
bool compiled() const
Definition IncrementalCompileOperation:258
osg::ref_ptr< CompileCompletedCallback > _compileCompletedCallback
Definition IncrementalCompileOperation:264
virtual ~CompileSet()
Definition IncrementalCompileOperation:273
CompileMap _compileMap
Definition IncrementalCompileOperation:267
Definition IncrementalCompileOperation:56
unsigned int _compileAllTillFrameNumber
Definition IncrementalCompileOperation:313
unsigned int _maximumNumOfObjectsToCompilePerFrame
Definition IncrementalCompileOperation:308
void mergeCompiledSubgraphs(const osg::FrameStamp *frameStamp)
double getTargetFrameRate() const
Definition IncrementalCompileOperation:82
double getMinimumTimeAvailableForGLCompileAndDeletePerFrame() const
Definition IncrementalCompileOperation:91
bool isActive() const
Definition IncrementalCompileOperation:62
void addGraphicsContext(osg::GraphicsContext *gc)
IncrementalCompileOperation()
void add(osg::Node *subgraphToCompile)
ContextSet _contexts
Definition IncrementalCompileOperation:323
OpenThreads::Mutex * getToCompiledMutex()
Definition IncrementalCompileOperation:290
unsigned int getCompileAllTillFrameNumber() const
Definition IncrementalCompileOperation:153
CompileSets _compiled
Definition IncrementalCompileOperation:321
std::list< osg::ref_ptr< CompileSet > > CompileSets
Definition IncrementalCompileOperation:276
ContextSet & getContextSet()
Definition IncrementalCompileOperation:132
const osg::Object * getMarkerObject() const
Definition IncrementalCompileOperation:298
void assignForceTextureDownloadGeometry()
void setCurrentFrameNumber(unsigned int fn)
Definition IncrementalCompileOperation:143
void setFlushTimeRatio(double ratio)
Definition IncrementalCompileOperation:104
OpenThreads::Mutex * getCompiledMutex()
Definition IncrementalCompileOperation:293
osg::Geometry * getForceTextureDownloadGeometry()
Definition IncrementalCompileOperation:121
void setMinimumTimeAvailableForGLCompileAndDeletePerFrame(double ta)
Definition IncrementalCompileOperation:87
bool requiresCompile(StateToCompile &stateToCompile)
osg::ref_ptr< osg::Object > _markerObject
Definition IncrementalCompileOperation:325
void add(osg::Group *attachmentPoint, osg::Node *subgraphToCompile)
void setTargetFrameRate(double tfr)
Definition IncrementalCompileOperation:79
unsigned int _currentFrameNumber
Definition IncrementalCompileOperation:312
double _targetFrameRate
Definition IncrementalCompileOperation:306
double _conservativeTimeRatio
Definition IncrementalCompileOperation:310
void setCompileAllTillFrameNumber(unsigned int fn)
Definition IncrementalCompileOperation:152
void setForceTextureDownloadGeometry(osg::Geometry *geom)
Definition IncrementalCompileOperation:120
void compileAllForNextFrame(unsigned int numFramesToDoCompileAll=1)
double getFlushTimeRatio() const
Definition IncrementalCompileOperation:105
std::set< osg::GraphicsContext * > ContextSet
Definition IncrementalCompileOperation:131
osg::ref_ptr< osg::Geometry > _forceTextureDownloadGeometry
Definition IncrementalCompileOperation:315
OpenThreads::Mutex _toCompileMutex
Definition IncrementalCompileOperation:317
osg::Object * getMarkerObject()
Definition IncrementalCompileOperation:297
void remove(CompileSet *compileSet)
void setMaximumNumOfObjectsToCompilePerFrame(unsigned int num)
Definition IncrementalCompileOperation:96
void setMarkerObject(osg::Object *mo)
Definition IncrementalCompileOperation:296
CompileSets _toCompile
Definition IncrementalCompileOperation:318
double _minimumTimeAvailableForGLCompileAndDeletePerFrame
Definition IncrementalCompileOperation:307
void setConservativeTimeRatio(double ratio)
Definition IncrementalCompileOperation:111
void removeContexts(Contexts &contexts)
std::vector< osg::GraphicsContext * > Contexts
Definition IncrementalCompileOperation:124
double _flushTimeRatio
Definition IncrementalCompileOperation:309
void assignContexts(Contexts &contexts)
const osg::Geometry * getForceTextureDownloadGeometry() const
Definition IncrementalCompileOperation:122
const ContextSet & getContextSet() const
Definition IncrementalCompileOperation:133
unsigned int getCurrentFrameNumber() const
Definition IncrementalCompileOperation:144
unsigned int getMaximumNumOfObjectsToCompilePerFrame() const
Definition IncrementalCompileOperation:99
OpenThreads::Mutex _compiledMutex
Definition IncrementalCompileOperation:320
CompileSets & getCompiled()
Definition IncrementalCompileOperation:294
void compileSets(CompileSets &toCompile, CompileInfo &compileInfo)
void add(CompileSet *compileSet, bool callBuildCompileMap=true)
void removeGraphicsContext(osg::GraphicsContext *gc)
double getConservativeTimeRatio() const
Definition IncrementalCompileOperation:112
CompileSets & getToCompile()
Definition IncrementalCompileOperation:291
virtual ~IncrementalCompileOperation()
Definition IncrementalCompileOperation:24
std::set< osg::Drawable * > DrawableSet
Definition IncrementalCompileOperation:29
std::set< osg::StateSet * > StateSetSet
Definition IncrementalCompileOperation:30
osg::ref_ptr< osg::PixelBufferObject > _pbo
Definition IncrementalCompileOperation:42
StateToCompile(GLObjectsVisitor::Mode mode, osg::Object *markerObject)
ProgramSet _programs
Definition IncrementalCompileOperation:40
bool empty() const
Definition IncrementalCompileOperation:45
virtual void apply(osg::Texture &texture)
virtual void apply(osg::Node &node)
DrawableSet _drawablesHandled
Definition IncrementalCompileOperation:34
virtual void apply(osg::Drawable &drawable)
bool _assignPBOToImages
Definition IncrementalCompileOperation:41
GLObjectsVisitor::Mode _mode
Definition IncrementalCompileOperation:37
osg::ref_ptr< osg::Object > _markerObject
Definition IncrementalCompileOperation:43
std::set< osg::Program * > ProgramSet
Definition IncrementalCompileOperation:32
DrawableSet _drawables
Definition IncrementalCompileOperation:38
virtual void apply(osg::StateSet &stateset)
TextureSet _textures
Definition IncrementalCompileOperation:39
StateSetSet _statesetsHandled
Definition IncrementalCompileOperation:35
std::set< osg::Texture * > TextureSet
Definition IncrementalCompileOperation:31
Definition GraphicsContext:30
Definition NodeVisitor:82
Definition osg/Program:52
Definition observer_ptr:39
Shader generator framework.
Definition NodeVisitor:25
#define OSGUTIL_EXPORT
Definition osgUtil/Export:40
Definition IncrementalCompileOperation:235
virtual bool compileCompleted(CompileSet *compileSet)=0
Definition IncrementalCompileOperation:188
osg::ref_ptr< osg::Drawable > _drawable
Definition IncrementalCompileOperation:192
bool compile(CompileInfo &compileInfo)
double estimatedTimeForCompile(CompileInfo &compileInfo) const
CompileDrawableOp(osg::Drawable *drawable)
Definition IncrementalCompileOperation:161
IncrementalCompileOperation * incrementalCompileOperation
Definition IncrementalCompileOperation:171
CompileInfo(osg::GraphicsContext *context, IncrementalCompileOperation *ico)
unsigned int maxNumObjectsToCompile
Definition IncrementalCompileOperation:174
bool okToCompile(double estimatedTimeForCompile=0.0) const
Definition IncrementalCompileOperation:164
osg::ElapsedTime timer
Definition IncrementalCompileOperation:176
double allocatedTime
Definition IncrementalCompileOperation:175
bool compileAll
Definition IncrementalCompileOperation:173
Definition IncrementalCompileOperation:180
virtual double estimatedTimeForCompile(CompileInfo &compileInfo) const =0
virtual bool compile(CompileInfo &compileInfo)=0
Definition IncrementalCompileOperation:204
CompileProgramOp(osg::Program *program)
double estimatedTimeForCompile(CompileInfo &compileInfo) const
bool compile(CompileInfo &compileInfo)
osg::ref_ptr< osg::Program > _program
Definition IncrementalCompileOperation:208
Definition IncrementalCompileOperation:196
bool compile(CompileInfo &compileInfo)
CompileTextureOp(osg::Texture *texture)
double estimatedTimeForCompile(CompileInfo &compileInfo) const
osg::ref_ptr< osg::Texture > _texture
Definition IncrementalCompileOperation:200
Definition GraphicsThread:36