Equalizer
1.13.0
Parallel Rendering Framework
|
A Pipe represents a graphics card (GPU) on a Node. More...
#include <pipe.h>
Public Member Functions | |
EQ_API | Pipe (Node *parent) |
Construct a new pipe. More... | |
virtual EQ_API | ~Pipe () |
Destruct the pipe. More... | |
void | waitExited () const |
void | notifyMapped () |
EQ_API void | waitFrameFinished (const uint32_t frameNumber) |
EQ_API EventOCommand | sendError (const uint32_t error) |
Send a pipe error event to the application node. More... | |
EQ_API void | waitFrameLocal (const uint32_t frameNumber) const |
virtual EQ_API bool | processEvent (const Event &event) |
Process a received event. More... | |
void | startThread () |
void | exitThread () |
void | cancelThread () |
bool | startTransferThread () |
QThread * | getTransferQThread () |
bool | hasTransferThread () const |
virtual EQ_API void | setDirty (const uint64_t bits) |
Data Access. | |
EQ_API co::CommandQueue * | getPipeThreadQueue () |
co::CommandQueue * | getMainThreadQueue () |
co::CommandQueue * | getCommandThreadQueue () |
co::CommandQueue * | getTransferThreadQueue () |
EQ_API Config * | getConfig () |
EQ_API const Config * | getConfig () const |
EQ_API ClientPtr | getClient () |
EQ_API ServerPtr | getServer () |
bool | isRunning () const |
EQ_API bool | isStopped () const |
EQ_API uint32_t | getCurrentFrame () const |
Return the current frame number. More... | |
EQ_API uint32_t | getFinishedFrame () const |
EQ_API WindowSystem | getWindowSystem () const |
Return the window system used by this pipe. More... | |
Interface to and from the SystemPipe, the window-system | |
specific pieces for a pipe. | |
EQ_API void | setSystemPipe (SystemPipe *pipe) |
Set the system-specific pipe implementation. More... | |
EQ_API SystemPipe * | getSystemPipe () |
EQ_API const SystemPipe * | getSystemPipe () const |
Configuration. | |
virtual EQ_API MessagePump * | createMessagePump () |
Create a new MessagePump for this pipe. More... | |
MessagePump * | getMessagePump () |
Public Member Functions inherited from eq::fabric::Pipe< Node, Pipe, eq::Window, PipeVisitor > | |
Node * | getNode () |
const Node * | getNode () const |
const Windows & | getWindows () const |
uint32_t | getPort () const |
Returns the port number of this pipe. More... | |
EQFABRIC_INL void | setPort (const uint32_t port) |
uint32_t | getDevice () const |
Returns the device number of this pipe. More... | |
EQFABRIC_INL void | setDevice (const uint32_t device) |
const PixelViewport & | getPixelViewport () const |
EQFABRIC_INL void | setPixelViewport (const PixelViewport &pvp) |
Set the pipe's pixel viewport. More... | |
void | notifyPixelViewportChanged () |
EQFABRIC_INL PipePath | getPath () const |
EQFABRIC_INL VisitorResult | accept (PipeVisitor &visitor) |
Perform a depth-first traversal of this pipe. More... | |
EQFABRIC_INL VisitorResult | accept (PipeVisitor &visitor) const |
Const-version of accept(). More... | |
virtual EQFABRIC_INL void | backup () |
virtual EQFABRIC_INL void | restore () |
void | create (eq::Window **window) |
void | release (eq::Window *window) |
virtual void | output (std::ostream &) const |
virtual EQFABRIC_INL uint128_t | commit (const uint32_t incarnation=CO_COMMIT_NEXT) |
EQFABRIC_INL void | setIAttribute (const IAttribute attr, const int32_t value) |
int32_t | getIAttribute (const IAttribute attr) const |
bool | isThreaded () const |
Public Member Functions inherited from eq::fabric::Object | |
virtual EQFABRIC_API bool | isDirty () const |
virtual EQFABRIC_API void | setName (const std::string &name) |
Set the name of the object. More... | |
EQFABRIC_API const std::string & | getName () const |
EQFABRIC_API void | setUserData (co::Object *userData) |
Set user-specific data. More... | |
EQFABRIC_API co::Object * | getUserData () |
EQFABRIC_API const co::Object * | getUserData () const |
EQFABRIC_API uint32_t | getTasks () const |
Return the set of tasks this channel might execute in the worst case. More... | |
EQFABRIC_API uint32_t | getSerial () const |
Protected Member Functions | |
Information queries | |
EQ_API bool | isWindowSystemAvailable (const std::string &name) const |
Protected Member Functions inherited from eq::fabric::Pipe< Node, Pipe, eq::Window, PipeVisitor > | |
Pipe (Node *parent) | |
virtual EQFABRIC_INL void | serialize (co::DataOStream &os, const uint64_t dirtyBits) |
virtual EQFABRIC_INL void | deserialize (co::DataIStream &is, const uint64_t dirtyBits) |
virtual EQFABRIC_INL void | notifyDetach () |
virtual ChangeType | getChangeType () const |
eq::Window * | _findWindow (const uint128_t &id) |
virtual uint64_t | getRedistributableBits () const |
Protected Member Functions inherited from eq::fabric::Object | |
EQFABRIC_API | Object () |
Construct a new Object. More... | |
EQFABRIC_API | Object (const Object &) |
Construct an unmapped, unregistered copy of an object. More... | |
virtual EQFABRIC_API | ~Object () |
Destruct the object. More... | |
EQFABRIC_API Object & | operator= (const Object &from) |
NOP assignment operator. More... | |
virtual bool | hasMasterUserData () |
virtual uint32_t | getUserDataLatency () const |
EQFABRIC_API void | setTasks (const uint32_t tasks) |
EQFABRIC_API void | postRemove (Object *child) |
virtual void | removeChild (const uint128_t &) |
template<class C , class S > | |
void | commitChild (C *child, S *sender, uint32_t cmd, const uint32_t incarnation) |
template<class C > | |
void | commitChild (C *child, const uint32_t incarnation) |
template<class C , class S > | |
void | commitChildren (const std::vector< C * > &children, S *sender, uint32_t cmd, const uint32_t incarnation) |
template<class C > | |
void | commitChildren (const std::vector< C * > &children, uint32_t cmd, const uint32_t incarnation) |
template<class C > | |
void | commitChildren (const std::vector< C * > &children, const uint32_t incarnation) |
template<class C > | |
void | syncChildren (const std::vector< C * > &children) |
template<class P , class C > | |
void | releaseChildren (const std::vector< C * > &children) |
EQFABRIC_API bool | _cmdSync (co::ICommand &command) |
Operations | |
Frame * | getFrame (const co::ObjectVersion &frameVersion, const Eye eye, const bool output) |
co::QueueSlave * | getQueue (const uint128_t &queueID) |
void | flushFrames (util::ObjectManager &om) |
const View * | getView (const co::ObjectVersion &viewVersion) const |
View * | getView (const co::ObjectVersion &viewVersion) |
EQ_API void | startFrame (const uint32_t frameNumber) |
Start a frame by unlocking all child resources. More... | |
EQ_API void | releaseFrame (const uint32_t frameNumber) |
Signal the completion of a frame to the parent. More... | |
EQ_API void | releaseFrameLocal (const uint32_t frameNumber) |
Release the local synchronization of the parent for a frame. More... | |
Callbacks | |
The callbacks are called by Equalizer during rendering to execute various actions. | |
class | detail::RenderThread |
class | detail::ThreadAffinityVisitor |
virtual EQ_API WindowSystem | selectWindowSystem () const |
Choose the window system to be used by this pipe. More... | |
virtual EQ_API bool | configInit (const uint128_t &initID) |
Initialize this pipe. More... | |
virtual EQ_API bool | configInitSystemPipe (const uint128_t &initID) |
Initialize the OS-specific pipe. More... | |
virtual EQ_API bool | configExit () |
De-initialize this pipe. More... | |
virtual EQ_API void | frameStart (const uint128_t &frameID, const uint32_t frameNumber) |
Start rendering a frame. More... | |
virtual EQ_API void | frameFinish (const uint128_t &frameID, const uint32_t frameNumber) |
Finish rendering a frame. More... | |
virtual EQ_API void | frameDrawFinish (const uint128_t &frameID, const uint32_t frameNumber) |
Finish drawing. More... | |
virtual EQ_API void | attach (const uint128_t &id, const uint32_t instanceID) |
Additional Inherited Members | |
Public Types inherited from eq::fabric::Pipe< Node, Pipe, eq::Window, PipeVisitor > | |
typedef std::vector< eq::Window * > | Windows |
A vector of pointers to windows. More... | |
enum | IAttribute |
Pipe attributes. More... | |
Public Types inherited from eq::fabric::Object | |
enum | DirtyBits { DIRTY_NAME = Serializable::DIRTY_CUSTOM << 0, DIRTY_USERDATA = Serializable::DIRTY_CUSTOM << 1, DIRTY_TASKS = Serializable::DIRTY_CUSTOM << 2, DIRTY_REMOVED = Serializable::DIRTY_CUSTOM << 3, DIRTY_SERIAL = Serializable::DIRTY_CUSTOM << 4, DIRTY_CUSTOM = Serializable::DIRTY_CUSTOM << 6, DIRTY_OBJECT_BITS = DIRTY_NAME | DIRTY_USERDATA } |
The changed parts of the object since the last pack(). More... | |
Static Public Member Functions inherited from eq::fabric::Pipe< Node, Pipe, eq::Window, PipeVisitor > | |
static EQFABRIC_INL const std::string & | getIAttributeString (const IAttribute attr) |
Protected Types inherited from eq::fabric::Pipe< Node, Pipe, eq::Window, PipeVisitor > | |
enum | DirtyBits |
A Pipe represents a graphics card (GPU) on a Node.
All Pipe, Window and Channel task methods are executed in a separate co::Worker thread, in parallel with all other pipes in the system. An exception are non-threaded pipes, which execute their tasks on the Node's main thread.
|
explicit |
Construct a new pipe.
|
virtual |
Destruct the pipe.
Reimplemented from eq::fabric::Pipe< Node, Pipe, eq::Window, PipeVisitor >.
|
protectedvirtual |
De-initialize this pipe.
|
protectedvirtual |
Initialize this pipe.
initID | the init identifier. |
|
protectedvirtual |
|
virtual |
Create a new MessagePump for this pipe.
At most one message pump per execution thread is created. Each pipe render thread creates one message pump for its window system. The process main thread creates a message pump for AGL pipes and non-threaded pipes. Applications which do their own message pumping outside of Equalizer should return 0 here.
|
protectedvirtual |
Finish drawing.
Called once per frame after the last draw operation. Releases the local synchronization if the thread model is draw_sync (the default).
frameID | the per-frame identifier. |
frameNumber | the frame to finished with draw. |
|
protectedvirtual |
Finish rendering a frame.
Called once at the end of each frame, to do per-frame updates of pipe-specific data, for example updating the rendering engine. Releases the local synchronization if the thread model is local_sync. Always releases the global synchronization for this pipe.
This method has to call releaseFrame().
frameID | the per-frame identifier. |
frameNumber | the frame to finish. |
|
protectedvirtual |
Start rendering a frame.
Called once at the beginning of each frame, to do per-frame updates of pipe-specific data, for example updating the rendering engine. Waits for the node to start the frame, unless the thread model is async. If the thread model is async, the local synchronization is released immediately.
This method has to call startFrame().
frameID | the per-frame identifier. |
frameNumber | the frame to start. |
EQ_API ClientPtr eq::Pipe::getClient | ( | ) |
EQ_API Config* eq::Pipe::getConfig | ( | ) |
EQ_API const Config* eq::Pipe::getConfig | ( | ) | const |
EQ_API uint32_t eq::Pipe::getCurrentFrame | ( | ) | const |
Return the current frame number.
To be called only from the pipe thread. Updated by startFrame().
MessagePump* eq::Pipe::getMessagePump | ( | ) |
EQ_API ServerPtr eq::Pipe::getServer | ( | ) |
EQ_API SystemPipe* eq::Pipe::getSystemPipe | ( | ) |
EQ_API const SystemPipe* eq::Pipe::getSystemPipe | ( | ) | const |
EQ_API WindowSystem eq::Pipe::getWindowSystem | ( | ) | const |
Return the window system used by this pipe.
The return value is quaranteed to be constant for an initialized pipe, that is, the window system is determined using selectWindowSystem() before configInit() is executed.
bool eq::Pipe::isRunning | ( | ) | const |
EQ_API bool eq::Pipe::isStopped | ( | ) | const |
|
protected |
|
virtual |
Process a received event.
The task of this method is to update the node as necessary, and transform the event into a config event to be send to the application using Config::sendEvent().
event | the received event. |
|
protected |
Signal the completion of a frame to the parent.
frameNumber | the frame to end. |
|
protected |
Release the local synchronization of the parent for a frame.
frameNumber | the frame to release. |
|
protectedvirtual |
Choose the window system to be used by this pipe.
This function determines which of the supported windowing systems is used by this pipe instance.
EQ_API EventOCommand eq::Pipe::sendError | ( | const uint32_t | error | ) |
Send a pipe error event to the application node.
error | the error code. |
EQ_API void eq::Pipe::setSystemPipe | ( | SystemPipe * | pipe | ) |
Set the system-specific pipe implementation.
The system-specific pipe implements the window-system-dependent part. The os-specific pipe has to be initialized.
|
protected |
Start a frame by unlocking all child resources.
frameNumber | the frame to start. |