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();
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;
191 bool startTransferThread();
194 QThread* getTransferQThread();
197 bool hasTransferThread()
const;
241 EQ_API
virtual void setDirty(
const uint64_t bits );
262 EQ_API
void startFrame(
const uint32_t frameNumber );
305 EQ_API
virtual bool configInit(
const uint128_t& initID );
337 EQ_API
virtual void frameStart(
const uint128_t& frameID,
338 const uint32_t frameNumber );
354 EQ_API
virtual void frameFinish(
const uint128_t& frameID,
355 const uint32_t frameNumber );
368 const uint32_t frameNumber );
371 EQ_API
virtual void attach(
const uint128_t&
id,
const uint32_t instanceID );
374 detail::Pipe*
const _impl;
375 friend class detail::RenderThread;
378 void _setupCommandQueue();
379 void _setupAffinity();
380 void _exitCommandQueue();
383 EQ_API int32_t _getAutoAffinity()
const;
384 friend class detail::ThreadAffinityVisitor;
388 void _stopTransferThread();
391 void _releaseViews();
400 bool _cmdCreateWindow( co::ICommand& command );
401 bool _cmdDestroyWindow( co::ICommand& command );
402 bool _cmdConfigInit( co::ICommand& command );
403 bool _cmdConfigExit( co::ICommand& command );
404 bool _cmdFrameStartClock( co::ICommand& command );
405 bool _cmdFrameStart( co::ICommand& command );
406 bool _cmdFrameFinish( co::ICommand& command );
407 bool _cmdFrameDrawFinish( co::ICommand& command );
408 bool _cmdExitThread( co::ICommand& command );
409 bool _cmdDetachView( co::ICommand& command );
410 bool _cmdExitTransferThread( co::ICommand& command );
412 LB_TS_VAR( _pipeThread );
virtual EQ_API WindowSystem selectWindowSystem() const
Choose the window system to be used by this pipe.
MessagePump * getMessagePump()
EQ_API ServerPtr getServer()
EQ_API void releaseFrameLocal(const uint32_t frameNumber)
Release the local synchronization of the parent for a frame.
A configuration is a visualization session driven by an application.
EQ_API uint32_t getCurrentFrame() const
Return the current frame number.
virtual EQ_API bool processEvent(const Event &event)
Process a received event.
EQ_API EventOCommand sendError(const uint32_t error)
Send a pipe error event to the application node.
virtual EQ_API bool configInit(const uint128_t &initID)
Initialize this pipe.
EQ_API bool isStopped() const
A Pipe represents a graphics card (GPU) on a Node.
A Node represents a single computer in the cluster.
virtual EQ_API bool configInitSystemPipe(const uint128_t &initID)
Initialize the OS-specific pipe.
virtual EQ_API bool configExit()
De-initialize this pipe.
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
EQ_API Config * getConfig()
Base data transport class for pipes.
EQ_API void releaseFrame(const uint32_t frameNumber)
Signal the completion of a frame to the parent.
An interface to process system messages or events.
The interface definition for system-specific GPU handling.
EQ_API void setSystemPipe(SystemPipe *pipe)
Set the system-specific pipe implementation.
virtual EQ_API void frameDrawFinish(const uint128_t &frameID, const uint32_t frameNumber)
Finish drawing.
EQ_API ClientPtr getClient()
lunchbox::RefPtr< Client > ClientPtr
A reference-counted pointer to an eq::Client.
virtual EQ_API MessagePump * createMessagePump()
Create a new MessagePump for this pipe.
The Equalizer client library.
A View is a 2D area of a Layout.
virtual EQ_API void frameFinish(const uint128_t &frameID, const uint32_t frameNumber)
Finish rendering a frame.
A facility class to manage OpenGL objects across shared contexts.
virtual EQ_API void frameStart(const uint128_t &frameID, const uint32_t frameNumber)
Start rendering a frame.
EQ_API WindowSystem getWindowSystem() const
Return the window system used by this pipe.
virtual EQ_API ~Pipe()
Destruct the pipe.
EQ_API void startFrame(const uint32_t frameNumber)
Start a frame by unlocking all child resources.
A holder for a frame data and related parameters.
EQ_API SystemPipe * getSystemPipe()
EQ_API bool isWindowSystemAvailable(const std::string &name) const
EQ_API Pipe(Node *parent)
Construct a new pipe.