25 #include <eq/fabric/channel.h> 29 namespace detail {
class Channel;
struct RBStat; }
49 EQ_API
virtual ~Channel();
53 EQ_API co::CommandQueue* getPipeThreadQueue();
54 EQ_API co::CommandQueue* getCommandThreadQueue();
55 EQ_API uint32_t getCurrentFrame()
const;
58 bool waitFrameFinished( uint32_t frame, uint32_t timeout )
const;
64 EQ_API
bool isStopped()
const;
67 EQ_API
Pipe* getPipe();
70 EQ_API
const Pipe* getPipe()
const;
73 EQ_API
Node* getNode();
76 EQ_API
const Node* getNode()
const;
100 EQ_API
const GLEWContext* glewGetContext()
const;
106 EQ_API
const DrawableConfig& getDrawableConfig()
const;
118 EQ_API
View* getNativeView();
121 EQ_API
const View* getNativeView()
const;
124 EQ_API
const Vector3ub& getUniqueColor()
const;
127 EQ_API
void addStatistic( Statistic& event );
144 EQ_API
virtual Vector2f getJitter()
const;
158 EQ_API
View* getView();
161 EQ_API
const View* getView()
const;
172 EQ_API Frustumf getScreenFrustum()
const;
188 EQ_API
virtual void applyBuffer();
195 EQ_API
virtual void applyColorMask()
const;
202 EQ_API
virtual void applyViewport()
const;
216 EQ_API
virtual void applyFrustum()
const;
222 EQ_API
virtual void applyPerspective()
const;
228 EQ_API
virtual void applyOrtho()
const;
237 EQ_API
void applyScreenFrustum()
const;
244 EQ_API
virtual void applyHeadTransform()
const;
250 EQ_API
virtual void applyPerspectiveTransform()
const;
256 EQ_API
virtual void applyOrthoTransform()
const;
262 EQ_API
void applyOverlayState();
268 EQ_API
void resetOverlayState();
274 EQ_API
void bindFrameBuffer();
280 EQ_API
void bindDrawFrameBuffer();
292 EQ_API
virtual void resetRegions();
308 EQ_API
virtual void declareRegion(
const eq::PixelViewport& region );
316 EQ_API
void declareRegion(
const eq::Viewport& vp );
319 EQ_API PixelViewport getRegion()
const;
343 EQ_API EventOCommand sendError(
const uint32_t error );
356 EQ_API
virtual bool processEvent( EventType type, SizeEvent& event );
357 EQ_API
virtual bool processEvent( EventType type, PointerEvent& event );
358 EQ_API
virtual bool processEvent( EventType type, KeyEvent& event );
359 EQ_API
virtual bool processEvent( Statistic& event );
363 EQ_API
virtual void drawStatistics();
366 EQ_API
virtual void outlineViewport();
374 void changeLatency(
const uint32_t latency );
402 EQ_API
virtual std::string getDumpImageFileName()
const;
406 EQ_API
void attach(
const uint128_t&
id,
const uint32_t instanceID );
416 EQ_API
void startFrame(
const uint32_t frameNumber );
424 EQ_API
void releaseFrame(
const uint32_t frameNumber );
432 EQ_API
void releaseFrameLocal(
const uint32_t frameNumber );
444 EQ_API
virtual void setupAssemblyState();
447 EQ_API
virtual void resetAssemblyState();
465 EQ_API
virtual bool configInit(
const uint128_t& initID );
468 EQ_API
virtual bool configExit();
481 EQ_API
virtual void frameStart(
const uint128_t& frameID,
482 const uint32_t frameNumber );
494 EQ_API
virtual void frameFinish(
const uint128_t& frameID,
495 const uint32_t frameNumber );
507 EQ_API
virtual void frameDrawFinish(
const uint128_t& frameID,
508 const uint32_t frameNumber );
518 EQ_API
virtual void frameClear(
const uint128_t& frameID );
528 EQ_API
virtual void frameDraw(
const uint128_t& frameID );
539 EQ_API
virtual void frameAssemble(
const uint128_t& frameID,
552 EQ_API
virtual void frameReadback(
const uint128_t& frameID,
566 EQ_API
virtual void frameViewStart(
const uint128_t& frameID );
583 EQ_API
virtual void frameViewFinish(
const uint128_t& frameID );
593 EQ_API
virtual void frameDrawOverlay(
const uint128_t& frameID );
603 EQ_API
virtual void notifyViewportChanged();
617 EQ_API
virtual void notifyStopFrame(
const uint32_t lastFrameNumber );
620 detail::Channel*
const _impl;
621 friend class fabric::Window< Pipe, Window, Channel, WindowSettings >;
625 void _overrideContext( RenderContext& context );
628 void _initDrawableConfig();
631 void _frameTiles( RenderContext& context,
const bool isLocal,
632 const uint128_t& queueID,
const uint32_t tasks,
633 const co::ObjectVersions& frames );
636 void _refFrame(
const uint32_t frameNumber );
639 void _unrefFrame(
const uint32_t frameNumber );
642 void _transmitImage(
const co::ObjectVersion& frameDataVersion,
643 const uint128_t& nodeID,
644 const co::NodeID& netNodeID,
645 const uint64_t imageIndex,
646 const uint32_t frameNumber,
647 const uint32_t taskID );
649 void _frameReadback(
const uint128_t& frameID,
650 const co::ObjectVersions& frames );
651 void _finishReadback(
const co::ObjectVersion& frameDataVersion,
652 const uint64_t imageIndex,
653 const uint32_t frameNumber,
654 const uint32_t taskID,
655 const std::vector< uint128_t >& nodes,
656 const co::NodeIDs& netNodes );
658 bool _asyncFinishReadback(
const std::vector< size_t >& imagePos,
661 void _asyncTransmit(
FrameDataPtr frame,
const uint32_t frameNumber,
662 const uint64_t image,
663 const std::vector< uint128_t >& nodes,
664 const co::NodeIDs& netNodes,
665 const uint32_t taskID );
667 void _setReady(
const bool async, detail::RBStat* stat,
669 void _asyncSetReady(
const FrameDataPtr frame, detail::RBStat* stat,
670 const std::vector< uint128_t >& nodes,
671 const co::NodeIDs& netNodes );
673 void _setReady(
FrameDataPtr frame, detail::RBStat* stat,
674 const std::vector< uint128_t >& nodes,
675 const co::NodeIDs& netNodes );
678 co::QueueSlave* _getQueue(
const uint128_t& queueID );
680 Frames _getFrames(
const co::ObjectVersions& frameIDs,
681 const bool isOutput );
683 void _createTransferWindow();
684 void _deleteTransferWindow();
687 bool _cmdConfigInit( co::ICommand& command );
688 bool _cmdConfigExit( co::ICommand& command );
689 bool _cmdFrameStart( co::ICommand& command );
690 bool _cmdFrameFinish( co::ICommand& command );
691 bool _cmdFrameClear( co::ICommand& command );
692 bool _cmdFrameDraw( co::ICommand& command );
693 bool _cmdFrameDrawFinish( co::ICommand& command );
694 bool _cmdFrameAssemble( co::ICommand& command );
695 bool _cmdFrameReadback( co::ICommand& command );
696 bool _cmdFinishReadback( co::ICommand& command );
697 bool _cmdFrameSetReady( co::ICommand& command );
698 bool _cmdFrameTransmitImage( co::ICommand& command );
699 bool _cmdFrameSetReadyNode( co::ICommand& command );
700 bool _cmdFrameViewStart( co::ICommand& command );
701 bool _cmdFrameViewFinish( co::ICommand& command );
702 bool _cmdStopFrame( co::ICommand& command );
703 bool _cmdFrameTiles( co::ICommand& command );
704 bool _cmdDeleteTransferWindow( co::ICommand& command );
706 LB_TS_VAR( _pipeThread );
710 #endif // EQ_CHANNEL_H A channel represents a two-dimensional viewport within a Window.
A configuration is a visualization session driven by an application.
virtual void frameTilesStart(const uint128_t &)
Start a batch of tile rendering operations.
A Pipe represents a graphics card (GPU) on a Node.
A Node represents a single computer in the cluster.
std::vector< PixelViewport > PixelViewports
A vector of eq::PixelViewport.
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.
A Window represents an on-screen or off-screen drawable.
The result image listener gets notified on new images produced by destination channels.
The Equalizer client library.
std::vector< Frame * > Frames
A vector of pointers to eq::Frame.
A View is a 2D area of a Layout.
Base data transport class for windows.
virtual void frameTilesFinish(const uint128_t &)
Finish a batch of tile rendering operations.
A facility class to manage OpenGL objects across shared contexts.
Base data transport class for channels.
lunchbox::RefPtr< FrameData > FrameDataPtr
A reference-counted pointer to an eq::FrameData.