Loading...
Searching...
No Matches
score::gfx::DirectVideoOutputNode Class Reference
Inheritance diagram for score::gfx::DirectVideoOutputNode:
score::gfx::OutputNode score::gfx::Node

Public Member Functions

 DirectVideoOutputNode (std::unique_ptr< DirectVideoOutputBackend > backend)
 
void setRenderer (std::shared_ptr< RenderList > r) override
 
RenderListrenderer () const override
 
OutputNodeRenderercreateRenderer (RenderList &r) const noexcept override
 Create a renderer in a given context for this node.
 
void startRendering () override
 
void render () override
 
void stopRendering () override
 
bool canRender () const override
 
void onRendererChange () override
 
void createOutput (OutputConfiguration conf) override
 
void destroyOutput () override
 
std::shared_ptr< RenderStaterenderState () const override
 
Configuration configuration () const noexcept override
 
const char * activeStrategyName () const noexcept
 Name of the engaged GPU-direct strategy, or "cpu-staging".
 
bool outputStrategyPinUnmet () const noexcept
 
bool outputStrategyPinUnavailable () const noexcept
 
std::function< bool()> genlockTickSource () const
 
std::uint64_t pacingGoodXfers () const noexcept
 Pacing diagnostics (0 if the pump isn't running). Useful for harnesses.
 
std::uint64_t pacingDrops () const noexcept
 
std::uint64_t pacingUnderruns () const noexcept
 
- Public Member Functions inherited from score::gfx::OutputNode
virtual void setVSyncCallback (std::function< void()>)
 Set a callback to drive rendering when there is a single output.
 
virtual void updateGraphicsAPI (GraphicsApi)
 
virtual TextureRenderTarget currentRenderTarget () const noexcept
 The output's current backing render target + render-pass descriptor, as the upstream nodes should render into it NOW.
 
GpuResourceRegistryacquireRegistry ()
 Persistent GPU resource registry for this output.
 
GpuResourceRegistryregistry () const noexcept
 Non-owning accessor. Returns null if no registry has been acquired yet (e.g. queried before the first RenderList::init).
 
void releaseRegistry ()
 Tear down the registry's QRhi resources directly. Idempotent.
 
- Public Member Functions inherited from score::gfx::Node
 Node (const Node &)=delete
 
 Node (Node &&)=delete
 
Nodeoperator= (const Node &)=delete
 
Nodeoperator= (Node &&)=delete
 
virtual void renderedNodesChanged ()
 Whenever render nodes are added / removed.
 
virtual void process (Message &&msg)
 Process a message from the execution engine.
 
virtual void update ()
 
void materialChange () noexcept
 Used to notify a material change from the model to the renderers.
 
bool hasMaterialChanged (int64_t &renderer) const noexcept
 
void renderTargetChange () noexcept
 Used to notify a render target (texture inlet) change from the model to the renderers.
 
bool hasRenderTargetChanged (int64_t &renderer) const noexcept
 
bool hasExplicitRenderTargetSize (int32_t port) const noexcept
 Whether a given port has a user-specified render target size.
 
QSize resolveRenderTargetSize (int32_t port, RenderList &renderer) const noexcept
 
RenderTargetSpecs resolveRenderTargetSpecs (int32_t port, RenderList &renderer) const noexcept
 
void process (int32_t port, const ossia::render_target_spec &v)
 

Protected Attributes

std::unique_ptr< DirectVideoOutputBackendm_backend
 
std::shared_ptr< RenderStatem_renderState
 
std::weak_ptr< RenderListm_renderer
 
QRhi * m_rhi {}
 
QRhiTexture * m_texture {}
 
QRhiTextureRenderTarget * m_renderTarget {}
 
std::unique_ptr< interop::CpuStagedVideoOutputm_hostStaged
 
std::unique_ptr< interop::VideoOutputStrategym_rdma
 
std::unique_ptr< interop::PacedFramePumpm_pump
 
interop::GpuCapabilities m_caps {}
 
std::atomic< bool > m_running {false}
 
GraphicsApi m_graphicsApi {}
 
- Protected Attributes inherited from score::gfx::OutputNode
std::function< void()> m_onReleaseRenderList
 
std::unique_ptr< GpuResourceRegistrym_registry
 

Additional Inherited Members

- Public Attributes inherited from score::gfx::Node
std::vector< Port * > input
 Input ports of that node.
 
ossia::small_pod_vector< Port *, 1 > output
 Output ports of that node.
 
ossia::flat_map< RenderList *, score::gfx::NodeRenderer * > renderedNodes
 Map associating each RenderList to a Renderer for this model.
 
ossia::flat_map< int32_t, ossia::render_target_spec > renderTargetSpecs
 Render target info.
 
std::atomic_int64_t materialChanged {0}
 
std::atomic_int64_t renderTargetSpecChanged {-1}
 
int32_t nodeId = score::gfx::invalid_node_index
 
bool requiresDepth {}
 
- Protected Member Functions inherited from score::gfx::OutputNode
void releaseOwnedRenderList ()
 Invoke OutputConfiguration::onReleaseRenderList, if any.
 

Member Function Documentation

◆ canRender()

bool score::gfx::DirectVideoOutputNode::canRender ( ) const
overridevirtual

◆ configuration()

DirectVideoOutputNode::Configuration score::gfx::DirectVideoOutputNode::configuration ( ) const
overridevirtualnoexcept

◆ createOutput()

void score::gfx::DirectVideoOutputNode::createOutput ( OutputConfiguration  conf)
overridevirtual

◆ createRenderer()

OutputNodeRenderer * score::gfx::DirectVideoOutputNode::createRenderer ( RenderList r) const
overridevirtualnoexcept

Create a renderer in a given context for this node.

Implements score::gfx::OutputNode.

◆ destroyOutput()

void score::gfx::DirectVideoOutputNode::destroyOutput ( )
overridevirtual

◆ genlockTickSource()

std::function< bool()> score::gfx::DirectVideoOutputNode::genlockTickSource ( ) const

External-genlock tick source from the backend, or empty if the device exposes none (opt-in). Valid only after createOutput() has opened the device. Feed to an ExternalGenlockClock to phase-lock render to the card.

◆ onRendererChange()

void score::gfx::DirectVideoOutputNode::onRendererChange ( )
overridevirtual

◆ outputStrategyPinUnavailable()

bool score::gfx::DirectVideoOutputNode::outputStrategyPinUnavailable ( ) const
noexcept

True when SCORE_GFX_DIRECT_READBACK pinned an output rung that cannot exist for this backend/format, or when a GPU-direct strategy bypassed the host-staged ladder entirely.

◆ outputStrategyPinUnmet()

bool score::gfx::DirectVideoOutputNode::outputStrategyPinUnmet ( ) const
noexcept

True when SCORE_GFX_DIRECT_READBACK pinned an output rung that should have engaged but did not; rows measured in this state describe another rung than the one requested.

◆ render()

void score::gfx::DirectVideoOutputNode::render ( )
overridevirtual

◆ renderer()

RenderList * score::gfx::DirectVideoOutputNode::renderer ( ) const
overridevirtual

◆ renderState()

std::shared_ptr< RenderState > score::gfx::DirectVideoOutputNode::renderState ( ) const
overridevirtual

◆ setRenderer()

void score::gfx::DirectVideoOutputNode::setRenderer ( std::shared_ptr< RenderList r)
overridevirtual

◆ startRendering()

void score::gfx::DirectVideoOutputNode::startRendering ( )
overridevirtual

◆ stopRendering()

void score::gfx::DirectVideoOutputNode::stopRendering ( )
overridevirtual

Member Data Documentation

◆ m_caps

interop::GpuCapabilities score::gfx::DirectVideoOutputNode::m_caps {}
protected

GPU interop probe, borrowed by CpuStagedVideoOutput's DVP HostPinnedRing; must outlive m_hostStaged, hence a node member.


The documentation for this class was generated from the following files: