Skip to main content

FrameRenderer

Trait FrameRenderer 

Source
pub trait FrameRenderer {
    // Required methods
    fn inspect_frame(
        &self,
        frame: &FrameDesc<'_>,
        frames: &dyn FrameProvider,
    ) -> RenderReport;
    fn build_frame_graph<'a>(
        &self,
        size: RenderSize,
        frame: &'a FrameDesc<'a>,
        frames: &'a dyn FrameProvider,
    ) -> Result<FrameGraph<'a>, RenderError>;
    fn render_frame(
        &self,
        size: RenderSize,
        frame: &FrameDesc<'_>,
        frames: &dyn FrameProvider,
    ) -> Result<FrameRender, RenderError>;
    fn render_frame_yuv420p(
        &self,
        size: RenderSize,
        frame: &FrameDesc<'_>,
        frames: &dyn FrameProvider,
        encoding: YuvEncoding,
    ) -> Result<FrameYuv420pRender, RenderError>;
    fn render_frame_yuv420p_timed(
        &self,
        size: RenderSize,
        frame: &FrameDesc<'_>,
        frames: &dyn FrameProvider,
        encoding: YuvEncoding,
        timings: &mut FrameSubmitTimings,
    ) -> Result<FrameYuv420pRender, RenderError>;
}
Expand description

Timeline-frame rendering on top of a Renderer.

Implemented for Renderer; import it to call these methods on one.

Required Methods§

Source

fn inspect_frame( &self, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, ) -> RenderReport

Resolves the textures required by an evaluated frame.

This performs no fallback rendering: it is the common availability pass used by a real-time player (which may reuse an older image) and a deterministic exporter (which waits and retries).

Source

fn build_frame_graph<'a>( &self, size: RenderSize, frame: &'a FrameDesc<'a>, frames: &'a dyn FrameProvider, ) -> Result<FrameGraph<'a>, RenderError>

Compiles one evaluator result into the render graph every render method below submits, without encoding GPU work.

The graph borrows the frame’s effect and parameter names and the provider’s textures; an incomplete source set returns its report and no graph.

§Errors

Returns RenderError when an effect is unknown or a visual or caption is invalid.

Source

fn render_frame( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, ) -> Result<FrameRender, RenderError>

Renders one pure evaluator result using textures supplied by the host.

Source availability is checked before encoding GPU work. An incomplete attempt returns its missing-source report with no partially rendered texture, allowing real-time and deterministic runners to apply their own hold or wait policy.

§Errors

Returns RenderError when a visual or render target is invalid.

Source

fn render_frame_yuv420p( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, ) -> Result<FrameYuv420pRender, RenderError>

Renders one evaluator result, converts it to YUV420, and submits both workloads in one command buffer.

An incomplete source set returns without encoding or submitting work. The output size must be even for chroma subsampling.

§Errors

Returns RenderError for invalid graph, target, or YUV layout data.

Source

fn render_frame_yuv420p_timed( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, timings: &mut FrameSubmitTimings, ) -> Result<FrameYuv420pRender, RenderError>

Renders one frame for YUV420 readback and reports where the call went.

This produces exactly what FrameRenderer::render_frame_yuv420p produces; the only difference is that it reads a clock between stages and writes the spans to timings. An incomplete source set leaves timings holding only the stages that ran.

§Errors

Returns RenderError for invalid graph, target, or YUV layout data.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl FrameRenderer for Renderer

Source§

fn inspect_frame( &self, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, ) -> RenderReport

Source§

fn build_frame_graph<'a>( &self, size: RenderSize, frame: &'a FrameDesc<'a>, frames: &'a dyn FrameProvider, ) -> Result<FrameGraph<'a>, RenderError>

Source§

fn render_frame( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, ) -> Result<FrameRender, RenderError>

Source§

fn render_frame_yuv420p( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, ) -> Result<FrameYuv420pRender, RenderError>

Source§

fn render_frame_yuv420p_timed( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, timings: &mut FrameSubmitTimings, ) -> Result<FrameYuv420pRender, RenderError>

Implementors§