26 #include <eq/visitorResult.h> 28 #include <eq/fabric/pipe.h> 29 #include <co/objectVersion.h> 37 class ThreadAffinityVisitor;
54 EQ_API
explicit Pipe(
Node* parent );
57 EQ_API
virtual ~Pipe();
61 EQ_API co::CommandQueue* getPipeThreadQueue();
62 co::CommandQueue* getMainThreadQueue();
63 co::CommandQueue* getCommandThreadQueue();
64 co::CommandQueue* getTransferThreadQueue();
81 bool isRunning()
const;
87 EQ_API
bool isStopped()
const;
96 EQ_API uint32_t getCurrentFrame()
const;
97 EQ_API uint32_t getFinishedFrame()
const;
124 Frame* getFrame(
const co::ObjectVersion& frameVersion,
125 const Eye eye,
const bool output );
128 co::QueueSlave* getQueue(
const uint128_t& queueID );
134 const View* getView(
const co::ObjectVersion& viewVersion )
const;
137 View* getView(
const co::ObjectVersion& viewVersion );
140 void waitExited()
const;
150 EQ_API
void waitFrameFinished(
const uint32_t frameNumber );
158 EQ_API EventOCommand sendError(
const uint32_t error );
167 EQ_API
void waitFrameLocal(
const uint32_t frameNumber )
const;
169 EQ_API
bool processEvent( Statistic& event );
180 bool startTransferThread();
183 QThread* getTransferQThread();
186 bool hasTransferThread()
const;
200 EQ_API
void setSystemPipe(
SystemPipe* pipe );
206 EQ_API
const SystemPipe* getSystemPipe()
const;
230 EQ_API
virtual void setDirty(
const uint64_t bits );
240 EQ_API
bool isWindowSystemAvailable(
const std::string& name )
const;
251 EQ_API
void startFrame(
const uint32_t frameNumber );
259 EQ_API
void releaseFrame(
const uint32_t frameNumber );
267 EQ_API
void releaseFrameLocal(
const uint32_t frameNumber );
294 EQ_API
virtual bool configInit(
const uint128_t& initID );
302 EQ_API
virtual bool configInitSystemPipe(
const uint128_t& initID );
308 EQ_API
virtual bool configExit();
326 EQ_API
virtual void frameStart(
const uint128_t& frameID,
327 const uint32_t frameNumber );
343 EQ_API
virtual void frameFinish(
const uint128_t& frameID,
344 const uint32_t frameNumber );
356 EQ_API
virtual void frameDrawFinish(
const uint128_t& frameID,
357 const uint32_t frameNumber );
360 EQ_API
virtual void attach(
const uint128_t&
id,
const uint32_t instanceID );
363 detail::Pipe*
const _impl;
364 friend class detail::RenderThread;
367 void _setupCommandQueue();
368 void _setupAffinity();
369 void _exitCommandQueue();
372 EQ_API int32_t _getAutoAffinity()
const;
373 friend class detail::ThreadAffinityVisitor;
377 void _stopTransferThread();
380 void _releaseViews();
389 bool _cmdCreateWindow( co::ICommand& command );
390 bool _cmdDestroyWindow( co::ICommand& command );
391 bool _cmdConfigInit( co::ICommand& command );
392 bool _cmdConfigExit( co::ICommand& command );
393 bool _cmdFrameStartClock( co::ICommand& command );
394 bool _cmdFrameStart( co::ICommand& command );
395 bool _cmdFrameFinish( co::ICommand& command );
396 bool _cmdFrameDrawFinish( co::ICommand& command );
397 bool _cmdExitThread( co::ICommand& command );
398 bool _cmdDetachView( co::ICommand& command );
399 bool _cmdExitTransferThread( co::ICommand& command );
401 LB_TS_VAR( _pipeThread );
A configuration is a visualization session driven by an application.
A Pipe represents a graphics card (GPU) on a Node.
A Node represents a single computer in the cluster.
EQ_API Config * getConfig(const int argc, char **argv)
Convenience function to retrieve a configuration.
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
Base data transport class for pipes.
An interface to process system messages or events.
The interface definition for system-specific GPU handling.
lunchbox::RefPtr< Client > ClientPtr
A reference-counted pointer to an eq::Client.
The Equalizer client library.
A View is a 2D area of a Layout.
A facility class to manage OpenGL objects across shared contexts.
A holder for a frame data and related parameters.