23 #include <eq/client/api.h>
24 #include <eq/client/eye.h>
25 #include <eq/client/types.h>
26 #include <eq/client/visitorResult.h>
28 #include <eq/fabric/pipe.h>
29 #include <co/objectVersion.h>
33 namespace detail {
class Pipe;
class RenderThread;
class ThreadAffinityVisitor; }
52 EQ_API
virtual ~Pipe();
56 EQ_API co::CommandQueue* getPipeThreadQueue();
57 co::CommandQueue* getMainThreadQueue();
58 co::CommandQueue* getCommandThreadQueue();
59 co::CommandQueue* getTransferThreadQueue();
93 EQ_API uint32_t getFinishedFrame()
const;
121 Frame* getFrame(
const co::ObjectVersion& frameVersion,
122 const Eye eye,
const bool output );
125 co::QueueSlave* getQueue(
const UUID& queueID );
131 const View* getView(
const co::ObjectVersion& viewVersion )
const;
134 View* getView(
const co::ObjectVersion& viewVersion );
137 void waitExited()
const;
147 EQ_API
void waitFrameFinished(
const uint32_t frameNumber )
const;
156 EQ_API
void waitFrameLocal(
const uint32_t frameNumber )
const;
180 bool startTransferThread();
183 bool hasTransferThread()
const;
242 EQ_API
virtual void setDirty(
const uint64_t bits );
253 EQ_API
void startFrame(
const uint32_t frameNumber );
310 EQ_API
virtual bool configInit(
const uint128_t& initID );
343 EQ_API
virtual void frameStart(
const uint128_t& frameID,
344 const uint32_t frameNumber );
360 EQ_API
virtual void frameFinish(
const uint128_t& frameID,
361 const uint32_t frameNumber );
374 const uint32_t frameNumber );
377 EQ_API
virtual void attach(
const UUID&
id,
const uint32_t instanceID );
380 detail::Pipe*
const _impl;
381 friend class detail::RenderThread;
384 void _setupCommandQueue();
385 void _setupAffinity();
386 void _exitCommandQueue();
389 EQ_API int32_t _getAutoAffinity()
const;
390 friend class detail::ThreadAffinityVisitor;
394 void _stopTransferThread();
397 void _releaseViews();
406 bool _cmdCreateWindow( co::ICommand& command );
407 bool _cmdDestroyWindow( co::ICommand& command );
408 bool _cmdConfigInit( co::ICommand& command );
409 bool _cmdConfigExit( co::ICommand& command );
410 bool _cmdFrameStartClock( co::ICommand& command );
411 bool _cmdFrameStart( co::ICommand& command );
412 bool _cmdFrameFinish( co::ICommand& command );
413 bool _cmdFrameDrawFinish( co::ICommand& command );
414 bool _cmdExitThread( co::ICommand& command );
415 bool _cmdDetachView( co::ICommand& command );
416 bool _cmdExitTransferThread( co::ICommand& command );
418 LB_TS_VAR( _pipeThread );
A configuration is a visualization session driven by an application.
Event structure to report window system and other events.
Base data transport class for pipes.
void startFrame(const uint32_t frameNumber)
Start a frame by unlocking all child resources.
void setSystemPipe(SystemPipe *pipe)
Set the system-specific pipe implementation.
virtual void frameStart(const uint128_t &frameID, const uint32_t frameNumber)
Start rendering a frame.
SystemPipe * getSystemPipe()
A View is a 2D area of a Layout.
virtual void frameFinish(const uint128_t &frameID, const uint32_t frameNumber)
Finish rendering a frame.
A Node represents a single computer in the cluster.
A facility class to manage OpenGL objects across shared contexts.
A Pipe represents a graphics card (GPU) on a Node.
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
void setComputeContext(ComputeContext *ctx)
Set the compute-specific context.
virtual WindowSystem selectWindowSystem() const
Choose the window system to be used by this pipe.
MessagePump * getMessagePump()
void releaseFrameLocal(const uint32_t frameNumber)
Release the local synchronization of the parent for a frame.
A holder for a frame data and related parameters.
lunchbox::RefPtr< Client > ClientPtr
A reference-counted pointer to an eq::Client.
The interface definition for system-specific GPU handling.
virtual bool supportsWindowSystem(const WindowSystem ws) const
Tests wether a particular windowing system is supported by this pipe and all its windows.
void releaseFrame(const uint32_t frameNumber)
Signal the completion of a frame to the parent.
virtual bool configInitSystemPipe(const uint128_t &initID)
Initialize the OS-specific pipe.
virtual bool configInit(const uint128_t &initID)
Initialize this pipe.
Pipe(Node *parent)
Construct a new pipe.
virtual MessagePump * createMessagePump()
Create a new MessagePump for this pipe.
An interface to process system messages or events.
WindowSystem getWindowSystem() const
Return the window system used by this pipe.
virtual void frameDrawFinish(const uint128_t &frameID, const uint32_t frameNumber)
Finish drawing.
virtual bool processEvent(const Event &event)
Process a received event.
uint32_t getCurrentFrame() const
Return the current frame number.
virtual bool configExit()
De-initialize this pipe.
virtual ~Pipe()
Destruct the pipe.
const ComputeContext * getComputeContext() const
The interface definition for API-specific GPGPU handling.
The list of possible window systems.