26 #include <eq/visitorResult.h> 28 #include <co/objectVersion.h> 29 #include <eq/fabric/pipe.h> 37 class ThreadAffinityVisitor;
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,
const Eye eye,
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;
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);
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
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.
Base data transport class for pipes.
An interface to process system messages or events.
The interface definition for system-specific GPU handling.
The Equalizer client library.
lunchbox::RefPtr< Client > ClientPtr
A reference-counted pointer to an eq::Client.
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.